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

Reply via email to