Skip to content

Commit ddcccc4

Browse files
Maetveisvmustya
andauthored
[OpenCL] Add decls for cl_intel_subgroups_char, cl_intel_subgroups_long (#146655)
These extensions add char and long support to the subgroup builtins. They are already supported by the Intel Graphics Compiler. Co-authored-by: Victor Mustya <victor.mustya@intel.com>
1 parent 724dfdc commit ddcccc4

File tree

1 file changed

+223
-39
lines changed

1 file changed

+223
-39
lines changed

clang/lib/Headers/opencl-c.h

Lines changed: 223 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -17482,7 +17482,50 @@ double __ovld __conv intel_sub_group_shuffle_up( double prev, double cur, uint
1748217482
double __ovld __conv intel_sub_group_shuffle_xor( double, uint );
1748317483
#endif
1748417484

17485-
#endif //cl_intel_subgroups
17485+
#if defined(cl_intel_subgroups_char) || defined(cl_intel_subgroups_short) || \
17486+
defined(cl_intel_subgroups_long)
17487+
17488+
#if defined(__opencl_c_images)
17489+
uint __ovld __conv intel_sub_group_block_read_ui(read_only image2d_t, int2);
17490+
uint2 __ovld __conv intel_sub_group_block_read_ui2(read_only image2d_t, int2);
17491+
uint4 __ovld __conv intel_sub_group_block_read_ui4(read_only image2d_t, int2);
17492+
uint8 __ovld __conv intel_sub_group_block_read_ui8(read_only image2d_t, int2);
17493+
#endif // defined(__opencl_c_images)
17494+
17495+
#if defined(__opencl_c_read_write_images)
17496+
uint __ovld __conv intel_sub_group_block_read_ui(read_write image2d_t, int2);
17497+
uint2 __ovld __conv intel_sub_group_block_read_ui2(read_write image2d_t, int2);
17498+
uint4 __ovld __conv intel_sub_group_block_read_ui4(read_write image2d_t, int2);
17499+
uint8 __ovld __conv intel_sub_group_block_read_ui8(read_write image2d_t, int2);
17500+
#endif // defined(__opencl_c_read_write_images)
17501+
17502+
uint __ovld __conv intel_sub_group_block_read_ui( const __global uint* p );
17503+
uint2 __ovld __conv intel_sub_group_block_read_ui2( const __global uint* p );
17504+
uint4 __ovld __conv intel_sub_group_block_read_ui4( const __global uint* p );
17505+
uint8 __ovld __conv intel_sub_group_block_read_ui8( const __global uint* p );
17506+
17507+
#if defined(__opencl_c_images)
17508+
void __ovld __conv intel_sub_group_block_write_ui(read_only image2d_t, int2, uint);
17509+
void __ovld __conv intel_sub_group_block_write_ui2(read_only image2d_t, int2, uint2);
17510+
void __ovld __conv intel_sub_group_block_write_ui4(read_only image2d_t, int2, uint4);
17511+
void __ovld __conv intel_sub_group_block_write_ui8(read_only image2d_t, int2, uint8);
17512+
#endif // defined(__opencl_c_images)
17513+
17514+
#if defined(__opencl_c_read_write_images)
17515+
void __ovld __conv intel_sub_group_block_write_ui(read_write image2d_t, int2, uint);
17516+
void __ovld __conv intel_sub_group_block_write_ui2(read_write image2d_t, int2, uint2);
17517+
void __ovld __conv intel_sub_group_block_write_ui4(read_write image2d_t, int2, uint4);
17518+
void __ovld __conv intel_sub_group_block_write_ui8(read_write image2d_t, int2, uint8);
17519+
#endif // defined(__opencl_c_read_write_images)
17520+
17521+
void __ovld __conv intel_sub_group_block_write_ui( __global uint* p, uint data );
17522+
void __ovld __conv intel_sub_group_block_write_ui2( __global uint* p, uint2 data );
17523+
void __ovld __conv intel_sub_group_block_write_ui4( __global uint* p, uint4 data );
17524+
void __ovld __conv intel_sub_group_block_write_ui8( __global uint* p, uint8 data );
17525+
17526+
#endif // defined(cl_intel_subgroups_char) || defined(cl_intel_subgroups_short) ||
17527+
// defined(cl_intel_subgroups_long)
17528+
#endif // cl_intel_subgroups
1748617529

1748717530
#if defined(cl_intel_subgroups_short)
1748817531
short __ovld __conv intel_sub_group_broadcast( short , uint sub_group_local_id );
@@ -17574,44 +17617,6 @@ ushort __ovld __conv intel_sub_group_scan_inclusive_min( ushort x );
1757417617
short __ovld __conv intel_sub_group_scan_inclusive_max( short x );
1757517618
ushort __ovld __conv intel_sub_group_scan_inclusive_max( ushort x );
1757617619

17577-
#if defined(__opencl_c_images)
17578-
uint __ovld __conv intel_sub_group_block_read_ui(read_only image2d_t, int2);
17579-
uint2 __ovld __conv intel_sub_group_block_read_ui2(read_only image2d_t, int2);
17580-
uint4 __ovld __conv intel_sub_group_block_read_ui4(read_only image2d_t, int2);
17581-
uint8 __ovld __conv intel_sub_group_block_read_ui8(read_only image2d_t, int2);
17582-
#endif // defined(__opencl_c_images)
17583-
17584-
#if defined(__opencl_c_read_write_images)
17585-
uint __ovld __conv intel_sub_group_block_read_ui(read_write image2d_t, int2);
17586-
uint2 __ovld __conv intel_sub_group_block_read_ui2(read_write image2d_t, int2);
17587-
uint4 __ovld __conv intel_sub_group_block_read_ui4(read_write image2d_t, int2);
17588-
uint8 __ovld __conv intel_sub_group_block_read_ui8(read_write image2d_t, int2);
17589-
#endif // defined(__opencl_c_read_write_images)
17590-
17591-
uint __ovld __conv intel_sub_group_block_read_ui( const __global uint* p );
17592-
uint2 __ovld __conv intel_sub_group_block_read_ui2( const __global uint* p );
17593-
uint4 __ovld __conv intel_sub_group_block_read_ui4( const __global uint* p );
17594-
uint8 __ovld __conv intel_sub_group_block_read_ui8( const __global uint* p );
17595-
17596-
#if defined(__opencl_c_images)
17597-
void __ovld __conv intel_sub_group_block_write_ui(read_only image2d_t, int2, uint);
17598-
void __ovld __conv intel_sub_group_block_write_ui2(read_only image2d_t, int2, uint2);
17599-
void __ovld __conv intel_sub_group_block_write_ui4(read_only image2d_t, int2, uint4);
17600-
void __ovld __conv intel_sub_group_block_write_ui8(read_only image2d_t, int2, uint8);
17601-
#endif //defined(__opencl_c_images)
17602-
17603-
#if defined(__opencl_c_read_write_images)
17604-
void __ovld __conv intel_sub_group_block_write_ui(read_write image2d_t, int2, uint);
17605-
void __ovld __conv intel_sub_group_block_write_ui2(read_write image2d_t, int2, uint2);
17606-
void __ovld __conv intel_sub_group_block_write_ui4(read_write image2d_t, int2, uint4);
17607-
void __ovld __conv intel_sub_group_block_write_ui8(read_write image2d_t, int2, uint8);
17608-
#endif // defined(__opencl_c_read_write_images)
17609-
17610-
void __ovld __conv intel_sub_group_block_write_ui( __global uint* p, uint data );
17611-
void __ovld __conv intel_sub_group_block_write_ui2( __global uint* p, uint2 data );
17612-
void __ovld __conv intel_sub_group_block_write_ui4( __global uint* p, uint4 data );
17613-
void __ovld __conv intel_sub_group_block_write_ui8( __global uint* p, uint8 data );
17614-
1761517620
#if defined(__opencl_c_images)
1761617621
ushort __ovld __conv intel_sub_group_block_read_us(read_only image2d_t, int2);
1761717622
ushort2 __ovld __conv intel_sub_group_block_read_us2(read_only image2d_t, int2);
@@ -17657,6 +17662,185 @@ void __ovld __conv intel_sub_group_block_write_us8( __global ushort* p, u
1765717662
void __ovld __conv intel_sub_group_block_write_us16( __global ushort* p, ushort16 data );
1765817663
#endif // cl_intel_subgroups_short
1765917664

17665+
#if defined(cl_intel_subgroups_char)
17666+
char __ovld __conv intel_sub_group_broadcast( char , uint sub_group_local_id );
17667+
char2 __ovld __conv intel_sub_group_broadcast( char2, uint sub_group_local_id );
17668+
char3 __ovld __conv intel_sub_group_broadcast( char3, uint sub_group_local_id );
17669+
char4 __ovld __conv intel_sub_group_broadcast( char4, uint sub_group_local_id );
17670+
char8 __ovld __conv intel_sub_group_broadcast( char8, uint sub_group_local_id );
17671+
17672+
uchar __ovld __conv intel_sub_group_broadcast( uchar , uint sub_group_local_id );
17673+
uchar2 __ovld __conv intel_sub_group_broadcast( uchar2, uint sub_group_local_id );
17674+
uchar3 __ovld __conv intel_sub_group_broadcast( uchar3, uint sub_group_local_id );
17675+
uchar4 __ovld __conv intel_sub_group_broadcast( uchar4, uint sub_group_local_id );
17676+
uchar8 __ovld __conv intel_sub_group_broadcast( uchar8, uint sub_group_local_id );
17677+
17678+
char __ovld __conv intel_sub_group_shuffle( char , uint );
17679+
char2 __ovld __conv intel_sub_group_shuffle( char2 , uint );
17680+
char3 __ovld __conv intel_sub_group_shuffle( char3 , uint );
17681+
char4 __ovld __conv intel_sub_group_shuffle( char4 , uint );
17682+
char8 __ovld __conv intel_sub_group_shuffle( char8 , uint );
17683+
char16 __ovld __conv intel_sub_group_shuffle( char16, uint);
17684+
17685+
uchar __ovld __conv intel_sub_group_shuffle( uchar , uint );
17686+
uchar2 __ovld __conv intel_sub_group_shuffle( uchar2 , uint );
17687+
uchar3 __ovld __conv intel_sub_group_shuffle( uchar3 , uint );
17688+
uchar4 __ovld __conv intel_sub_group_shuffle( uchar4 , uint );
17689+
uchar8 __ovld __conv intel_sub_group_shuffle( uchar8 , uint );
17690+
uchar16 __ovld __conv intel_sub_group_shuffle( uchar16, uint );
17691+
17692+
char __ovld __conv intel_sub_group_shuffle_down( char cur, char next, uint );
17693+
char2 __ovld __conv intel_sub_group_shuffle_down( char2 cur, char2 next, uint );
17694+
char3 __ovld __conv intel_sub_group_shuffle_down( char3 cur, char3 next, uint );
17695+
char4 __ovld __conv intel_sub_group_shuffle_down( char4 cur, char4 next, uint );
17696+
char8 __ovld __conv intel_sub_group_shuffle_down( char8 cur, char8 next, uint );
17697+
char16 __ovld __conv intel_sub_group_shuffle_down( char16 cur, char16 next, uint );
17698+
17699+
uchar __ovld __conv intel_sub_group_shuffle_down( uchar cur, uchar next, uint );
17700+
uchar2 __ovld __conv intel_sub_group_shuffle_down( uchar2 cur, uchar2 next, uint );
17701+
uchar3 __ovld __conv intel_sub_group_shuffle_down( uchar3 cur, uchar3 next, uint );
17702+
uchar4 __ovld __conv intel_sub_group_shuffle_down( uchar4 cur, uchar4 next, uint );
17703+
uchar8 __ovld __conv intel_sub_group_shuffle_down( uchar8 cur, uchar8 next, uint );
17704+
uchar16 __ovld __conv intel_sub_group_shuffle_down( uchar16 cur, uchar16 next, uint );
17705+
17706+
char __ovld __conv intel_sub_group_shuffle_up( char cur, char next, uint );
17707+
char2 __ovld __conv intel_sub_group_shuffle_up( char2 cur, char2 next, uint );
17708+
char3 __ovld __conv intel_sub_group_shuffle_up( char3 cur, char3 next, uint );
17709+
char4 __ovld __conv intel_sub_group_shuffle_up( char4 cur, char4 next, uint );
17710+
char8 __ovld __conv intel_sub_group_shuffle_up( char8 cur, char8 next, uint );
17711+
char16 __ovld __conv intel_sub_group_shuffle_up( char16 cur, char16 next, uint );
17712+
17713+
uchar __ovld __conv intel_sub_group_shuffle_up( uchar cur, uchar next, uint );
17714+
uchar2 __ovld __conv intel_sub_group_shuffle_up( uchar2 cur, uchar2 next, uint );
17715+
uchar3 __ovld __conv intel_sub_group_shuffle_up( uchar3 cur, uchar3 next, uint );
17716+
uchar4 __ovld __conv intel_sub_group_shuffle_up( uchar4 cur, uchar4 next, uint );
17717+
uchar8 __ovld __conv intel_sub_group_shuffle_up( uchar8 cur, uchar8 next, uint );
17718+
uchar16 __ovld __conv intel_sub_group_shuffle_up( uchar16 cur, uchar16 next, uint );
17719+
17720+
char __ovld __conv intel_sub_group_shuffle_xor( char , uint );
17721+
char2 __ovld __conv intel_sub_group_shuffle_xor( char2 , uint );
17722+
char3 __ovld __conv intel_sub_group_shuffle_xor( char3 , uint );
17723+
char4 __ovld __conv intel_sub_group_shuffle_xor( char4 , uint );
17724+
char8 __ovld __conv intel_sub_group_shuffle_xor( char8 , uint );
17725+
char16 __ovld __conv intel_sub_group_shuffle_xor( char16, uint );
17726+
17727+
uchar __ovld __conv intel_sub_group_shuffle_xor( uchar , uint );
17728+
uchar2 __ovld __conv intel_sub_group_shuffle_xor( uchar2 , uint );
17729+
uchar3 __ovld __conv intel_sub_group_shuffle_xor( uchar3 , uint );
17730+
uchar4 __ovld __conv intel_sub_group_shuffle_xor( uchar4 , uint );
17731+
uchar8 __ovld __conv intel_sub_group_shuffle_xor( uchar8 , uint );
17732+
uchar16 __ovld __conv intel_sub_group_shuffle_xor( uchar16, uint );
17733+
17734+
char __ovld __conv intel_sub_group_reduce_add( char x );
17735+
uchar __ovld __conv intel_sub_group_reduce_add( uchar x );
17736+
char __ovld __conv intel_sub_group_reduce_min( char x );
17737+
uchar __ovld __conv intel_sub_group_reduce_min( uchar x );
17738+
char __ovld __conv intel_sub_group_reduce_max( char x );
17739+
uchar __ovld __conv intel_sub_group_reduce_max( uchar x );
17740+
17741+
char __ovld __conv intel_sub_group_scan_exclusive_add( char x );
17742+
uchar __ovld __conv intel_sub_group_scan_exclusive_add( uchar x );
17743+
char __ovld __conv intel_sub_group_scan_exclusive_min( char x );
17744+
uchar __ovld __conv intel_sub_group_scan_exclusive_min( uchar x );
17745+
char __ovld __conv intel_sub_group_scan_exclusive_max( char x );
17746+
uchar __ovld __conv intel_sub_group_scan_exclusive_max( uchar x );
17747+
17748+
char __ovld __conv intel_sub_group_scan_inclusive_add( char x );
17749+
uchar __ovld __conv intel_sub_group_scan_inclusive_add( uchar x );
17750+
char __ovld __conv intel_sub_group_scan_inclusive_min( char x );
17751+
uchar __ovld __conv intel_sub_group_scan_inclusive_min( uchar x );
17752+
char __ovld __conv intel_sub_group_scan_inclusive_max( char x );
17753+
uchar __ovld __conv intel_sub_group_scan_inclusive_max( uchar x );
17754+
17755+
#if defined(__opencl_c_images)
17756+
uchar __ovld __conv intel_sub_group_block_read_uc(read_only image2d_t, int2);
17757+
uchar2 __ovld __conv intel_sub_group_block_read_uc2(read_only image2d_t, int2);
17758+
uchar4 __ovld __conv intel_sub_group_block_read_uc4(read_only image2d_t, int2);
17759+
uchar8 __ovld __conv intel_sub_group_block_read_uc8(read_only image2d_t, int2);
17760+
uchar16 __ovld __conv intel_sub_group_block_read_uc16(read_only image2d_t, int2);
17761+
#endif // defined(__opencl_c_images)
17762+
17763+
#if defined(__opencl_c_read_write_images)
17764+
uchar __ovld __conv intel_sub_group_block_read_uc(read_write image2d_t, int2);
17765+
uchar2 __ovld __conv intel_sub_group_block_read_uc2(read_write image2d_t, int2);
17766+
uchar4 __ovld __conv intel_sub_group_block_read_uc4(read_write image2d_t, int2);
17767+
uchar8 __ovld __conv intel_sub_group_block_read_uc8(read_write image2d_t, int2);
17768+
uchar16 __ovld __conv intel_sub_group_block_read_uc16(read_write image2d_t, int2);
17769+
#endif // defined(__opencl_c_read_write_images)
17770+
17771+
uchar __ovld __conv intel_sub_group_block_read_uc( const __global uchar* p );
17772+
uchar2 __ovld __conv intel_sub_group_block_read_uc2( const __global uchar* p );
17773+
uchar4 __ovld __conv intel_sub_group_block_read_uc4( const __global uchar* p );
17774+
uchar8 __ovld __conv intel_sub_group_block_read_uc8( const __global uchar* p );
17775+
uchar16 __ovld __conv intel_sub_group_block_read_uc16( const __global uchar* p );
17776+
17777+
#if defined(__opencl_c_images)
17778+
void __ovld __conv intel_sub_group_block_write_uc(write_only image2d_t, int2, uchar);
17779+
void __ovld __conv intel_sub_group_block_write_uc2(write_only image2d_t, int2, uchar2);
17780+
void __ovld __conv intel_sub_group_block_write_uc4(write_only image2d_t, int2, uchar4);
17781+
void __ovld __conv intel_sub_group_block_write_uc8(write_only image2d_t, int2, uchar8);
17782+
void __ovld __conv intel_sub_group_block_write_uc16(write_only image2d_t, int2, uchar16);
17783+
#endif // defined(__opencl_c_images)
17784+
17785+
#if defined(__opencl_c_read_write_images)
17786+
void __ovld __conv intel_sub_group_block_write_uc(read_write image2d_t, int2, uchar);
17787+
void __ovld __conv intel_sub_group_block_write_uc2(read_write image2d_t, int2, uchar2);
17788+
void __ovld __conv intel_sub_group_block_write_uc4(read_write image2d_t, int2, uchar4);
17789+
void __ovld __conv intel_sub_group_block_write_uc8(read_write image2d_t, int2, uchar8);
17790+
void __ovld __conv intel_sub_group_block_write_uc16(read_write image2d_t, int2, uchar16);
17791+
#endif // defined(__opencl_c_read_write_images)
17792+
17793+
void __ovld __conv intel_sub_group_block_write_uc( __global uchar* p, uchar data );
17794+
void __ovld __conv intel_sub_group_block_write_uc2( __global uchar* p, uchar2 data );
17795+
void __ovld __conv intel_sub_group_block_write_uc4( __global uchar* p, uchar4 data );
17796+
void __ovld __conv intel_sub_group_block_write_uc8( __global uchar* p, uchar8 data );
17797+
void __ovld __conv intel_sub_group_block_write_uc16( __global uchar* p, uchar16 data );
17798+
#endif // cl_intel_subgroups_char
17799+
17800+
#if defined(cl_intel_subgroups_long)
17801+
#if defined(__opencl_c_images)
17802+
ulong __ovld __conv intel_sub_group_block_read_ul(read_only image2d_t, int2);
17803+
ulong2 __ovld __conv intel_sub_group_block_read_ul2(read_only image2d_t, int2);
17804+
ulong4 __ovld __conv intel_sub_group_block_read_ul4(read_only image2d_t, int2);
17805+
ulong8 __ovld __conv intel_sub_group_block_read_ul8(read_only image2d_t, int2);
17806+
ulong16 __ovld __conv intel_sub_group_block_read_ul16(read_only image2d_t, int2);
17807+
#endif // defined(__opencl_c_images)
17808+
17809+
#if defined(__opencl_c_read_write_images)
17810+
ulong __ovld __conv intel_sub_group_block_read_ul(read_write image2d_t, int2);
17811+
ulong2 __ovld __conv intel_sub_group_block_read_ul2(read_write image2d_t, int2);
17812+
ulong4 __ovld __conv intel_sub_group_block_read_ul4(read_write image2d_t, int2);
17813+
ulong8 __ovld __conv intel_sub_group_block_read_ul8(read_write image2d_t, int2);
17814+
ulong16 __ovld __conv intel_sub_group_block_read_ul16(read_write image2d_t, int2);
17815+
#endif // defined(__opencl_c_read_write_images)
17816+
17817+
ulong __ovld __conv intel_sub_group_block_read_ul( const __global ulong* p );
17818+
ulong2 __ovld __conv intel_sub_group_block_read_ul2( const __global ulong* p );
17819+
ulong4 __ovld __conv intel_sub_group_block_read_ul4( const __global ulong* p );
17820+
ulong8 __ovld __conv intel_sub_group_block_read_ul8( const __global ulong* p );
17821+
17822+
#if defined(__opencl_c_images)
17823+
void __ovld __conv intel_sub_group_block_write_ul(write_only image2d_t, int2, ulong);
17824+
void __ovld __conv intel_sub_group_block_write_ul2(write_only image2d_t, int2, ulong2);
17825+
void __ovld __conv intel_sub_group_block_write_ul4(write_only image2d_t, int2, ulong4);
17826+
void __ovld __conv intel_sub_group_block_write_ul8(write_only image2d_t, int2, ulong8);
17827+
void __ovld __conv intel_sub_group_block_write_ul16(write_only image2d_t, int2, ulong16);
17828+
#endif // defined(__opencl_c_images)
17829+
17830+
#if defined(__opencl_c_read_write_images)
17831+
void __ovld __conv intel_sub_group_block_write_ul(read_write image2d_t, int2, ulong);
17832+
void __ovld __conv intel_sub_group_block_write_ul2(read_write image2d_t, int2, ulong2);
17833+
void __ovld __conv intel_sub_group_block_write_ul4(read_write image2d_t, int2, ulong4);
17834+
void __ovld __conv intel_sub_group_block_write_ul8(read_write image2d_t, int2, ulong8);
17835+
void __ovld __conv intel_sub_group_block_write_ul16(read_write image2d_t, int2, ulong16);
17836+
#endif // defined(__opencl_c_read_write_images)
17837+
17838+
void __ovld __conv intel_sub_group_block_write_ul( __global ulong* p, ulong data );
17839+
void __ovld __conv intel_sub_group_block_write_ul2( __global ulong* p, ulong2 data );
17840+
void __ovld __conv intel_sub_group_block_write_ul4( __global ulong* p, ulong4 data );
17841+
void __ovld __conv intel_sub_group_block_write_ul8( __global ulong* p, ulong8 data);
17842+
#endif // cl_intel_subgroups_long
17843+
1766017844
#ifdef cl_intel_device_side_avc_motion_estimation
1766117845
#pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : begin
1766217846

0 commit comments

Comments
 (0)