diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h index f1bfca4c42417..470bee0c05999 100644 --- a/clang/lib/Basic/Targets/AMDGPU.h +++ b/clang/lib/Basic/Targets/AMDGPU.h @@ -347,6 +347,7 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : public TargetInfo { if (getTriple().getEnvironment() == llvm::Triple::LLVM) { Opts["cl_khr_subgroup_extended_types"] = true; + Opts["cl_khr_subgroup_non_uniform_arithmetic"] = true; } } } diff --git a/clang/test/Misc/amdgcn.languageOptsOpenCL.cl b/clang/test/Misc/amdgcn.languageOptsOpenCL.cl index 5e611329b518d..68d3854861150 100644 --- a/clang/test/Misc/amdgcn.languageOptsOpenCL.cl +++ b/clang/test/Misc/amdgcn.languageOptsOpenCL.cl @@ -158,6 +158,12 @@ #endif #pragma OPENCL EXTENSION cl_khr_subgroups: enable +#ifdef LLVM_ENV_EXTENSIONS + #ifndef cl_khr_subgroup_non_uniform_arithmetic + #error "Missing cl_khr_subgroup_non_uniform_arithmetic define" + #endif +#endif + #ifndef cl_amd_media_ops #error "Missing cl_amd_media_ops define" #endif diff --git a/libclc/opencl/lib/generic/subgroup/sub_group_non_uniform_reduce.cl b/libclc/opencl/lib/generic/subgroup/sub_group_non_uniform_reduce.cl index e00717b979ea1..d46afb88afa59 100644 --- a/libclc/opencl/lib/generic/subgroup/sub_group_non_uniform_reduce.cl +++ b/libclc/opencl/lib/generic/subgroup/sub_group_non_uniform_reduce.cl @@ -8,6 +8,8 @@ #include "clc/subgroup/clc_sub_group_non_uniform_reduce.h" +#ifdef cl_khr_subgroup_non_uniform_arithmetic + #define __CLC_BODY "sub_group_non_uniform_reduce.inc" #include "clc/integer/gentype.inc" @@ -28,3 +30,5 @@ _CLC_DEF _CLC_OVERLOAD int sub_group_non_uniform_reduce_logical_xor(int predicate) { return __clc_sub_group_non_uniform_reduce_logical_xor(predicate); } + +#endif // cl_khr_subgroup_non_uniform_arithmetic