https://github.com/bob80905 updated https://github.com/llvm/llvm-project/pull/146448
>From aab3f93521d293ab6a6942fdaab5b76df8c75b37 Mon Sep 17 00:00:00 2001 From: Joshua Batista <jbati...@microsoft.com> Date: Mon, 30 Jun 2025 18:04:01 -0700 Subject: [PATCH 1/2] first attempt --- clang/include/clang/Driver/Options.td | 2 ++ clang/lib/Driver/ToolChains/HLSL.cpp | 8 ++++++++ clang/test/Options/Gis.hlsl | 12 ++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 clang/test/Options/Gis.hlsl diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 0ffd8c40da7da..a1e56e2ec9b8c 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -9306,6 +9306,8 @@ def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group<dxc_Group>, HelpText<"DXIL validator installation path">; def dxc_disable_validation : DXCFlag<"Vd">, HelpText<"Disable validation">; +def dxc_gis : DXCFlag<"Gis">, + HelpText<"Enable IEEE strict mode (equivalent to -ffp-model=strict)">; def : Option<["/", "-"], "Qembed_debug", KIND_FLAG>, Group<dxc_Group>, Flags<[Ignored]>, Visibility<[DXCOption]>, HelpText<"Embed PDB in shader container (ignored)">; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index dcc51e182924c..4a4938a501e9e 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -330,6 +330,14 @@ HLSLToolChain::TranslateArgs(const DerivedArgList &Args, StringRef BoundArch, A->claim(); continue; } + if (A->getOption().getID() == options::OPT_dxc_gis) { + // Translate -Gis into -ffp_model_EQ=strict + DAL->AddSeparateArg(nullptr, Opts.getOption(options::OPT_ffp_model_EQ), + "strict"); + A->claim(); + continue; + } + DAL->append(A); } diff --git a/clang/test/Options/Gis.hlsl b/clang/test/Options/Gis.hlsl new file mode 100644 index 0000000000000..5a11b7ba64ff0 --- /dev/null +++ b/clang/test/Options/Gis.hlsl @@ -0,0 +1,12 @@ +// RUN: %clang_dxc -T lib_6_4 -Gis %s 2>&1 -### | FileCheck -check-prefix=Gis %s +// RUN: %clang_dxc -T lib_6_4 %s 2>&1 -### | FileCheck -check-prefix=NO_Gis %s +// RUN: not %clang_dxc -T lib_6_4 /Gis gibberish -### %s 2>&1 | FileCheck -check-prefix=CHECK-ERR %s + +// Gis: "-fmath-errno" "-ffp-contract=off" "-frounding-math" "-ffp-exception-behavior=strict" "-complex-range=full" +// assert expected floating point options are present +// NO_Gis-NOT: "-fmath-errno" "-ffp-contract=off" "-frounding-math" "-ffp-exception-behavior=strict" "-complex-range=full" +// CHECK-ERR: error: no such file or directory: 'gibberish' +float4 main(float4 a : A) : SV_TARGET +{ + return -a.yxxx; +} >From df5d707117ddbf9d38dedf0e073ac7e7c1d3c6c9 Mon Sep 17 00:00:00 2001 From: Joshua Batista <jbati...@microsoft.com> Date: Tue, 1 Jul 2025 11:46:23 -0700 Subject: [PATCH 2/2] address Chris, remove fmath-errno as it is toolchain-dependent --- clang/test/Options/Gis.hlsl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/clang/test/Options/Gis.hlsl b/clang/test/Options/Gis.hlsl index 5a11b7ba64ff0..a124b7807eaa1 100644 --- a/clang/test/Options/Gis.hlsl +++ b/clang/test/Options/Gis.hlsl @@ -1,11 +1,12 @@ // RUN: %clang_dxc -T lib_6_4 -Gis %s 2>&1 -### | FileCheck -check-prefix=Gis %s // RUN: %clang_dxc -T lib_6_4 %s 2>&1 -### | FileCheck -check-prefix=NO_Gis %s -// RUN: not %clang_dxc -T lib_6_4 /Gis gibberish -### %s 2>&1 | FileCheck -check-prefix=CHECK-ERR %s -// Gis: "-fmath-errno" "-ffp-contract=off" "-frounding-math" "-ffp-exception-behavior=strict" "-complex-range=full" +// Gis: "-ffp-contract=off" "-frounding-math" "-ffp-exception-behavior=strict" "-complex-range=full" // assert expected floating point options are present -// NO_Gis-NOT: "-fmath-errno" "-ffp-contract=off" "-frounding-math" "-ffp-exception-behavior=strict" "-complex-range=full" -// CHECK-ERR: error: no such file or directory: 'gibberish' +// NO_Gis-NOT: "-ffp-contract=off" +// NO_Gis-NOT: "-frounding-math" +// NO_Gis-NOT: "-ffp-exception-behavior=strict" +// NO_Gis-NOT: "-complex-range=full" float4 main(float4 a : A) : SV_TARGET { return -a.yxxx; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits