Skip to content

Commit be63b23

Browse files
Maetveisvmustya
andauthored
[OpenCL] Add decls for cl_intel_subgroup_local_block_io (#146656)
This extension extends the subgroup block read and write functions defined by `cl_intel_subgroups` (and, when supported, `cl_intel_subgroups_char`, `cl_intel_subgroups_short`, and `cl_intel_subgroups_long`) to support reading from and writing to pointers to the `__local` memory address space in addition to pointers to the `__global` memory address space. It is already supported by the Intel OpenCL compiler. Co-authored-by: Victor Mustya <victor.mustya@intel.com>
1 parent 81e6552 commit be63b23

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

clang/lib/Headers/opencl-c.h

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17841,6 +17841,72 @@ void __ovld __conv intel_sub_group_block_write_ul4( __global ulong* p, ul
1784117841
void __ovld __conv intel_sub_group_block_write_ul8( __global ulong* p, ulong8 data);
1784217842
#endif // cl_intel_subgroups_long
1784317843

17844+
#if defined(cl_intel_subgroup_local_block_io)
17845+
uint __ovld __conv intel_sub_group_block_read( const __local uint* p );
17846+
uint2 __ovld __conv intel_sub_group_block_read2( const __local uint* p );
17847+
uint4 __ovld __conv intel_sub_group_block_read4( const __local uint* p );
17848+
uint8 __ovld __conv intel_sub_group_block_read8( const __local uint* p );
17849+
17850+
void __ovld __conv intel_sub_group_block_write( __local uint* p, uint data );
17851+
void __ovld __conv intel_sub_group_block_write2( __local uint* p, uint2 data );
17852+
void __ovld __conv intel_sub_group_block_write4( __local uint* p, uint4 data );
17853+
void __ovld __conv intel_sub_group_block_write8( __local uint* p, uint8 data );
17854+
17855+
#if defined(cl_intel_subgroups_char) || defined(cl_intel_subgroups_short) || \
17856+
defined(cl_intel_subgroups_long)
17857+
uint __ovld __conv intel_sub_group_block_read_ui( const __local uint* p );
17858+
uint2 __ovld __conv intel_sub_group_block_read_ui2( const __local uint* p );
17859+
uint4 __ovld __conv intel_sub_group_block_read_ui4( const __local uint* p );
17860+
uint8 __ovld __conv intel_sub_group_block_read_ui8( const __local uint* p );
17861+
17862+
void __ovld __conv intel_sub_group_block_write_ui( __local uint* p, uint data );
17863+
void __ovld __conv intel_sub_group_block_write_ui2( __local uint* p, uint2 data );
17864+
void __ovld __conv intel_sub_group_block_write_ui4( __local uint* p, uint4 data );
17865+
void __ovld __conv intel_sub_group_block_write_ui8( __local uint* p, uint8 data );
17866+
#endif // defined(cl_intel_subgroups_char) || defined(cl_intel_subgroups_short) ||
17867+
// defined(cl_intel_subgroups_long)
17868+
17869+
#if defined(cl_intel_subgroups_char)
17870+
uchar __ovld __conv intel_sub_group_block_read_uc( const __local uchar* p );
17871+
uchar2 __ovld __conv intel_sub_group_block_read_uc2( const __local uchar* p );
17872+
uchar4 __ovld __conv intel_sub_group_block_read_uc4( const __local uchar* p );
17873+
uchar8 __ovld __conv intel_sub_group_block_read_uc8( const __local uchar* p );
17874+
uchar16 __ovld __conv intel_sub_group_block_read_uc16( const __local uchar* p );
17875+
17876+
void __ovld __conv intel_sub_group_block_write_uc( __local uchar* p, uchar data );
17877+
void __ovld __conv intel_sub_group_block_write_uc2( __local uchar* p, uchar2 data );
17878+
void __ovld __conv intel_sub_group_block_write_uc4( __local uchar* p, uchar4 data );
17879+
void __ovld __conv intel_sub_group_block_write_uc8( __local uchar* p, uchar8 data );
17880+
void __ovld __conv intel_sub_group_block_write_uc16( __local uchar* p, uchar16 data );
17881+
#endif // defined(cl_intel_subgroups_char)
17882+
17883+
#if defined(cl_intel_subgroups_short)
17884+
ushort __ovld __conv intel_sub_group_block_read_us( const __local ushort* p );
17885+
ushort2 __ovld __conv intel_sub_group_block_read_us2( const __local ushort* p );
17886+
ushort4 __ovld __conv intel_sub_group_block_read_us4( const __local ushort* p );
17887+
ushort8 __ovld __conv intel_sub_group_block_read_us8( const __local ushort* p );
17888+
ushort16 __ovld __conv intel_sub_group_block_read_us16( const __local ushort* p );
17889+
17890+
void __ovld __conv intel_sub_group_block_write_us( __local ushort* p, ushort data );
17891+
void __ovld __conv intel_sub_group_block_write_us2( __local ushort* p, ushort2 data );
17892+
void __ovld __conv intel_sub_group_block_write_us4( __local ushort* p, ushort4 data );
17893+
void __ovld __conv intel_sub_group_block_write_us8( __local ushort* p, ushort8 data );
17894+
void __ovld __conv intel_sub_group_block_write_us16( __local ushort* p, ushort16 data );
17895+
#endif // defined(cl_intel_subgroups_short)
17896+
17897+
#if defined(cl_intel_subgroups_long)
17898+
ulong __ovld __conv intel_sub_group_block_read_ul( const __local ulong* p );
17899+
ulong2 __ovld __conv intel_sub_group_block_read_ul2( const __local ulong* p );
17900+
ulong4 __ovld __conv intel_sub_group_block_read_ul4( const __local ulong* p );
17901+
ulong8 __ovld __conv intel_sub_group_block_read_ul8( const __local ulong* p );
17902+
17903+
void __ovld __conv intel_sub_group_block_write_ul( __local ulong* p, ulong data );
17904+
void __ovld __conv intel_sub_group_block_write_ul2( __local ulong* p, ulong2 data );
17905+
void __ovld __conv intel_sub_group_block_write_ul4( __local ulong* p, ulong4 data );
17906+
void __ovld __conv intel_sub_group_block_write_ul8( __local ulong* p, ulong8 data );
17907+
#endif // defined(cl_intel_subgroups_long)
17908+
#endif // cl_intel_subgroup_local_block_io
17909+
1784417910
#ifdef cl_intel_device_side_avc_motion_estimation
1784517911
#pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : begin
1784617912

0 commit comments

Comments
 (0)