Skip to content

Commit 65e642e

Browse files
author
Georgi Mirazchiyski
authored
[SYCL][Driver][HIP] Do not define __CUDA_ARCH__ for HIP-AMD targets (#15443)
Fixes: #15544
1 parent 642c96a commit 65e642e

File tree

4 files changed

+7
-3
lines changed

4 files changed

+7
-3
lines changed

clang/lib/Basic/Targets/AMDGPU.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,6 @@ void AMDGPUTargetInfo::getTargetDefines(const LangOptions &Opts,
309309
Twine("\"") + Twine(CanonName) + Twine("\""));
310310
Builder.defineMacro("__amdgcn_target_id__",
311311
Twine("\"") + Twine(*getTargetID()) + Twine("\""));
312-
Builder.defineMacro("__CUDA_ARCH__", "0");
313312
for (auto F : getAllPossibleTargetIDFeatures(getTriple(), CanonName)) {
314313
auto Loc = OffloadArchFeatures.find(F);
315314
if (Loc != OffloadArchFeatures.end()) {

clang/lib/Frontend/InitPreprocessor.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1491,9 +1491,10 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
14911491
}
14921492

14931493
// CUDA device path compilaton
1494-
if (LangOpts.CUDAIsDevice && !LangOpts.HIP) {
1494+
if (LangOpts.CUDAIsDevice && !LangOpts.HIP && !LangOpts.isSYCL()) {
14951495
// The CUDA_ARCH value is set for the GPU target specified in the NVPTX
14961496
// backend's target defines.
1497+
// Note: SYCL targeting nvptx-cuda relies on __SYCL_CUDA_ARCH__ instead.
14971498
Builder.defineMacro("__CUDA_ARCH__");
14981499
}
14991500

clang/test/Driver/sycl-cuda-arch-macro.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
// Verify the __CUDA_ARCH__ macro has not been defined when offloading SYCL on NVPTX
22
// RUN: %clangxx -E -dM -fsycl -fsycl-targets=nvptx64-nvidia-cuda -Xsycl-target-backend --offload-arch=sm_80 -nocudalib -fno-sycl-libspirv %s 2>&1 \
33
// RUN: | FileCheck --check-prefix=CHECK-CUDA-ARCH-MACRO %s
4+
// Verify the __CUDA_ARCH__ macro has not been defined when offloading SYCL on AMDGPU
5+
// RUN: %clangxx -E -dM -fsycl -fsycl-targets=amdgcn-amd-amdhsa -Xsycl-target-backend --offload-arch=gfx90a -nogpulib -fno-sycl-libspirv %s 2>&1 \
6+
// RUN: | FileCheck --check-prefix=CHECK-CUDA-ARCH-MACRO %s
47
// CHECK-CUDA-ARCH-MACRO-NOT: #define __CUDA_ARCH__ {{[0-9]+}}
58

69
// Verify that '-fcuda-is-device' is not supplied when offloading SYCL on NVPTX
10+
// NOTE: AMDGPU targets, i.e. "amdgcn-amd-amdhsa" may rely on "fcuda-is-device"
711
// RUN: %clangxx -### -fsycl -fsycl-targets=nvptx64-nvidia-cuda -Xsycl-target-backend --offload-arch=sm_80 -nocudalib -fno-sycl-libspirv %s 2>&1 \
812
// RUN: | FileCheck --check-prefix=CHECK-CUDA-IS-DEVICE %s
913
// CHECK-CUDA-IS-DEVICE: clang{{.*}} "-cc1" "-triple" "nvptx64-nvidia-cuda"

clang/test/Preprocessor/sycl-macro.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@
3636
// CHECK-CUDA:#define __SYCL_CUDA_ARCH__ [[ARCH_CODE]]
3737
// CHECK-CUDA-NOT:#define __CUDA_ARCH__ {{[0-9]+}}
3838

39-
// CHECK-HIP:#define __CUDA_ARCH__ 0
39+
// CHECK-HIP-NOT:#define __CUDA_ARCH__ {{[0-9]+}}
4040

4141
// CHECK-CUDA-FEATURE:#define __CUDA_ARCH_FEAT_SM90_ALL 1

0 commit comments

Comments
 (0)