1; SPIR-V 2; Version: 1.0 3; Generator: Khronos Glslang Reference Front End; 7 4; Bound: 26 5; Schema: 0 6 OpCapability Shader 7 OpMemoryModel Logical GLSL450 8 OpEntryPoint GLCompute %main "main" 9 OpExecutionMode %main LocalSize 1 1 1 10 OpSource GLSL 450 11 OpName %main "main" 12 OpName %SSBO "SSBO" 13 OpMemberName %SSBO 0 "ints" 14 OpMemberName %SSBO 1 "uints" 15 OpName %_ "" 16 OpMemberDecorate %SSBO 0 Offset 0 17 OpMemberDecorate %SSBO 1 Offset 16 18 OpDecorate %SSBO BufferBlock 19 OpDecorate %_ DescriptorSet 0 20 OpDecorate %_ Binding 0 21 %void = OpTypeVoid 22 %3 = OpTypeFunction %void 23 %int = OpTypeInt 32 1 24 %v4int = OpTypeVector %int 4 25 %uint = OpTypeInt 32 0 26 %v4uint = OpTypeVector %uint 4 27 28 %int_1 = OpConstant %int 1 29 %uint_11 = OpConstant %uint 11 30 31 %SSBO = OpTypeStruct %v4int %v4uint 32%_ptr_Uniform_SSBO = OpTypePointer Uniform %SSBO 33 %_ = OpVariable %_ptr_Uniform_SSBO Uniform 34 %int_0 = OpConstant %int 0 35%_ptr_Uniform_v4int = OpTypePointer Uniform %v4int 36%_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint 37 %main = OpFunction %void None %3 38 %5 = OpLabel 39 %ints_ptr = OpAccessChain %_ptr_Uniform_v4int %_ %int_0 40 %uints_ptr = OpAccessChain %_ptr_Uniform_v4uint %_ %int_1 41 %ints = OpLoad %v4int %ints_ptr 42 %uints = OpLoad %v4uint %uints_ptr 43 44 %ints_alt = OpVectorShuffle %v4int %ints %ints 3 2 1 0 45 %uints_alt = OpVectorShuffle %v4uint %uints %uints 3 2 1 0 46 47 %int_to_int_popcount = OpBitCount %v4int %ints 48 %int_to_uint_popcount = OpBitCount %v4uint %ints 49 %uint_to_int_popcount = OpBitCount %v4int %uints 50 %uint_to_uint_popcount = OpBitCount %v4uint %uints 51 52 ; BitReverse must have matching types w.r.t. sign, yay. 53 %int_to_int_reverse = OpBitReverse %v4int %ints 54 ;%int_to_uint_reverse = OpBitReverse %v4uint %ints 55 ;%uint_to_int_reverse = OpBitReverse %v4int %uints 56 %uint_to_uint_reverse = OpBitReverse %v4uint %uints 57 58 ; Base and Result must match. 59 %int_to_int_sbit = OpBitFieldSExtract %v4int %ints %int_1 %uint_11 60 ;%int_to_uint_sbit = OpBitFieldSExtract %v4uint %ints %offset %count 61 ;%uint_to_int_sbit = OpBitFieldSExtract %v4int %uints %offset %count 62 %uint_to_uint_sbit = OpBitFieldSExtract %v4uint %uints %uint_11 %int_1 63 64 ; Base and Result must match. 65 %int_to_int_ubit = OpBitFieldUExtract %v4int %ints %int_1 %uint_11 66 ;%int_to_uint_ubit = OpBitFieldUExtract %v4uint %ints %offset %count 67 ;%uint_to_int_ubit = OpBitFieldUExtract %v4int %uints %offset %count 68 %uint_to_uint_ubit = OpBitFieldUExtract %v4uint %uints %uint_11 %int_1 69 70 %int_to_int_insert = OpBitFieldInsert %v4int %ints %ints_alt %int_1 %uint_11 71 %uint_to_uint_insert = OpBitFieldInsert %v4uint %uints %uints_alt %uint_11 %int_1 72 73 OpStore %ints_ptr %int_to_int_popcount 74 OpStore %uints_ptr %int_to_uint_popcount 75 OpStore %ints_ptr %uint_to_int_popcount 76 OpStore %uints_ptr %uint_to_uint_popcount 77 78 OpStore %ints_ptr %int_to_int_reverse 79 ;OpStore %uints_ptr %int_to_uint_reverse 80 ;OpStore %ints_ptr %uint_to_int_reverse 81 OpStore %uints_ptr %uint_to_uint_reverse 82 83 OpStore %ints_ptr %int_to_int_sbit 84 ;OpStore %uints_ptr %int_to_uint_sbit 85 ;OpStore %ints_ptr %uint_to_int_sbit 86 OpStore %uints_ptr %uint_to_uint_sbit 87 88 OpStore %ints_ptr %int_to_int_ubit 89 ;OpStore %uints_ptr %int_to_uint_ubit 90 ;OpStore %ints_ptr %uint_to_int_ubit 91 OpStore %uints_ptr %uint_to_uint_ubit 92 93 OpStore %ints_ptr %int_to_int_insert 94 OpStore %uints_ptr %uint_to_uint_insert 95 96 OpReturn 97 OpFunctionEnd 98