From: Yaxun Liu Date: Wed, 25 Apr 2018 13:33:19 +0000 (+0000) Subject: [HIP] Add predefined macros __HIPCC__ and __HIP_DEVICE_COMPILE__ X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=38889b85be338249a70c1b8b3405fbfd84e0e63b;p=clang [HIP] Add predefined macros __HIPCC__ and __HIP_DEVICE_COMPILE__ Differential Revision: https://reviews.llvm.org/D45441 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@330824 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index ebb3f2652d..192862db65 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/lib/Frontend/InitPreprocessor.cpp @@ -473,8 +473,12 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, Builder.defineMacro("__ASSEMBLER__"); if (LangOpts.CUDA && !LangOpts.HIP) Builder.defineMacro("__CUDA__"); - if (LangOpts.HIP) + if (LangOpts.HIP) { Builder.defineMacro("__HIP__"); + Builder.defineMacro("__HIPCC__"); + if (LangOpts.CUDAIsDevice) + Builder.defineMacro("__HIP_DEVICE_COMPILE__"); + } } /// Initialize the predefined C++ language feature test macros defined in @@ -1033,7 +1037,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI, } // CUDA device path compilaton - if (LangOpts.CUDAIsDevice) { + if (LangOpts.CUDAIsDevice && !LangOpts.HIP) { // The CUDA_ARCH value is set for the GPU target specified in the NVPTX // backend's target defines. Builder.defineMacro("__CUDA_ARCH__"); diff --git a/test/Preprocessor/predefined-macros.c b/test/Preprocessor/predefined-macros.c index d01a961777..87ad424ee9 100644 --- a/test/Preprocessor/predefined-macros.c +++ b/test/Preprocessor/predefined-macros.c @@ -277,3 +277,18 @@ // RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spir-unknown-unknown \ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIR // CHECK-SPIR: #define __IMAGE_SUPPORT__ 1 + +// RUN: %clang_cc1 %s -E -dM -o - -x hip -triple amdgcn-amd-amdhsa \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-HIP +// CHECK-HIP-NOT: #define __CUDA_ARCH__ +// CHECK-HIP: #define __HIPCC__ 1 +// CHECK-HIP-NOT: #define __HIP_DEVICE_COMPILE__ 1 +// CHECK-HIP: #define __HIP__ 1 + +// RUN: %clang_cc1 %s -E -dM -o - -x hip -triple amdgcn-amd-amdhsa \ +// RUN: -fcuda-is-device \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-HIP-DEV +// CHECK-HIP-DEV-NOT: #define __CUDA_ARCH__ +// CHECK-HIP-DEV: #define __HIPCC__ 1 +// CHECK-HIP-DEV: #define __HIP_DEVICE_COMPILE__ 1 +// CHECK-HIP-DEV: #define __HIP__ 1