https://github.com/wenju-he created 
https://github.com/llvm/llvm-project/pull/210015

Following 6 OpenCL extensions are promoted to core features in 3.1: 
https://github.com/KhronosGroup/OpenCL-Docs/commit/9fff1a87a975
- cl_khr_extended_bit_ops
- cl_khr_integer_dot_product
- cl_khr_subgroup_extended_types
- cl_khr_subgroup_rotate
- cl_khr_subgroup_shuffle
- cl_khr_subgroup_shuffle_relative

A target claiming OpenCL C 3.1 conformance without supporting one of these 
features is now diagnosed.
Updated release notes for the change.

Assisted-by: Claude
(cherry picked from commit 2b8125c686614ffc5c5f8cde007cd6ddcf6649d8)

This cherry-pick completes OpenCL 3.1 support for 23.x release.

>From acafde12a9dfbf73d945bba406e20e0d590c2708 Mon Sep 17 00:00:00 2001
From: Wenju He <[email protected]>
Date: Thu, 16 Jul 2026 02:15:10 -0700
Subject: [PATCH] [Clang][OpenCL] Promote a few extensions to OpenCL 3.1 core
 (#204330)

Following 6 OpenCL extensions are promoted to core features in 3.1:
https://github.com/KhronosGroup/OpenCL-Docs/commit/9fff1a87a975
- cl_khr_extended_bit_ops
- cl_khr_integer_dot_product
- cl_khr_subgroup_extended_types
- cl_khr_subgroup_rotate
- cl_khr_subgroup_shuffle
- cl_khr_subgroup_shuffle_relative

A target claiming OpenCL C 3.1 conformance without supporting one of
these features is now diagnosed.
Updated release notes for the change.

Assisted-by: Claude
(cherry picked from commit 2b8125c686614ffc5c5f8cde007cd6ddcf6649d8)

This cherry-pick completes OpenCL 3.1 support for 23.x release.
---
 clang/docs/ReleaseNotes.md                     |  5 +++++
 clang/include/clang/Basic/OpenCLExtensions.def | 16 ++++++++--------
 clang/test/Misc/amdgcn.unsupported_core_3.1.cl |  8 ++++++++
 clang/test/SemaOpenCL/extension-version.cl     |  2 ++
 4 files changed, 23 insertions(+), 8 deletions(-)
 create mode 100644 clang/test/Misc/amdgcn.unsupported_core_3.1.cl

diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md
index 9063e54b3e692..07490956fc620 100644
--- a/clang/docs/ReleaseNotes.md
+++ b/clang/docs/ReleaseNotes.md
@@ -993,6 +993,11 @@ latest release, please see the [Clang Web 
Site](https://clang.llvm.org) or the
 ### OpenCL Specific Changes
 
 - Added support for OpenCL C 3.1 language version (`-cl-std=CL3.1`).
+- Extensions ``cl_khr_extended_bit_ops``, ``cl_khr_integer_dot_product``,
+  ``cl_khr_subgroup_extended_types``, ``cl_khr_subgroup_rotate``,
+  ``cl_khr_subgroup_shuffle``, and ``cl_khr_subgroup_shuffle_relative`` are
+  promoted to core features in OpenCL C 3.1. A target claiming OpenCL C 3.1
+  conformance without supporting one of these features is now diagnosed.
 
 ### Target Specific Changes
 
diff --git a/clang/include/clang/Basic/OpenCLExtensions.def 
b/clang/include/clang/Basic/OpenCLExtensions.def
index 08ac5f692616a..f8af9b843f95f 100644
--- a/clang/include/clang/Basic/OpenCLExtensions.def
+++ b/clang/include/clang/Basic/OpenCLExtensions.def
@@ -69,23 +69,23 @@ OPENCL_EXTENSION(cl_khr_fp16, true, 100)
 OPENCL_EXTENSION(cl_khr_int64_base_atomics, true, 100)
 OPENCL_EXTENSION(cl_khr_int64_extended_atomics, true, 100)
 OPENCL_EXTENSION(cl_khr_depth_images, true, 100)
-OPENCL_EXTENSION(cl_khr_extended_bit_ops, false, 100)
+OPENCL_COREFEATURE(cl_khr_extended_bit_ops, false, 100, OCL_C_31)
 OPENCL_EXTENSION(cl_ext_float_atomics, false, 100)
 OPENCL_EXTENSION(cl_khr_gl_msaa_sharing, true, 100)
-OPENCL_EXTENSION(cl_khr_integer_dot_product, false, 100)
+OPENCL_COREFEATURE(cl_khr_integer_dot_product, false, 100, OCL_C_31)
 OPENCL_EXTENSION(cl_khr_kernel_clock, false, 100)
 OPENCL_EXTENSION(cl_khr_mipmap_image, true, 100)
 OPENCL_EXTENSION(cl_khr_mipmap_image_writes, true, 100)
 OPENCL_EXTENSION(cl_khr_srgb_image_writes, true, 100)
 OPENCL_EXTENSION(cl_khr_subgroup_ballot, false, 100)
 OPENCL_EXTENSION(cl_khr_subgroup_clustered_reduce, false, 100)
-OPENCL_EXTENSION(cl_khr_subgroup_extended_types, false, 100)
+OPENCL_COREFEATURE(cl_khr_subgroup_extended_types, false, 100, OCL_C_31)
 OPENCL_EXTENSION(cl_khr_subgroup_named_barrier, false, 100)
 OPENCL_EXTENSION(cl_khr_subgroup_non_uniform_arithmetic, false, 100)
 OPENCL_EXTENSION(cl_khr_subgroup_non_uniform_vote, false, 100)
-OPENCL_EXTENSION(cl_khr_subgroup_rotate, false, 100)
-OPENCL_EXTENSION(cl_khr_subgroup_shuffle_relative, false, 100)
-OPENCL_EXTENSION(cl_khr_subgroup_shuffle, false, 100)
+OPENCL_COREFEATURE(cl_khr_subgroup_rotate, false, 100, OCL_C_31)
+OPENCL_COREFEATURE(cl_khr_subgroup_shuffle_relative, false, 100, OCL_C_31)
+OPENCL_COREFEATURE(cl_khr_subgroup_shuffle, false, 100, OCL_C_31)
 OPENCL_EXTENSION(cl_khr_subgroups, true, 100)
 OPENCL_GENERIC_EXTENSION(cl_khr_3d_image_writes, true, 100, OCL_C_20, OCL_C_30)
 
@@ -117,8 +117,8 @@ 
OPENCL_OPTIONALCOREFEATURE(__opencl_c_ext_image_unorm_int_2_101010, false, 200,
 OPENCL_OPTIONALCOREFEATURE(__opencl_c_ext_image_unsigned_10x6_12x4_14x2, 
false, 200, OCL_C_20)
 OPENCL_GENERIC_EXTENSION(__opencl_c_generic_address_space, false, 200, 
OCL_C_20, OCL_C_30)
 OPENCL_GENERIC_EXTENSION(__opencl_c_images, false, 200, OCL_C_20, OCL_C_30)
-OPENCL_OPTIONALCOREFEATURE(__opencl_c_integer_dot_product_input_4x8bit, false, 
200, OCL_C_20)
-OPENCL_OPTIONALCOREFEATURE(__opencl_c_integer_dot_product_input_4x8bit_packed, 
false, 200, OCL_C_20)
+OPENCL_GENERIC_EXTENSION(__opencl_c_integer_dot_product_input_4x8bit, false, 
200, OCL_C_31, OCL_C_20)
+OPENCL_GENERIC_EXTENSION(__opencl_c_integer_dot_product_input_4x8bit_packed, 
false, 200, OCL_C_31, OCL_C_20)
 OPENCL_OPTIONALCOREFEATURE(__opencl_c_kernel_clock_scope_device, false, 200, 
OCL_C_20)
 OPENCL_OPTIONALCOREFEATURE(__opencl_c_kernel_clock_scope_sub_group, false, 
200, OCL_C_20)
 OPENCL_OPTIONALCOREFEATURE(__opencl_c_kernel_clock_scope_work_group, false, 
200, OCL_C_20)
diff --git a/clang/test/Misc/amdgcn.unsupported_core_3.1.cl 
b/clang/test/Misc/amdgcn.unsupported_core_3.1.cl
new file mode 100644
index 0000000000000..5a406670777ae
--- /dev/null
+++ b/clang/test/Misc/amdgcn.unsupported_core_3.1.cl
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -cl-std=CL3.1 -triple amdgcn-amd-amdhsa 
-Wpedantic-core-features %s 2>&1 | FileCheck %s
+
+// CHECK: cl_khr_extended_bit_ops is a core feature in OpenCL C version 3.1 
but not supported on this target
+// CHECK: cl_khr_integer_dot_product is a core feature in OpenCL C version 3.1 
but not supported on this target
+// CHECK: cl_khr_subgroup_extended_types is a core feature in OpenCL C version 
3.1 but not supported on this target
+// CHECK: cl_khr_subgroup_rotate is a core feature in OpenCL C version 3.1 but 
not supported on this target
+// CHECK: cl_khr_subgroup_shuffle_relative is a core feature in OpenCL C 
version 3.1 but not supported on this target
+// CHECK: cl_khr_subgroup_shuffle is a core feature in OpenCL C version 3.1 
but not supported on this target
diff --git a/clang/test/SemaOpenCL/extension-version.cl 
b/clang/test/SemaOpenCL/extension-version.cl
index a02dbb93a535d..ee53b345a7eb2 100644
--- a/clang/test/SemaOpenCL/extension-version.cl
+++ b/clang/test/SemaOpenCL/extension-version.cl
@@ -4,12 +4,14 @@
 // RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple spir-unknown-unknown
 // RUN: %clang_cc1 -x cl -cl-std=clc++ %s -verify -triple spir-unknown-unknown
 // RUN: %clang_cc1 -x cl -cl-std=CL3.0 %s -verify -triple spir-unknown-unknown
+// RUN: %clang_cc1 -x cl -cl-std=CL3.1 %s -verify -triple spir-unknown-unknown
 // RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple spir-unknown-unknown 
-Wpedantic-core-features -DTEST_CORE_FEATURES
 // RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple spir-unknown-unknown 
-Wpedantic-core-features -DTEST_CORE_FEATURES
 // RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple spir-unknown-unknown 
-Wpedantic-core-features -DTEST_CORE_FEATURES
 // RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple spir-unknown-unknown 
-Wpedantic-core-features -DTEST_CORE_FEATURES
 // RUN: %clang_cc1 -x cl -cl-std=clc++ %s -verify -triple spir-unknown-unknown 
-Wpedantic-core-features -DTEST_CORE_FEATURES
 // RUN: %clang_cc1 -x cl -cl-std=CL3.0 %s -verify -triple spir-unknown-unknown 
-Wpedantic-core-features -DTEST_CORE_FEATURES
+// RUN: %clang_cc1 -x cl -cl-std=CL3.1 %s -verify -triple spir-unknown-unknown 
-Wpedantic-core-features -DTEST_CORE_FEATURES
 
 // Extensions in all versions
 #ifndef cl_clang_storage_class_specifiers

_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to