brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.1 KiB · 41cf085 Raw
375 lines · plain
1; Generated with:2; source.cl:3; void foo(int x, int2 coord, uint c, short s, float f, size_t n,4;          __global uint* p, read_write image2d_t image, uint4 v) {5;   work_group_all(x);6;   work_group_any(x);7;   work_group_broadcast(x, n);8;   sub_group_barrier(CLK_LOCAL_MEM_FENCE, memory_scope_sub_group);9;   sub_group_all(x);10;   sub_group_any(x);11;   sub_group_broadcast(x, c);12;   sub_group_reduce_add(x);13;   sub_group_reduce_add(f);14;   sub_group_reduce_min(x);15;   sub_group_reduce_min(c);16;   sub_group_reduce_min(f);17;   sub_group_reduce_max(x);18;   sub_group_reduce_max(c);19;   sub_group_reduce_max(f);20;   intel_sub_group_shuffle(x, c);21;   intel_sub_group_shuffle_down(x, x, c);22;   intel_sub_group_shuffle_up(x, x, c);23;   intel_sub_group_shuffle_xor(x, c);24;   intel_sub_group_block_read(p);25;   intel_sub_group_block_write(p, c);26;   intel_sub_group_block_read(image, coord);27;   intel_sub_group_block_write(image, coord, c);28;   sub_group_elect();29;   sub_group_non_uniform_all(x);30;   sub_group_non_uniform_any(x);31;   sub_group_non_uniform_all_equal(x);32;   sub_group_non_uniform_broadcast(x, c);33;   sub_group_broadcast_first(x);34;   sub_group_ballot(x);35;   sub_group_inverse_ballot(v);36;   sub_group_ballot_bit_extract(v, c);37;   sub_group_ballot_bit_count(v);38;   sub_group_ballot_inclusive_scan(v);39;   sub_group_ballot_exclusive_scan(v);40;   sub_group_ballot_find_lsb(v);41;   sub_group_ballot_find_msb(v);42;   sub_group_non_uniform_reduce_add(x);43;   sub_group_non_uniform_reduce_add(f);44;   sub_group_non_uniform_scan_inclusive_min(x);45;   sub_group_non_uniform_scan_inclusive_min(c);46;   sub_group_non_uniform_scan_inclusive_min(f);47;   sub_group_non_uniform_scan_exclusive_max(x);48;   sub_group_non_uniform_scan_exclusive_max(c);49;   sub_group_non_uniform_scan_exclusive_max(f);50;   sub_group_non_uniform_reduce_mul(x);51;   sub_group_non_uniform_reduce_mul(f);52;   sub_group_non_uniform_reduce_and(x);53;   sub_group_non_uniform_scan_inclusive_or(x);54;   sub_group_non_uniform_scan_exclusive_xor(x);55;   sub_group_non_uniform_reduce_logical_and(x);56;   sub_group_non_uniform_scan_inclusive_logical_or(x);57;   sub_group_non_uniform_scan_exclusive_logical_xor(x);58;   sub_group_rotate(c, x);59; }60 61; REQUIRES: spirv-dis62; clang -cc1 -O2 -triple spir -cl-std=cl2.0 -finclude-default-header -cl-ext=+all source.cl -emit-llvm-bc -o tmp.bc63; llvm-spirv tmp.bc --spirv-ext=+all,-SPV_KHR_untyped_pointers -o tmp.spv64; spirv-dis tmp.spv -o llvm-spirv/test/GroupAndSubgroupInstructions.spvasm65 66; REQUIRES: spirv-as67; RUN: spirv-as %s --target-env spv1.3 -o %t.spv68; RUN: spirv-val %t.spv69; RUN: llvm-spirv -r %t.spv --spirv-target-env=CL1.2 -o %t.bc70; RUN: llvm-dis %t.bc -o %t.ll71; RUN: FileCheck < %t.ll %s --check-prefixes=CHECK-COMMON,CHECK-CL,CHECK-CL1272 73; RUN: llvm-spirv -r %t.spv --spirv-target-env=CL2.0 -o %t.bc74; RUN: llvm-dis %t.bc -o %t.ll75; RUN: FileCheck < %t.ll %s --check-prefixes=CHECK-COMMON,CHECK-CL,CHECK-CL2076 77; RUN: llvm-spirv -r %t.spv --spirv-target-env=SPV-IR -o %t.bc78; RUN: llvm-dis %t.bc -o %t.ll79; RUN: FileCheck < %t.ll %s --check-prefixes=CHECK-COMMON,CHECK-SPV-IR80 81; RUN: llvm-spirv %t.bc --spirv-ext=+all,-SPV_KHR_untyped_pointers -o %t.rev.spv82; RUN: spirv-val %t.rev.spv83 84 85; CHECK-CL-DAG: declare spir_func i32 @_Z14work_group_alli(i32) #[[#Attrs:]]86; CHECK-CL-DAG: declare spir_func i32 @_Z14work_group_anyi(i32) #[[#Attrs]]87; CHECK-CL-DAG: declare spir_func i32 @_Z20work_group_broadcastjj(i32, i32) #[[#Attrs]]88; CHECK-CL12-DAG: declare spir_func void @_Z7barrierj(i32) #[[#Attrs]]89; CHECK-CL20-DAG: declare spir_func void @_Z17sub_group_barrierj12memory_scope(i32, i32) #[[#Attrs]]90; CHECK-CL-DAG: declare spir_func i32 @_Z13sub_group_alli(i32) #[[#Attrs]]91; CHECK-CL-DAG: declare spir_func i32 @_Z13sub_group_anyi(i32) #[[#Attrs]]92; CHECK-CL-DAG: declare spir_func i32 @_Z19sub_group_broadcastjj(i32, i32) #[[#Attrs]]93; CHECK-CL-DAG: declare spir_func i32 @_Z20sub_group_reduce_addi(i32) #[[#Attrs]]94; CHECK-CL-DAG: declare spir_func float @_Z20sub_group_reduce_addf(float) #[[#Attrs]]95; CHECK-CL-DAG: declare spir_func i32 @_Z20sub_group_reduce_mini(i32) #[[#Attrs]]96; CHECK-CL-DAG: declare spir_func i32 @_Z20sub_group_reduce_minj(i32) #[[#Attrs]]97; CHECK-CL-DAG: declare spir_func float @_Z20sub_group_reduce_minf(float) #[[#Attrs]]98; CHECK-CL-DAG: declare spir_func i32 @_Z20sub_group_reduce_maxi(i32) #[[#Attrs]]99; CHECK-CL-DAG: declare spir_func i32 @_Z20sub_group_reduce_maxj(i32) #[[#Attrs]]100; CHECK-CL-DAG: declare spir_func float @_Z20sub_group_reduce_maxf(float) #[[#Attrs]]101; CHECK-CL-DAG: declare spir_func i32 @_Z23intel_sub_group_shuffleij(i32, i32) #[[#Attrs]]102; CHECK-CL-DAG: declare spir_func i32 @_Z28intel_sub_group_shuffle_downiij(i32, i32, i32) #[[#Attrs]]103; CHECK-CL-DAG: declare spir_func i32 @_Z26intel_sub_group_shuffle_upiij(i32, i32, i32) #[[#Attrs]]104; CHECK-CL-DAG: declare spir_func i32 @_Z27intel_sub_group_shuffle_xorij(i32, i32) #[[#Attrs]]105; CHECK-CL-DAG: declare spir_func i32 @_Z26intel_sub_group_block_readPU3AS1Kj(ptr addrspace(1)) #[[#Attrs]]106; CHECK-CL-DAG: declare spir_func void @_Z27intel_sub_group_block_writePU3AS1jj(ptr addrspace(1), i32) #[[#Attrs]]107; CHECK-CL-DAG: declare spir_func i32 @_Z26intel_sub_group_block_read14ocl_image2d_rwDv2_i(ptr addrspace(1), <2 x i32>) #[[#Attrs]]108; CHECK-CL-DAG: declare spir_func void @_Z27intel_sub_group_block_write14ocl_image2d_rwDv2_ij(ptr addrspace(1), <2 x i32>, i32) #[[#Attrs]]109; CHECK-CL-DAG: declare spir_func i32 @_Z15sub_group_electv() #[[#Attrs]]110; CHECK-CL-DAG: declare spir_func i32 @_Z25sub_group_non_uniform_alli(i32) #[[#Attrs]]111; CHECK-CL-DAG: declare spir_func i32 @_Z25sub_group_non_uniform_anyi(i32) #[[#Attrs]]112; CHECK-CL-DAG: declare spir_func i32 @_Z31sub_group_non_uniform_all_equali(i32) #[[#Attrs]]113; CHECK-CL-DAG: declare spir_func i32 @_Z31sub_group_non_uniform_broadcastjj(i32, i32) #[[#Attrs]]114; CHECK-CL-DAG: declare spir_func i32 @_Z25sub_group_broadcast_firstj(i32) #[[#Attrs]]115; CHECK-CL-DAG: declare spir_func <4 x i32> @_Z16sub_group_balloti(i32) #[[#Attrs]]116; CHECK-CL-DAG: declare spir_func i32 @_Z31sub_group_ballot_inclusive_scanDv4_j(<4 x i32>) #[[#Attrs]]117; CHECK-CL-DAG: declare spir_func i32 @_Z31sub_group_ballot_exclusive_scanDv4_j(<4 x i32>) #[[#Attrs]]118; CHECK-CL-DAG: declare spir_func i32 @_Z25sub_group_ballot_find_lsbDv4_j(<4 x i32>) #[[#Attrs]]119; CHECK-CL-DAG: declare spir_func i32 @_Z25sub_group_ballot_find_msbDv4_j(<4 x i32>) #[[#Attrs]]120; CHECK-CL-DAG: declare spir_func i32 @_Z32sub_group_non_uniform_reduce_addi(i32) #[[#Attrs]]121; CHECK-CL-DAG: declare spir_func float @_Z32sub_group_non_uniform_reduce_addf(float) #[[#Attrs]]122; CHECK-CL-DAG: declare spir_func i32 @_Z40sub_group_non_uniform_scan_inclusive_mini(i32) #[[#Attrs]]123; CHECK-CL-DAG: declare spir_func i32 @_Z40sub_group_non_uniform_scan_inclusive_minj(i32) #[[#Attrs]]124; CHECK-CL-DAG: declare spir_func float @_Z40sub_group_non_uniform_scan_inclusive_minf(float) #[[#Attrs]]125; CHECK-CL-DAG: declare spir_func i32 @_Z40sub_group_non_uniform_scan_exclusive_maxi(i32) #[[#Attrs]]126; CHECK-CL-DAG: declare spir_func i32 @_Z40sub_group_non_uniform_scan_exclusive_maxj(i32) #[[#Attrs]]127; CHECK-CL-DAG: declare spir_func float @_Z40sub_group_non_uniform_scan_exclusive_maxf(float) #[[#Attrs]]128; CHECK-CL-DAG: declare spir_func i32 @_Z32sub_group_non_uniform_reduce_muli(i32) #[[#Attrs]]129; CHECK-CL-DAG: declare spir_func float @_Z32sub_group_non_uniform_reduce_mulf(float) #[[#Attrs]]130; CHECK-CL-DAG: declare spir_func i32 @_Z32sub_group_non_uniform_reduce_andi(i32) #[[#Attrs]]131; CHECK-CL-DAG: declare spir_func i32 @_Z39sub_group_non_uniform_scan_inclusive_ori(i32) #[[#Attrs]]132; CHECK-CL-DAG: declare spir_func i32 @_Z40sub_group_non_uniform_scan_exclusive_xori(i32) #[[#Attrs]]133; CHECK-CL-DAG: declare spir_func i32 @_Z40sub_group_non_uniform_reduce_logical_andi(i32) #[[#Attrs]]134; CHECK-CL-DAG: declare spir_func i32 @_Z47sub_group_non_uniform_scan_inclusive_logical_ori(i32) #[[#Attrs]]135; CHECK-CL-DAG: declare spir_func i32 @_Z48sub_group_non_uniform_scan_exclusive_logical_xori(i32) #[[#Attrs]]136; CHECK-CL-DAG: declare spir_func i32 @_Z16sub_group_rotateii(i32, i32) #[[#Attrs]]137 138; CHECK-SPV-IR: declare spir_func i1 @_Z16__spirv_GroupAllib(i32, i1) #[[#Attrs:]]139; CHECK-SPV-IR: declare spir_func i1 @_Z16__spirv_GroupAnyib(i32, i1) #[[#Attrs]]140; CHECK-SPV-IR: declare spir_func i32 @_Z22__spirv_GroupBroadcastiii(i32, i32, i32) #[[#Attrs]]141; CHECK-SPV-IR: declare spir_func void @_Z22__spirv_ControlBarrieriii(i32, i32, i32) #[[#Attrs]]142; CHECK-SPV-IR: declare spir_func i32 @_Z17__spirv_GroupIAddiii(i32, i32, i32) #[[#Attrs]]143; CHECK-SPV-IR: declare spir_func float @_Z17__spirv_GroupFAddiif(i32, i32, float) #[[#Attrs]]144; CHECK-SPV-IR: declare spir_func i32 @_Z17__spirv_GroupSMiniii(i32, i32, i32) #[[#Attrs]]145; CHECK-SPV-IR: declare spir_func i32 @_Z17__spirv_GroupUMiniij(i32, i32, i32) #[[#Attrs]]146; CHECK-SPV-IR: declare spir_func float @_Z17__spirv_GroupFMiniif(i32, i32, float) #[[#Attrs]]147; CHECK-SPV-IR: declare spir_func i32 @_Z17__spirv_GroupSMaxiii(i32, i32, i32) #[[#Attrs]]148; CHECK-SPV-IR: declare spir_func i32 @_Z17__spirv_GroupUMaxiij(i32, i32, i32) #[[#Attrs]]149; CHECK-SPV-IR: declare spir_func float @_Z17__spirv_GroupFMaxiif(i32, i32, float) #[[#Attrs]]150; CHECK-SPV-IR: declare spir_func i32 @_Z28__spirv_SubgroupShuffleINTELij(i32, i32) #[[#Attrs]]151; CHECK-SPV-IR: declare spir_func i32 @_Z32__spirv_SubgroupShuffleDownINTELiij(i32, i32, i32) #[[#Attrs]]152; CHECK-SPV-IR: declare spir_func i32 @_Z30__spirv_SubgroupShuffleUpINTELiij(i32, i32, i32) #[[#Attrs]]153; CHECK-SPV-IR: declare spir_func i32 @_Z31__spirv_SubgroupShuffleXorINTELij(i32, i32) #[[#Attrs]]154; CHECK-SPV-IR: declare spir_func i32 @_Z35__spirv_SubgroupBlockReadINTEL_RintPU3AS1Kj(ptr addrspace(1)) #[[#Attrs]]155; CHECK-SPV-IR: declare spir_func void @_Z31__spirv_SubgroupBlockWriteINTELPU3AS1jj(ptr addrspace(1), i32) #[[#Attrs]]156; CHECK-SPV-IR: declare spir_func i32 @_Z40__spirv_SubgroupImageBlockReadINTEL_RintPU3AS133__spirv_Image__void_1_0_0_0_0_0_2Dv2_i(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 2), <2 x i32>) #[[#Attrs]]157; CHECK-SPV-IR: declare spir_func void @_Z36__spirv_SubgroupImageBlockWriteINTELPU3AS133__spirv_Image__void_1_0_0_0_0_0_2Dv2_ij(target("spirv.Image", void, 1, 0, 0, 0, 0, 0, 2), <2 x i32>, i32) #[[#Attrs]]158; CHECK-SPV-IR: declare spir_func i1 @_Z28__spirv_GroupNonUniformElecti(i32) #[[#Attrs]]159; CHECK-SPV-IR: declare spir_func i1 @_Z26__spirv_GroupNonUniformAllib(i32, i1) #[[#Attrs]]160; CHECK-SPV-IR: declare spir_func i1 @_Z26__spirv_GroupNonUniformAnyib(i32, i1) #[[#Attrs]]161; CHECK-SPV-IR: declare spir_func i1 @_Z31__spirv_GroupNonUniformAllEqualii(i32, i32) #[[#Attrs]]162; CHECK-SPV-IR: declare spir_func i32 @_Z32__spirv_GroupNonUniformBroadcastiij(i32, i32, i32) #[[#Attrs]]163; CHECK-SPV-IR: declare spir_func i32 @_Z37__spirv_GroupNonUniformBroadcastFirstii(i32, i32) #[[#Attrs]]164; CHECK-SPV-IR: declare spir_func <4 x i32> @_Z29__spirv_GroupNonUniformBallotib(i32, i1) #[[#Attrs]]165; CHECK-SPV-IR: declare spir_func i32 @_Z37__spirv_GroupNonUniformBallotBitCountiiDv4_j(i32, i32, <4 x i32>) #[[#Attrs]]166; CHECK-SPV-IR: declare spir_func i32 @_Z36__spirv_GroupNonUniformBallotFindLSBiDv4_j(i32, <4 x i32>) #[[#Attrs]]167; CHECK-SPV-IR: declare spir_func i32 @_Z36__spirv_GroupNonUniformBallotFindMSBiDv4_j(i32, <4 x i32>) #[[#Attrs]]168; CHECK-SPV-IR: declare spir_func i32 @_Z27__spirv_GroupNonUniformIAddiii(i32, i32, i32) #[[#Attrs]]169; CHECK-SPV-IR: declare spir_func float @_Z27__spirv_GroupNonUniformFAddiif(i32, i32, float) #[[#Attrs]]170; CHECK-SPV-IR: declare spir_func i32 @_Z27__spirv_GroupNonUniformSMiniii(i32, i32, i32) #[[#Attrs]]171; CHECK-SPV-IR: declare spir_func i32 @_Z27__spirv_GroupNonUniformUMiniij(i32, i32, i32) #[[#Attrs]]172; CHECK-SPV-IR: declare spir_func float @_Z27__spirv_GroupNonUniformFMiniif(i32, i32, float) #[[#Attrs]]173; CHECK-SPV-IR: declare spir_func i32 @_Z27__spirv_GroupNonUniformSMaxiii(i32, i32, i32) #[[#Attrs]]174; CHECK-SPV-IR: declare spir_func i32 @_Z27__spirv_GroupNonUniformUMaxiij(i32, i32, i32) #[[#Attrs]]175; CHECK-SPV-IR: declare spir_func float @_Z27__spirv_GroupNonUniformFMaxiif(i32, i32, float) #[[#Attrs]]176; CHECK-SPV-IR: declare spir_func i32 @_Z27__spirv_GroupNonUniformIMuliii(i32, i32, i32) #[[#Attrs]]177; CHECK-SPV-IR: declare spir_func float @_Z27__spirv_GroupNonUniformFMuliif(i32, i32, float) #[[#Attrs]]178; CHECK-SPV-IR: declare spir_func i32 @_Z33__spirv_GroupNonUniformBitwiseAndiii(i32, i32, i32) #[[#Attrs]]179; CHECK-SPV-IR: declare spir_func i32 @_Z32__spirv_GroupNonUniformBitwiseOriii(i32, i32, i32) #[[#Attrs]]180; CHECK-SPV-IR: declare spir_func i32 @_Z33__spirv_GroupNonUniformBitwiseXoriii(i32, i32, i32) #[[#Attrs]]181; CHECK-SPV-IR: declare spir_func i1 @_Z33__spirv_GroupNonUniformLogicalAndiib(i32, i32, i1) #[[#Attrs]]182; CHECK-SPV-IR: declare spir_func i1 @_Z32__spirv_GroupNonUniformLogicalOriib(i32, i32, i1) #[[#Attrs]]183; CHECK-SPV-IR: declare spir_func i1 @_Z33__spirv_GroupNonUniformLogicalXoriib(i32, i32, i1) #[[#Attrs]]184; CHECK-SPV-IR: declare spir_func i32 @_Z32__spirv_GroupNonUniformRotateKHRiii(i32, i32, i32) #[[#Attrs]]185 186; CHECK-COMMON: attributes #[[#Attrs]] =187; CHECK-COMMON-SAME: convergent188 189; SPIR-V190; Version: 1.3191; Generator: Khronos LLVM/SPIR-V Translator; 14192; Bound: 97193; Schema: 0194               OpCapability Addresses195               OpCapability Linkage196               OpCapability Kernel197               OpCapability ImageBasic198               OpCapability ImageReadWrite199               OpCapability Groups200               OpCapability Int16201               OpCapability GroupNonUniform202               OpCapability GroupNonUniformVote203               OpCapability GroupNonUniformArithmetic204               OpCapability GroupNonUniformBallot205               OpCapability SubgroupShuffleINTEL206               OpCapability SubgroupBufferBlockIOINTEL207               OpCapability SubgroupImageBlockIOINTEL208               OpCapability GroupNonUniformRotateKHR209               OpExtension "SPV_INTEL_subgroups"210               OpExtension "SPV_KHR_subgroup_rotate"211          %1 = OpExtInstImport "OpenCL.std"212               OpMemoryModel Physical32 OpenCL213               OpSource OpenCL_C 200000214               OpName %foo "foo"215               OpName %x "x"216               OpName %coord "coord"217               OpName %c "c"218               OpName %s "s"219               OpName %f "f"220               OpName %n "n"221               OpName %p "p"222               OpName %image "image"223               OpName %v "v"224               OpName %entry "entry"225               OpName %call "call"226               OpName %call1 "call1"227               OpName %call2 "call2"228               OpName %call3 "call3"229               OpName %call4 "call4"230               OpName %call5 "call5"231               OpName %call6 "call6"232               OpName %call7 "call7"233               OpName %call8 "call8"234               OpName %call9 "call9"235               OpName %call10 "call10"236               OpName %call11 "call11"237               OpName %call12 "call12"238               OpName %call13 "call13"239               OpName %call14 "call14"240               OpName %call15 "call15"241               OpName %call16 "call16"242               OpName %call17 "call17"243               OpName %call18 "call18"244               OpName %call19 "call19"245               OpName %call20 "call20"246               OpName %call21 "call21"247               OpName %call22 "call22"248               OpName %call23 "call23"249               OpName %call24 "call24"250               OpName %call25 "call25"251               OpName %call26 "call26"252               OpName %call30 "call30"253               OpName %call31 "call31"254               OpName %call32 "call32"255               OpName %call33 "call33"256               OpName %call34 "call34"257               OpName %call35 "call35"258               OpName %call36 "call36"259               OpName %call37 "call37"260               OpName %call38 "call38"261               OpName %call39 "call39"262               OpName %call40 "call40"263               OpName %call41 "call41"264               OpName %call42 "call42"265               OpName %call43 "call43"266               OpName %call44 "call44"267               OpName %call45 "call45"268               OpName %call46 "call46"269               OpName %call47 "call47"270               OpName %call48 "call48"271               OpName %call49 "call49"272               OpName %call50 "call50"273               OpDecorate %foo LinkageAttributes "foo" Export274               OpDecorate %s FuncParamAttr Sext275       %uint = OpTypeInt 32 0276     %ushort = OpTypeInt 16 0277     %uint_0 = OpConstant %uint 0278     %uint_2 = OpConstant %uint 2279     %uint_1 = OpConstant %uint 1280     %uint_3 = OpConstant %uint 3281   %uint_272 = OpConstant %uint 272282       %void = OpTypeVoid283     %v2uint = OpTypeVector %uint 2284      %float = OpTypeFloat 32285%_ptr_CrossWorkgroup_uint = OpTypePointer CrossWorkgroup %uint286          %8 = OpTypeImage %void 2D 0 0 0 0 Unknown ReadWrite287     %v4uint = OpTypeVector %uint 4288         %10 = OpTypeFunction %void %uint %v2uint %uint %ushort %float %uint %_ptr_CrossWorkgroup_uint %8 %v4uint289       %bool = OpTypeBool290        %foo = OpFunction %void None %10291          %x = OpFunctionParameter %uint292      %coord = OpFunctionParameter %v2uint293          %c = OpFunctionParameter %uint294          %s = OpFunctionParameter %ushort295          %f = OpFunctionParameter %float296          %n = OpFunctionParameter %uint297          %p = OpFunctionParameter %_ptr_CrossWorkgroup_uint298      %image = OpFunctionParameter %8299          %v = OpFunctionParameter %v4uint300      %entry = OpLabel301         %24 = OpINotEqual %bool %x %uint_0302         %26 = OpGroupAll %bool %uint_2 %24303       %call = OpSelect %uint %26 %uint_1 %uint_0304         %29 = OpINotEqual %bool %x %uint_0305         %30 = OpGroupAny %bool %uint_2 %29306      %call1 = OpSelect %uint %30 %uint_1 %uint_0307      %call2 = OpGroupBroadcast %uint %uint_2 %x %n308               OpControlBarrier %uint_3 %uint_3 %uint_272309         %35 = OpINotEqual %bool %x %uint_0310         %36 = OpGroupAll %bool %uint_3 %35311      %call3 = OpSelect %uint %36 %uint_1 %uint_0312         %38 = OpINotEqual %bool %x %uint_0313         %39 = OpGroupAny %bool %uint_3 %38314      %call4 = OpSelect %uint %39 %uint_1 %uint_0315      %call5 = OpGroupBroadcast %uint %uint_3 %x %c316      %call6 = OpGroupIAdd %uint %uint_3 Reduce %x317      %call7 = OpGroupFAdd %float %uint_3 Reduce %f318      %call8 = OpGroupSMin %uint %uint_3 Reduce %x319      %call9 = OpGroupUMin %uint %uint_3 Reduce %c320     %call10 = OpGroupFMin %float %uint_3 Reduce %f321     %call11 = OpGroupSMax %uint %uint_3 Reduce %x322     %call12 = OpGroupUMax %uint %uint_3 Reduce %c323     %call13 = OpGroupFMax %float %uint_3 Reduce %f324     %call14 = OpSubgroupShuffleINTEL %uint %x %c325     %call15 = OpSubgroupShuffleDownINTEL %uint %x %x %c326     %call16 = OpSubgroupShuffleUpINTEL %uint %x %x %c327     %call17 = OpSubgroupShuffleXorINTEL %uint %x %c328     %call18 = OpSubgroupBlockReadINTEL %uint %p329               OpSubgroupBlockWriteINTEL %p %c330     %call19 = OpSubgroupImageBlockReadINTEL %uint %image %coord331               OpSubgroupImageBlockWriteINTEL %image %coord %c332         %56 = OpGroupNonUniformElect %bool %uint_3333     %call20 = OpSelect %uint %56 %uint_1 %uint_0334         %58 = OpINotEqual %bool %x %uint_0335         %59 = OpGroupNonUniformAll %bool %uint_3 %58336     %call21 = OpSelect %uint %59 %uint_1 %uint_0337         %61 = OpINotEqual %bool %x %uint_0338         %62 = OpGroupNonUniformAny %bool %uint_3 %61339     %call22 = OpSelect %uint %62 %uint_1 %uint_0340         %64 = OpGroupNonUniformAllEqual %bool %uint_3 %x341     %call23 = OpSelect %uint %64 %uint_1 %uint_0342     %call24 = OpGroupNonUniformBroadcast %uint %uint_3 %x %uint_1343     %call25 = OpGroupNonUniformBroadcastFirst %uint %uint_3 %x344         %68 = OpINotEqual %bool %x %uint_0345     %call26 = OpGroupNonUniformBallot %v4uint %uint_3 %68346     %call30 = OpGroupNonUniformBallotBitCount %uint %uint_3 InclusiveScan %v347     %call31 = OpGroupNonUniformBallotBitCount %uint %uint_3 ExclusiveScan %v348     %call32 = OpGroupNonUniformBallotFindLSB %uint %uint_3 %v349     %call33 = OpGroupNonUniformBallotFindMSB %uint %uint_3 %v350     %call34 = OpGroupNonUniformIAdd %uint %uint_3 Reduce %x351     %call35 = OpGroupNonUniformFAdd %float %uint_3 Reduce %f352     %call36 = OpGroupNonUniformSMin %uint %uint_3 InclusiveScan %x353     %call37 = OpGroupNonUniformUMin %uint %uint_3 InclusiveScan %c354     %call38 = OpGroupNonUniformFMin %float %uint_3 InclusiveScan %f355     %call39 = OpGroupNonUniformSMax %uint %uint_3 ExclusiveScan %x356     %call40 = OpGroupNonUniformUMax %uint %uint_3 ExclusiveScan %c357     %call41 = OpGroupNonUniformFMax %float %uint_3 ExclusiveScan %f358     %call42 = OpGroupNonUniformIMul %uint %uint_3 Reduce %x359     %call43 = OpGroupNonUniformFMul %float %uint_3 Reduce %f360     %call44 = OpGroupNonUniformBitwiseAnd %uint %uint_3 Reduce %x361     %call45 = OpGroupNonUniformBitwiseOr %uint %uint_3 InclusiveScan %x362     %call46 = OpGroupNonUniformBitwiseXor %uint %uint_3 ExclusiveScan %x363         %87 = OpINotEqual %bool %x %uint_0364         %88 = OpGroupNonUniformLogicalAnd %bool %uint_3 Reduce %87365     %call47 = OpSelect %uint %88 %uint_1 %uint_0366         %90 = OpINotEqual %bool %x %uint_0367         %91 = OpGroupNonUniformLogicalOr %bool %uint_3 InclusiveScan %90368     %call48 = OpSelect %uint %91 %uint_1 %uint_0369         %93 = OpINotEqual %bool %x %uint_0370         %94 = OpGroupNonUniformLogicalXor %bool %uint_3 ExclusiveScan %93371     %call49 = OpSelect %uint %94 %uint_1 %uint_0372     %call50 = OpGroupNonUniformRotateKHR %uint %uint_3 %c %x373               OpReturn374               OpFunctionEnd375