diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 18bb277b3a9c..38a6ba4eecbe 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -1835,8 +1835,16 @@ public: Builder.defineMacro("__HAS_FMAF__"); if (hasLDEXPF) Builder.defineMacro("__HAS_LDEXPF__"); - if (hasFP64 && Opts.OpenCL) { + if (hasFP64 && Opts.OpenCL) Builder.defineMacro("cl_khr_fp64"); + if (Opts.OpenCL) { + if (GPU >= GK_NORTHERN_ISLANDS) { + Builder.defineMacro("cl_khr_byte_addressable_store"); + Builder.defineMacro("cl_khr_global_int32_base_atomics"); + Builder.defineMacro("cl_khr_global_int32_extended_atomics"); + Builder.defineMacro("cl_khr_local_int32_base_atomics"); + Builder.defineMacro("cl_khr_local_int32_extended_atomics"); + } } } diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c index 733e822b89c3..a937a018eb8f 100644 --- a/clang/test/Preprocessor/init.c +++ b/clang/test/Preprocessor/init.c @@ -6605,8 +6605,15 @@ // PPC-DARWIN:#define __powerpc__ 1 // PPC-DARWIN:#define __ppc__ 1 // -// RUN: %clang_cc1 -x cl -E -dM -ffreestanding -triple=amdgcn < /dev/null | FileCheck -check-prefix AMDGCN %s +// RUN: %clang_cc1 -x cl -E -dM -ffreestanding -triple=amdgcn < /dev/null | FileCheck -check-prefix AMDGCN --check-prefix AMDGPU %s +// RUN: %clang_cc1 -x cl -E -dM -ffreestanding -triple=r600 -target-cpu caicos < /dev/null | FileCheck --check-prefix AMDGPU %s +// +// AMDGPU:#define cl_khr_byte_addressable_store 1 // AMDGCN:#define cl_khr_fp64 1 +// AMDGPU:#define cl_khr_global_int32_base_atomics 1 +// AMDGPU:#define cl_khr_global_int32_extended_atomics 1 +// AMDGPU:#define cl_khr_local_int32_base_atomics 1 +// AMDGPU:#define cl_khr_local_int32_extended_atomics 1 // RUN: %clang_cc1 -E -dM -ffreestanding -triple=s390x-none-none -fno-signed-char < /dev/null | FileCheck -check-prefix S390X %s //