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