Skip to content

Commit aa9c2d1

Browse files
committed
[OpenCL] Align subgroup builtin guards
Until now, subgroup builtins are available with `opencl-c.h` when at least one of `cl_intel_subgroups`, `cl_khr_subgroups`, or `__opencl_c_subgroups` is defined. With `-fdeclare-opencl-builtins`, subgroup builtins are conditionalized on `cl_khr_subgroups` only. Align `-fdeclare-opencl-builtins` to `opencl-c.h` by introducing the internal `__opencl_subgroup_builtins` macro. Differential Revision: https://reviews.llvm.org/D120254
1 parent 5fb6555 commit aa9c2d1

File tree

4 files changed

+11
-5
lines changed

4 files changed

+11
-5
lines changed

clang/lib/Headers/opencl-c-base.h

+5
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@
8080
#define __opencl_c_named_address_space_builtins 1
8181
#endif // !defined(__opencl_c_generic_address_space)
8282

83+
#if defined(cl_intel_subgroups) || defined(cl_khr_subgroups) || defined(__opencl_c_subgroups)
84+
// Internal feature macro to provide subgroup builtins.
85+
#define __opencl_subgroup_builtins 1
86+
#endif
87+
8388
// built-in scalar data types:
8489

8590
/**

clang/lib/Headers/opencl-c.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -16282,7 +16282,7 @@ queue_t __ovld get_default_queue(void);
1628216282

1628316283
// OpenCL Extension v2.0 s9.17 - Sub-groups
1628416284

16285-
#if defined(cl_intel_subgroups) || defined(cl_khr_subgroups) || defined(__opencl_c_subgroups)
16285+
#if defined(__opencl_subgroup_builtins)
1628616286
// Shared Sub Group Functions
1628716287
uint __ovld get_sub_group_size(void);
1628816288
uint __ovld get_max_sub_group_size(void);
@@ -16381,7 +16381,7 @@ double __ovld __conv sub_group_scan_inclusive_min(double x);
1638116381
double __ovld __conv sub_group_scan_inclusive_max(double x);
1638216382
#endif //cl_khr_fp64
1638316383

16384-
#endif //cl_khr_subgroups cl_intel_subgroups __opencl_c_subgroups
16384+
#endif // __opencl_subgroup_builtins
1638516385

1638616386
#if defined(cl_khr_subgroup_extended_types)
1638716387
char __ovld __conv sub_group_broadcast( char value, uint index );

clang/lib/Sema/OpenCLBuiltins.td

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def AtomicFp64TypeExt : TypeExtension<"cl_khr_int64_base_atomics cl_khr_int64_ex
8383

8484
// FunctionExtension definitions.
8585
def FuncExtNone : FunctionExtension<"">;
86-
def FuncExtKhrSubgroups : FunctionExtension<"cl_khr_subgroups">;
86+
def FuncExtKhrSubgroups : FunctionExtension<"__opencl_subgroup_builtins">;
8787
def FuncExtKhrSubgroupExtendedTypes : FunctionExtension<"cl_khr_subgroup_extended_types">;
8888
def FuncExtKhrSubgroupNonUniformVote : FunctionExtension<"cl_khr_subgroup_non_uniform_vote">;
8989
def FuncExtKhrSubgroupBallot : FunctionExtension<"cl_khr_subgroup_ballot">;

clang/test/SemaOpenCL/fdeclare-opencl-builtins.cl

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL -fdeclare-opencl-builtins -DNO_HEADER
22
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL -fdeclare-opencl-builtins -finclude-default-header
3-
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL1.2 -fdeclare-opencl-builtins -DNO_HEADER
4-
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL1.2 -fdeclare-opencl-builtins -finclude-default-header
3+
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL1.2 -fdeclare-opencl-builtins -DNO_HEADER -cl-ext=-cl_intel_subgroups
4+
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL1.2 -fdeclare-opencl-builtins -finclude-default-header -cl-ext=-cl_intel_subgroups
55
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL2.0 -fdeclare-opencl-builtins -DNO_HEADER
66
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL2.0 -fdeclare-opencl-builtins -finclude-default-header
77
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL3.0 -fdeclare-opencl-builtins -finclude-default-header
@@ -79,6 +79,7 @@ typedef struct {int a;} ndrange_t;
7979
#define cl_khr_subgroup_non_uniform_arithmetic 1
8080
#define cl_khr_subgroup_clustered_reduce 1
8181
#define __opencl_c_read_write_images 1
82+
#define __opencl_subgroup_builtins 1
8283
#endif
8384

8485
#if (__OPENCL_CPP_VERSION__ == 100 || __OPENCL_C_VERSION__ == 200)

0 commit comments

Comments
 (0)