Skip to content

Conversation

@Maetveis
Copy link
Contributor

@Maetveis Maetveis commented Jul 2, 2025

cl_intel_subgroups_short version 1.1 adds vec16 types for block reads and writes.
Ref: KhronosGroup/OpenCL-Docs#906

`cl_intel_subgroups_short` version 1.1 adds vec16 types for block reads
and writes.
Ref: KhronosGroup/OpenCL-Docs#906

Co-authored-by: Victor Mustya <[email protected]>
@llvmbot llvmbot added clang Clang issues not falling into any other category backend:X86 clang:headers Headers provided by Clang, e.g. for intrinsics labels Jul 2, 2025
@llvmbot
Copy link
Member

llvmbot commented Jul 2, 2025

@llvm/pr-subscribers-backend-x86

@llvm/pr-subscribers-clang

Author: Mészáros Gergely (Maetveis)

Changes

cl_intel_subgroups_short version 1.1 adds vec16 types for block reads and writes.
Ref: KhronosGroup/OpenCL-Docs#906


Full diff: https://github.com/llvm/llvm-project/pull/146647.diff

1 Files Affected:

  • (modified) clang/lib/Headers/opencl-c.h (+6)
diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h
index 8d8ef497cec49..19ce6999a0fde 100644
--- a/clang/lib/Headers/opencl-c.h
+++ b/clang/lib/Headers/opencl-c.h
@@ -17617,6 +17617,7 @@ ushort      __ovld __conv intel_sub_group_block_read_us(read_only image2d_t, int
 ushort2     __ovld __conv intel_sub_group_block_read_us2(read_only image2d_t, int2);
 ushort4     __ovld __conv intel_sub_group_block_read_us4(read_only image2d_t, int2);
 ushort8     __ovld __conv intel_sub_group_block_read_us8(read_only image2d_t, int2);
+ushort16    __ovld __conv intel_sub_group_block_read_us16(read_only image2d_t, int2);
 #endif // defined(__opencl_c_images)
 
 #if defined(__opencl_c_read_write_images)
@@ -17624,18 +17625,21 @@ ushort      __ovld __conv intel_sub_group_block_read_us(read_write image2d_t, in
 ushort2     __ovld __conv intel_sub_group_block_read_us2(read_write image2d_t, int2);
 ushort4     __ovld __conv intel_sub_group_block_read_us4(read_write image2d_t, int2);
 ushort8     __ovld __conv intel_sub_group_block_read_us8(read_write image2d_t, int2);
+ushort16    __ovld __conv intel_sub_group_block_read_us16(read_write image2d_t, int2);
 #endif // defined(__opencl_c_read_write_images)
 
 ushort      __ovld __conv intel_sub_group_block_read_us(  const __global ushort* p );
 ushort2     __ovld __conv intel_sub_group_block_read_us2( const __global ushort* p );
 ushort4     __ovld __conv intel_sub_group_block_read_us4( const __global ushort* p );
 ushort8     __ovld __conv intel_sub_group_block_read_us8( const __global ushort* p );
+ushort16    __ovld __conv intel_sub_group_block_read_us16(const __global ushort* p);
 
 #if defined(__opencl_c_images)
 void        __ovld __conv intel_sub_group_block_write_us(write_only image2d_t, int2, ushort);
 void        __ovld __conv intel_sub_group_block_write_us2(write_only image2d_t, int2, ushort2);
 void        __ovld __conv intel_sub_group_block_write_us4(write_only image2d_t, int2, ushort4);
 void        __ovld __conv intel_sub_group_block_write_us8(write_only image2d_t, int2, ushort8);
+void        __ovld __conv intel_sub_group_block_write_us16(write_only image2d_t, int2, ushort16);
 #endif // defined(__opencl_c_images)
 
 #if defined(__opencl_c_read_write_images)
@@ -17643,12 +17647,14 @@ void        __ovld __conv intel_sub_group_block_write_us(read_write image2d_t, i
 void        __ovld __conv intel_sub_group_block_write_us2(read_write image2d_t, int2, ushort2);
 void        __ovld __conv intel_sub_group_block_write_us4(read_write image2d_t, int2, ushort4);
 void        __ovld __conv intel_sub_group_block_write_us8(read_write image2d_t, int2, ushort8);
+void        __ovld __conv intel_sub_group_block_write_us16(read_write image2d_t, int2, ushort16);
 #endif // defined(__opencl_c_read_write_images)
 
 void        __ovld __conv intel_sub_group_block_write_us(  __global ushort* p, ushort  data );
 void        __ovld __conv intel_sub_group_block_write_us2( __global ushort* p, ushort2 data );
 void        __ovld __conv intel_sub_group_block_write_us4( __global ushort* p, ushort4 data );
 void        __ovld __conv intel_sub_group_block_write_us8( __global ushort* p, ushort8 data );
+void        __ovld __conv intel_sub_group_block_write_us16( __global ushort* p, ushort16 data );
 #endif // cl_intel_subgroups_short
 
 #ifdef cl_intel_device_side_avc_motion_estimation

@github-actions
Copy link

github-actions bot commented Jul 2, 2025

⚠️ C/C++ code formatter, clang-format found issues in your code. ⚠️

You can test this locally with the following command:
git-clang-format --diff HEAD~1 HEAD --extensions h -- clang/lib/Headers/opencl-c.h
View the diff from clang-format here.
diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h
index 19ce6999a..9322d62be 100644
--- a/clang/lib/Headers/opencl-c.h
+++ b/clang/lib/Headers/opencl-c.h
@@ -17617,7 +17617,8 @@ ushort      __ovld __conv intel_sub_group_block_read_us(read_only image2d_t, int
 ushort2     __ovld __conv intel_sub_group_block_read_us2(read_only image2d_t, int2);
 ushort4     __ovld __conv intel_sub_group_block_read_us4(read_only image2d_t, int2);
 ushort8     __ovld __conv intel_sub_group_block_read_us8(read_only image2d_t, int2);
-ushort16    __ovld __conv intel_sub_group_block_read_us16(read_only image2d_t, int2);
+ushort16 __ovld __conv intel_sub_group_block_read_us16(read_only image2d_t,
+                                                       int2);
 #endif // defined(__opencl_c_images)
 
 #if defined(__opencl_c_read_write_images)
@@ -17625,21 +17626,24 @@ ushort      __ovld __conv intel_sub_group_block_read_us(read_write image2d_t, in
 ushort2     __ovld __conv intel_sub_group_block_read_us2(read_write image2d_t, int2);
 ushort4     __ovld __conv intel_sub_group_block_read_us4(read_write image2d_t, int2);
 ushort8     __ovld __conv intel_sub_group_block_read_us8(read_write image2d_t, int2);
-ushort16    __ovld __conv intel_sub_group_block_read_us16(read_write image2d_t, int2);
+ushort16 __ovld __conv intel_sub_group_block_read_us16(read_write image2d_t,
+                                                       int2);
 #endif // defined(__opencl_c_read_write_images)
 
 ushort      __ovld __conv intel_sub_group_block_read_us(  const __global ushort* p );
 ushort2     __ovld __conv intel_sub_group_block_read_us2( const __global ushort* p );
 ushort4     __ovld __conv intel_sub_group_block_read_us4( const __global ushort* p );
 ushort8     __ovld __conv intel_sub_group_block_read_us8( const __global ushort* p );
-ushort16    __ovld __conv intel_sub_group_block_read_us16(const __global ushort* p);
+ushort16 __ovld __conv
+intel_sub_group_block_read_us16(const __global ushort *p);
 
 #if defined(__opencl_c_images)
 void        __ovld __conv intel_sub_group_block_write_us(write_only image2d_t, int2, ushort);
 void        __ovld __conv intel_sub_group_block_write_us2(write_only image2d_t, int2, ushort2);
 void        __ovld __conv intel_sub_group_block_write_us4(write_only image2d_t, int2, ushort4);
 void        __ovld __conv intel_sub_group_block_write_us8(write_only image2d_t, int2, ushort8);
-void        __ovld __conv intel_sub_group_block_write_us16(write_only image2d_t, int2, ushort16);
+void __ovld __conv intel_sub_group_block_write_us16(write_only image2d_t, int2,
+                                                    ushort16);
 #endif // defined(__opencl_c_images)
 
 #if defined(__opencl_c_read_write_images)
@@ -17647,14 +17651,16 @@ void        __ovld __conv intel_sub_group_block_write_us(read_write image2d_t, i
 void        __ovld __conv intel_sub_group_block_write_us2(read_write image2d_t, int2, ushort2);
 void        __ovld __conv intel_sub_group_block_write_us4(read_write image2d_t, int2, ushort4);
 void        __ovld __conv intel_sub_group_block_write_us8(read_write image2d_t, int2, ushort8);
-void        __ovld __conv intel_sub_group_block_write_us16(read_write image2d_t, int2, ushort16);
+void __ovld __conv intel_sub_group_block_write_us16(read_write image2d_t, int2,
+                                                    ushort16);
 #endif // defined(__opencl_c_read_write_images)
 
 void        __ovld __conv intel_sub_group_block_write_us(  __global ushort* p, ushort  data );
 void        __ovld __conv intel_sub_group_block_write_us2( __global ushort* p, ushort2 data );
 void        __ovld __conv intel_sub_group_block_write_us4( __global ushort* p, ushort4 data );
 void        __ovld __conv intel_sub_group_block_write_us8( __global ushort* p, ushort8 data );
-void        __ovld __conv intel_sub_group_block_write_us16( __global ushort* p, ushort16 data );
+void __ovld __conv intel_sub_group_block_write_us16(__global ushort *p,
+                                                    ushort16 data);
 #endif // cl_intel_subgroups_short
 
 #ifdef cl_intel_device_side_avc_motion_estimation

@Maetveis
Copy link
Contributor Author

Maetveis commented Jul 2, 2025

⚠️ C/C++ code formatter, clang-format found issues in your code. ⚠️

The formatting matches what's currently in the file (which is not formatted with clang-format), I would rather not reformat only the changed lines.

@svenvh
Copy link
Member

svenvh commented Jul 2, 2025

The formatting matches what's currently in the file (which is not formatted with clang-format), I would rather not reformat only the changed lines.

That sounds perfectly reasonable to me, so LGTM. I'll leave the approving review to someone from Intel.

@Maetveis Maetveis added OpenCL and removed clang Clang issues not falling into any other category backend:X86 labels Jul 2, 2025
@Maetveis
Copy link
Contributor Author

Maetveis commented Jul 3, 2025

@michalpaszkowski can you review or know who might be comfortable reviewing this?

Copy link
Member

@michalpaszkowski michalpaszkowski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Maetveis LGTM! Thanks for the PR!

@Maetveis Maetveis merged commit 724dfdc into llvm:main Jul 4, 2025
11 of 12 checks passed
@Maetveis Maetveis deleted the implement-16-wide-short-opencl-headers branch July 4, 2025 04:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clang:headers Headers provided by Clang, e.g. for intrinsics OpenCL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants