Skip to content

Commit 536ee94

Browse files
Maetveisvmustya
andcommitted
[OpenCL] Add decls for cl_intel_subgroups_char, cl_intel_subgroups_long
These extensions add char and long support to the subgroup builtins. It is already supported by the Intel Graphics Compiler. Co-authored-by: Victor Mustya <[email protected]>
1 parent 651c520 commit 536ee94

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);
@@ -17651,6 +17656,185 @@ void __ovld __conv intel_sub_group_block_write_us4( __global ushort* p, u
1765117656
void __ovld __conv intel_sub_group_block_write_us8( __global ushort* p, ushort8 data );
1765217657
#endif // cl_intel_subgroups_short
1765317658

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

0 commit comments

Comments
 (0)