https://github.com/cassiebeckley updated 
https://github.com/llvm/llvm-project/pull/132848
>From 959f0374df39a97d22740ae81d132bed300159ea Mon Sep 17 00:00:00 2001
From: Cassandra Beckley <cbeck...@google.com>
Date: Mon, 24 Mar 2025 17:36:46 -0700
Subject: [PATCH 1/2] [HLSL] Add __spirv__ macro

This macro can be used by HLSL code to detect that it is being compiled
for the SPIR-V target.
---
 clang/lib/Frontend/InitPreprocessor.cpp             | 3 +++
 clang/test/Preprocessor/predefined-macros-hlsl.hlsl | 4 ++++
 2 files changed, 7 insertions(+)

diff --git a/clang/lib/Frontend/InitPreprocessor.cpp 
b/clang/lib/Frontend/InitPreprocessor.cpp
index 1a816cb6269d4..c6d31e890c7f6 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -430,6 +430,9 @@ static void InitializeStandardPredefinedMacros(const 
TargetInfo &TI,
       unsigned Minor = Version.getMinor().value_or(0);
       Builder.defineMacro("__SHADER_TARGET_MINOR", Twine(Minor));
     }
+    if (TI.getTriple().isSPIRV()) {
+      Builder.defineMacro("__spirv__");
+    }
     return;
   }
   // C++ [cpp.predefined]p1:
diff --git a/clang/test/Preprocessor/predefined-macros-hlsl.hlsl 
b/clang/test/Preprocessor/predefined-macros-hlsl.hlsl
index cd211713bf892..26bda6b7be167 100644
--- a/clang/test/Preprocessor/predefined-macros-hlsl.hlsl
+++ b/clang/test/Preprocessor/predefined-macros-hlsl.hlsl
@@ -9,6 +9,8 @@
 // RUN: %clang_cc1 %s -E -dM -o - -triple dxil-pc-shadermodel6.0-vertex | 
FileCheck -match-full-lines %s --check-prefixes=CHECK,VERTEX,NOHALF
 // RUN: %clang_cc1 %s -E -dM -o - -triple dxil-pc-shadermodel6.3-vertex 
-fnative-half-type | FileCheck -match-full-lines %s 
--check-prefixes=CHECK,VERTEX,HALF
 
+// RUN: %clang_cc1 %s -E -dM -o - -triple spirv-unknown-vulkan-compute | 
FileCheck -match-full-lines %s --check-prefixes=CHECK,COMPUTE,NOHALF,SPIRV
+
 // HALF: #define __HLSL_ENABLE_16_BIT 1
 // NOHALF-NOT: __HLSL_ENABLE_16_BIT
 
@@ -34,6 +36,8 @@
 // PIXEL: #define __SHADER_TARGET_STAGE 0
 // VERTEX: #define __SHADER_TARGET_STAGE 1
 
+// SPIRV: #define __spirv__ 1
+
 // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library %s -E -dM -o - -x 
hlsl -std=hlsl2015 2>&1 | FileCheck -match-full-lines %s 
--check-prefixes=STD2015
 // STD2015: warning: support for HLSL language version hlsl2015 is incomplete, 
recommend using hlsl202x instead
 // STD2015: #define __HLSL_VERSION 2015

>From 5e5eacbd517b9e01f0be948cb5431beb29044a9e Mon Sep 17 00:00:00 2001
From: Cassandra Beckley <cbeck...@google.com>
Date: Tue, 25 Mar 2025 10:21:39 -0700
Subject: [PATCH 2/2] Define the __spirv__ macro in the SPIRV target

---
 clang/lib/Basic/Targets/SPIR.cpp        | 1 +
 clang/lib/Frontend/InitPreprocessor.cpp | 3 ---
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/clang/lib/Basic/Targets/SPIR.cpp b/clang/lib/Basic/Targets/SPIR.cpp
index 5c076f694dfa4..5b5f47f9647a2 100644
--- a/clang/lib/Basic/Targets/SPIR.cpp
+++ b/clang/lib/Basic/Targets/SPIR.cpp
@@ -59,6 +59,7 @@ void SPIR64TargetInfo::getTargetDefines(const LangOptions 
&Opts,
 void BaseSPIRVTargetInfo::getTargetDefines(const LangOptions &Opts,
                                            MacroBuilder &Builder) const {
   DefineStd(Builder, "SPIRV", Opts);
+  DefineStd(Builder, "spirv", Opts);
 }
 
 void SPIRVTargetInfo::getTargetDefines(const LangOptions &Opts,
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp 
b/clang/lib/Frontend/InitPreprocessor.cpp
index c6d31e890c7f6..1a816cb6269d4 100644
--- a/clang/lib/Frontend/InitPreprocessor.cpp
+++ b/clang/lib/Frontend/InitPreprocessor.cpp
@@ -430,9 +430,6 @@ static void InitializeStandardPredefinedMacros(const 
TargetInfo &TI,
       unsigned Minor = Version.getMinor().value_or(0);
       Builder.defineMacro("__SHADER_TARGET_MINOR", Twine(Minor));
     }
-    if (TI.getTriple().isSPIRV()) {
-      Builder.defineMacro("__spirv__");
-    }
     return;
   }
   // C++ [cpp.predefined]p1:

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to