https://github.com/wenju-he updated https://github.com/llvm/llvm-project/pull/171433
>From de33c0e3a29f27d2b5a8a28a4254b9ef58a7da8b Mon Sep 17 00:00:00 2001 From: Wenju He <[email protected]> Date: Tue, 9 Dec 2025 13:36:40 +0100 Subject: [PATCH 1/2] [OpenCL] Add cl_khr_subgroup_named_barrier and cl_intel_required_subgroup_size to OpenCLExtensions.def Fix typo cl_intel_bfloat16_conversion. Add test for checking intel extension functions. --- .../include/clang/Basic/OpenCLExtensions.def | 4 +- clang/test/SemaOpenCL/extension-version.cl | 58 ++++++++++++++++- .../intel-unsupported-extensions.cl | 62 +++++++++++++++++++ 3 files changed, 121 insertions(+), 3 deletions(-) create mode 100644 clang/test/SemaOpenCL/intel-unsupported-extensions.cl diff --git a/clang/include/clang/Basic/OpenCLExtensions.def b/clang/include/clang/Basic/OpenCLExtensions.def index b0c08b7f320c4..55122987d2d75 100644 --- a/clang/include/clang/Basic/OpenCLExtensions.def +++ b/clang/include/clang/Basic/OpenCLExtensions.def @@ -88,6 +88,7 @@ OPENCL_EXTENSION(cl_khr_srgb_image_writes, true, 200) OPENCL_EXTENSION(cl_khr_subgroup_ballot, false, 200) OPENCL_EXTENSION(cl_khr_subgroup_clustered_reduce, false, 200) OPENCL_EXTENSION(cl_khr_subgroup_extended_types, false, 200) +OPENCL_EXTENSION(cl_khr_subgroup_named_barrier, false, 200) OPENCL_EXTENSION(cl_khr_subgroup_non_uniform_arithmetic, false, 200) OPENCL_EXTENSION(cl_khr_subgroup_non_uniform_vote, false, 200) OPENCL_EXTENSION(cl_khr_subgroup_rotate, false, 200) @@ -140,7 +141,8 @@ OPENCL_EXTENSION(cl_amd_media_ops, true, 100) OPENCL_EXTENSION(cl_amd_media_ops2, true, 100) // Intel OpenCL extensions -OPENCL_EXTENSION(cl_intel_bfloat16_conversion, false, 100) +OPENCL_EXTENSION(cl_intel_bfloat16_conversions, false, 100) +OPENCL_EXTENSION(cl_intel_required_subgroup_size, false, 200) OPENCL_EXTENSION(cl_intel_subgroups, true, 120) OPENCL_EXTENSION(cl_intel_subgroups_char, true, 120) OPENCL_EXTENSION(cl_intel_subgroups_long, true, 120) diff --git a/clang/test/SemaOpenCL/extension-version.cl b/clang/test/SemaOpenCL/extension-version.cl index f736e5f5ff9fe..77531479d3a0f 100644 --- a/clang/test/SemaOpenCL/extension-version.cl +++ b/clang/test/SemaOpenCL/extension-version.cl @@ -249,6 +249,18 @@ // expected-warning@+1{{OpenCL extension 'cl_khr_subgroup_extended_types' unknown or does not require pragma - ignoring}} #pragma OPENCL EXTENSION cl_khr_subgroup_extended_types : enable +#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200) +#ifndef cl_khr_subgroup_named_barrier +#error "Missing cl_khr_subgroup_named_barrier define" +#endif +#else +#ifdef cl_khr_subgroup_named_barrier +#error "Incorrect cl_khr_subgroup_named_barrier define" +#endif +#endif +// expected-warning@+1{{OpenCL extension 'cl_khr_subgroup_named_barrier' unknown or does not require pragma - ignoring}} +#pragma OPENCL EXTENSION cl_khr_subgroup_named_barrier : enable + #if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200) #ifndef cl_khr_subgroup_non_uniform_arithmetic #error "Missing cl_khr_subgroup_non_uniform_arithmetic define" @@ -332,16 +344,37 @@ #pragma OPENCL EXTENSION cl_khr_depth_images : enable #if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 100) -#ifndef cl_intel_bfloat16_conversion -#error "Missing cl_intel_bfloat16_conversion define" +#ifndef cl_intel_bfloat16_conversions +#error "Missing cl_intel_bfloat16_conversions define" +#endif +#else +#ifdef cl_intel_bfloat16_conversions +#error "Incorrect cl_intel_bfloat16_conversions define" +#endif +#endif +// expected-warning@+1{{OpenCL extension 'cl_intel_bfloat16_conversions' unknown or does not require pragma - ignoring}} +#pragma OPENCL EXTENSION cl_intel_bfloat16_conversions : enable + +#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200) +#ifndef cl_intel_required_subgroup_size +#error "Missing cl_intel_required_subgroup_size define" +#endif +#else +#ifdef cl_intel_required_subgroup_size +#error "Incorrect cl_intel_required_subgroup_size define" #endif #endif +// expected-warning@+1{{OpenCL extension 'cl_intel_required_subgroup_size' unknown or does not require pragma - ignoring}} +#pragma OPENCL EXTENSION cl_intel_required_subgroup_size : enable #if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 120) #ifndef cl_intel_subgroups #error "Missing cl_intel_subgroups define" #endif #else +#ifdef cl_intel_subgroups +#error "Incorrect cl_intel_subgroups define" +#endif // expected-warning@+2{{unsupported OpenCL extension 'cl_intel_subgroups' - ignoring}} #endif #pragma OPENCL EXTENSION cl_intel_subgroups : enable @@ -351,6 +384,9 @@ #error "Missing cl_intel_subgroups_char define" #endif #else +#ifdef cl_intel_subgroups_char +#error "Incorrect cl_intel_subgroups_char define" +#endif // expected-warning@+2{{unsupported OpenCL extension 'cl_intel_subgroups_char' - ignoring}} #endif #pragma OPENCL EXTENSION cl_intel_subgroups_char : enable @@ -360,6 +396,9 @@ #error "Missing cl_intel_subgroups_long define" #endif #else +#ifdef cl_intel_subgroups_long +#error "Incorrect cl_intel_subgroups_long define" +#endif // expected-warning@+2{{unsupported OpenCL extension 'cl_intel_subgroups_long' - ignoring}} #endif #pragma OPENCL EXTENSION cl_intel_subgroups_long : enable @@ -369,6 +408,9 @@ #error "Missing cl_intel_subgroups_short define" #endif #else +#ifdef cl_intel_subgroups_short +#error "Incorrect cl_intel_subgroups_short define" +#endif // expected-warning@+2{{unsupported OpenCL extension 'cl_intel_subgroups_short' - ignoring}} #endif #pragma OPENCL EXTENSION cl_intel_subgroups_short : enable @@ -377,13 +419,25 @@ #ifndef cl_intel_subgroup_buffer_prefetch #error "Missing cl_intel_subgroup_buffer_prefetch define" #endif +#else +#ifdef cl_intel_subgroup_buffer_prefetch +#error "Incorrect cl_intel_subgroup_buffer_prefetch define" +#endif #endif +// expected-warning@+1{{OpenCL extension 'cl_intel_subgroup_buffer_prefetch' unknown or does not require pragma - ignoring}} +#pragma OPENCL EXTENSION cl_intel_subgroup_buffer_prefetch : enable #if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 120) #ifndef cl_intel_subgroup_local_block_io #error "Missing cl_intel_subgroup_local_block_io define" #endif +#else +#ifdef cl_intel_subgroup_local_block_io +#error "Incorrect cl_intel_subgroup_local_block_io define" +#endif #endif +// expected-warning@+1{{OpenCL extension 'cl_intel_subgroup_local_block_io' unknown or does not require pragma - ignoring}} +#pragma OPENCL EXTENSION cl_intel_subgroup_local_block_io : enable #if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 120) #ifndef cl_intel_device_side_avc_motion_estimation diff --git a/clang/test/SemaOpenCL/intel-unsupported-extensions.cl b/clang/test/SemaOpenCL/intel-unsupported-extensions.cl new file mode 100644 index 0000000000000..72172ce6b3dd0 --- /dev/null +++ b/clang/test/SemaOpenCL/intel-unsupported-extensions.cl @@ -0,0 +1,62 @@ +// RUN: %clang_cc1 -triple spir-unknown-unknown -verify -finclude-default-header -cl-std=CL3.0 -cl-ext=-cl_intel_subgroups,-cl_intel_subgroup_buffer_prefetch,-cl_intel_subgroups_char,-cl_intel_subgroups_short,-cl_intel_subgroups_long,-cl_intel_bfloat16_conversions,-cl_intel_subgroup_local_block_io,-cl_intel_device_side_avc_motion_estimation %s +// RUN: %clang_cc1 -triple spir-unknown-unknown -verify -finclude-default-header -cl-std=CL3.0 %s + +#if defined(cl_intel_subgroups) && defined(cl_intel_subgroup_buffer_prefetch) && defined(cl_intel_subgroups_char) && defined(cl_intel_subgroups_short) && defined(cl_intel_subgroups_long) && defined(cl_intel_bfloat16_conversions) && defined(cl_intel_subgroup_local_block_io) && defined(cl_intel_device_side_avc_motion_estimation) +// expected-no-diagnostics +#endif + +uint test1(read_only image2d_t im, int2 i) { + return intel_sub_group_block_read(im, i); +} +#if !defined(cl_intel_subgroups) +// expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_read'}} +#endif + +void test2(const __global uint *p) { + return intel_sub_group_block_prefetch_ui(p); +} +#if !defined(cl_intel_subgroup_buffer_prefetch) +// expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_prefetch_ui'}} +#endif + +uchar test4(read_only image2d_t im, int2 i) { + return intel_sub_group_block_read_uc(im, i); +} +#if !defined(cl_intel_subgroups_char) +// expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_read_uc'}} +#endif + +ushort test5(const __local ushort* p) { + return intel_sub_group_block_read_us(p); +} +#if !defined(cl_intel_subgroups_short) +// expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_read_us'}} +#endif + +ulong test6(const __global ulong* p) { + return intel_sub_group_block_read_ul(p); +} +#if !defined(cl_intel_subgroups_long) +// expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_read_ul'}} +#endif + +ushort test7(float f) { + return intel_convert_bfloat16_as_ushort(f); +} +#if !defined(cl_intel_bfloat16_conversions) +// expected-error@-3{{use of undeclared identifier 'intel_convert_bfloat16_as_ushort'}} +#endif + +uint test8(const __local uint* p) { + return intel_sub_group_block_read(p); +} +#if !defined(cl_intel_subgroup_local_block_io) +// expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_read'}} +#endif + +uchar test9(uchar slice_type, uchar qp) { + return intel_sub_group_avc_mce_get_default_inter_base_multi_reference_penalty(slice_type, qp); +} +#if !defined(cl_intel_device_side_avc_motion_estimation) +// expected-error@-3{{use of undeclared identifier 'intel_sub_group_avc_mce_get_default_inter_base_multi_reference_penalty'}} +#endif >From 74be6d5d50b7f40d3331a8934a3fc059593c7f13 Mon Sep 17 00:00:00 2001 From: Wenju He <[email protected]> Date: Tue, 9 Dec 2025 13:58:54 +0100 Subject: [PATCH 2/2] update test name index --- .../test/SemaOpenCL/intel-unsupported-extensions.cl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/clang/test/SemaOpenCL/intel-unsupported-extensions.cl b/clang/test/SemaOpenCL/intel-unsupported-extensions.cl index 72172ce6b3dd0..ea8fd126073f1 100644 --- a/clang/test/SemaOpenCL/intel-unsupported-extensions.cl +++ b/clang/test/SemaOpenCL/intel-unsupported-extensions.cl @@ -19,42 +19,42 @@ void test2(const __global uint *p) { // expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_prefetch_ui'}} #endif -uchar test4(read_only image2d_t im, int2 i) { +uchar test3(read_only image2d_t im, int2 i) { return intel_sub_group_block_read_uc(im, i); } #if !defined(cl_intel_subgroups_char) // expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_read_uc'}} #endif -ushort test5(const __local ushort* p) { +ushort test4(const __local ushort* p) { return intel_sub_group_block_read_us(p); } #if !defined(cl_intel_subgroups_short) // expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_read_us'}} #endif -ulong test6(const __global ulong* p) { +ulong test5(const __global ulong* p) { return intel_sub_group_block_read_ul(p); } #if !defined(cl_intel_subgroups_long) // expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_read_ul'}} #endif -ushort test7(float f) { +ushort test6(float f) { return intel_convert_bfloat16_as_ushort(f); } #if !defined(cl_intel_bfloat16_conversions) // expected-error@-3{{use of undeclared identifier 'intel_convert_bfloat16_as_ushort'}} #endif -uint test8(const __local uint* p) { +uint test7(const __local uint* p) { return intel_sub_group_block_read(p); } #if !defined(cl_intel_subgroup_local_block_io) // expected-error@-3{{use of undeclared identifier 'intel_sub_group_block_read'}} #endif -uchar test9(uchar slice_type, uchar qp) { +uchar test8(uchar slice_type, uchar qp) { return intel_sub_group_avc_mce_get_default_inter_base_multi_reference_penalty(slice_type, qp); } #if !defined(cl_intel_device_side_avc_motion_estimation) _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
