Author: Alex Voicu Date: 2023-10-03T13:18:31+01:00 New Revision: c0f8748d448be69748fee73014a60ada22b41b0d
URL: https://github.com/llvm/llvm-project/commit/c0f8748d448be69748fee73014a60ada22b41b0d DIFF: https://github.com/llvm/llvm-project/commit/c0f8748d448be69748fee73014a60ada22b41b0d.diff LOG: [HIP][Clang][Preprocessor] Add Preprocessor support for `hipstdpar` This patch adds the Driver changes needed for enabling HIP parallel algorithm offload on AMDGPU targets. This change merely adds two macros to inform user space if we are compiling in `hipstdpar` mode and, respectively, if the optional allocation interposition mode has been requested, as well as associated minimal tests. The macros can be used by the runtime implementation of offload to drive conditional compilation, and are only defined if the HIP language has been enabled. Reviewed by: yaxunl Differential Revision: https://reviews.llvm.org/D155826 Added: Modified: clang/lib/Frontend/InitPreprocessor.cpp clang/test/Preprocessor/predefined-macros.c Removed: ################################################################################ diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 9e4d4d398a21da5..9e1e02e04ca7a00 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -585,6 +585,11 @@ static void InitializeStandardPredefinedMacros(const TargetInfo &TI, Builder.defineMacro("__HIP_MEMORY_SCOPE_WORKGROUP", "3"); Builder.defineMacro("__HIP_MEMORY_SCOPE_AGENT", "4"); Builder.defineMacro("__HIP_MEMORY_SCOPE_SYSTEM", "5"); + if (LangOpts.HIPStdPar) { + Builder.defineMacro("__HIPSTDPAR__"); + if (LangOpts.HIPStdParInterposeAlloc) + Builder.defineMacro("__HIPSTDPAR_INTERPOSE_ALLOC__"); + } if (LangOpts.CUDAIsDevice) { Builder.defineMacro("__HIP_DEVICE_COMPILE__"); if (!TI.hasHIPImageSupport()) { diff --git a/clang/test/Preprocessor/predefined-macros.c b/clang/test/Preprocessor/predefined-macros.c index d77b699674af4e1..c4a9672f0814aad 100644 --- a/clang/test/Preprocessor/predefined-macros.c +++ b/clang/test/Preprocessor/predefined-macros.c @@ -290,3 +290,20 @@ // RUN: -fcuda-is-device -fgpu-default-stream=per-thread \ // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-PTH // CHECK-PTH: #define HIP_API_PER_THREAD_DEFAULT_STREAM 1 + +// RUN: %clang_cc1 %s -E -dM -o - -x hip --hipstdpar -triple x86_64-unknown-linux-gnu \ +// RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-HIPSTDPAR +// CHECK-HIPSTDPAR: #define __HIPSTDPAR__ 1 +// CHECK-HIPSTDPAR-NOT: #define __HIPSTDPAR_INTERPOSE_ALLOC__ 1 + +// RUN: %clang_cc1 %s -E -dM -o - -x hip --hipstdpar --hipstdpar-interpose-alloc \ +// RUN: -triple x86_64-unknown-linux-gnu | FileCheck -match-full-lines %s \ +// RUN: --check-prefix=CHECK-HIPSTDPAR-INTERPOSE +// CHECK-HIPSTDPAR-INTERPOSE: #define __HIPSTDPAR_INTERPOSE_ALLOC__ 1 +// CHECK-HIPSTDPAR-INTERPOSE: #define __HIPSTDPAR__ 1 + +// RUN: %clang_cc1 %s -E -dM -o - -x hip --hipstdpar --hipstdpar-interpose-alloc \ +// RUN: -triple amdgcn-amd-amdhsa -fcuda-is-device | FileCheck -match-full-lines \ +// RUN: %s --check-prefix=CHECK-HIPSTDPAR-INTERPOSE-DEV-NEG +// CHECK-HIPSTDPAR-INTERPOSE-DEV-NEG: #define __HIPSTDPAR__ 1 +// CHECK-HIPSTDPAR-INTERPOSE-DEV-NEG-NOT: #define __HIPSTDPAR_INTERPOSE_ALLOC__ 1 \ No newline at end of file _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits