[clang] 04cae92 - [SPIRV] Conditionally define `__AMDGCN_UNSAFE_FP_ATOMICS__` for AMDGCN flavoured SPIR-V (#192136)

via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 16 08:48:09 PDT 2026


Author: Alex Voicu
Date: 2026-04-16T16:48:04+01:00
New Revision: 04cae92976cc89c9747cb057c9d88a4c1bc25db6

URL: https://github.com/llvm/llvm-project/commit/04cae92976cc89c9747cb057c9d88a4c1bc25db6
DIFF: https://github.com/llvm/llvm-project/commit/04cae92976cc89c9747cb057c9d88a4c1bc25db6.diff

LOG: [SPIRV] Conditionally define `__AMDGCN_UNSAFE_FP_ATOMICS__` for AMDGCN flavoured SPIR-V (#192136)

Client apps rely on the `__AMDGCN_UNSAFE_FP_ATOMICS__` macro to guide
optimised execution pathways. We were not defining it for AMDGCN
flavoured SPIR-V, which led to pessimisation.

Added: 
    

Modified: 
    clang/lib/Basic/Targets/SPIR.cpp
    clang/test/Preprocessor/predefined-macros.c

Removed: 
    


################################################################################
diff  --git a/clang/lib/Basic/Targets/SPIR.cpp b/clang/lib/Basic/Targets/SPIR.cpp
index 19f160e279b21..7726c95cc7392 100644
--- a/clang/lib/Basic/Targets/SPIR.cpp
+++ b/clang/lib/Basic/Targets/SPIR.cpp
@@ -145,6 +145,9 @@ void SPIRV64AMDGCNTargetInfo::getTargetDefines(const LangOptions &Opts,
   Builder.defineMacro("__AMD__");
   Builder.defineMacro("__AMDGPU__");
   Builder.defineMacro("__AMDGCN__");
+
+  if (Opts.AtomicIgnoreDenormalMode)
+    Builder.defineMacro("__AMDGCN_UNSAFE_FP_ATOMICS__");
 }
 
 void SPIRV64AMDGCNTargetInfo::setAuxTarget(const TargetInfo *Aux) {

diff  --git a/clang/test/Preprocessor/predefined-macros.c b/clang/test/Preprocessor/predefined-macros.c
index da25b1efa3984..8dbb477be4c5d 100644
--- a/clang/test/Preprocessor/predefined-macros.c
+++ b/clang/test/Preprocessor/predefined-macros.c
@@ -240,14 +240,18 @@
 
 // RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spirv64-amd-amdhsa \
 // RUN:   | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIRV64-AMDGCN
+// RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spirv64-amd-amdhsa -fatomic-ignore-denormal-mode \
+// RUN:   | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIRV64-AMDGCN-UNSAFE-FP-ATOMICS
 // CHECK-SPIRV64-AMDGCN-DAG: #define __IMAGE_SUPPORT__ 1
 // CHECK-SPIRV64-AMDGCN-DAG: #define __SPIRV__ 1
 // CHECK-SPIRV64-AMDGCN-DAG: #define __SPIRV64__ 1
 // CHECK-SPIRV64-AMDGCN-DAG: #define __AMD__ 1
 // CHECK-SPIRV64-AMDGCN-DAG: #define __AMDGCN__ 1
 // CHECK-SPIRV64-AMDGCN-DAG: #define __AMDGPU__ 1
+// CHECK-SPIRV64-AMDGCN-NOT: #define __AMDGCN_UNSAFE_FP_ATOMICS__
 // CHECK-SPIRV64-AMDGCN-NOT: #define __SPIRV32__ 1
 // CHECK-SPIRV64-AMDGCN-NOT: #define __spirv__ 1
+// CHECK-SPIRV64-AMDGCN-UNSAFE-FP-ATOMICS: #define __AMDGCN_UNSAFE_FP_ATOMICS__ 1
 
 // RUN: %clang_cc1 %s -E -dM -o - -x hip -triple x86_64-unknown-linux-gnu \
 // RUN:   | FileCheck -match-full-lines %s --check-prefix=CHECK-HIP


        


More information about the cfe-commits mailing list