1; SPIR-V 2; Version: 1.0 3; Generator: Khronos Glslang Reference Front End; 8 4; Bound: 108 5; Schema: 0 6 OpCapability Shader 7 %1 = OpExtInstImport "GLSL.std.450" 8 OpMemoryModel Logical GLSL450 9 OpEntryPoint GLCompute %main "main" %gl_NumWorkGroups %gl_WorkGroupID %gl_LocalInvocationID %gl_GlobalInvocationID %gl_LocalInvocationIndex 10 OpExecutionMode %main LocalSize 2 5 7 11 OpSource ESSL 310 12 OpName %main "main" 13 OpName %bName "bName" 14 OpMemberName %bName 0 "size" 15 OpMemberName %bName 1 "count" 16 OpMemberName %bName 2 "data" 17 OpName %bInst "bInst" 18 OpName %s "s" 19 OpName %arrX "arrX" 20 OpName %arrY "arrY" 21 OpName %arrZ "arrZ" 22 OpName %gl_NumWorkGroups "gl_NumWorkGroups" 23 OpName %gl_WorkGroupID "gl_WorkGroupID" 24 OpName %gl_LocalInvocationID "gl_LocalInvocationID" 25 OpName %gl_GlobalInvocationID "gl_GlobalInvocationID" 26 OpName %gl_LocalInvocationIndex "gl_LocalInvocationIndex" 27 OpDecorate %_runtimearr_v4float ArrayStride 16 28 OpMemberDecorate %bName 0 Offset 0 29 OpMemberDecorate %bName 1 Offset 16 30 OpMemberDecorate %bName 2 Offset 32 31 OpDecorate %bName BufferBlock 32 OpDecorate %bInst DescriptorSet 0 33 OpDecorate %bInst Binding 0 34 OpDecorate %39 SpecId 18 35 OpDecorate %41 SpecId 19 36 OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize 37 OpDecorate %gl_NumWorkGroups BuiltIn NumWorkgroups 38 OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId 39 OpDecorate %gl_LocalInvocationID BuiltIn LocalInvocationId 40 OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId 41 OpDecorate %gl_LocalInvocationIndex BuiltIn LocalInvocationIndex 42 %void = OpTypeVoid 43 %3 = OpTypeFunction %void 44 %uint = OpTypeInt 32 0 45 %uint_2 = OpConstant %uint 2 46 %uint_264 = OpConstant %uint 264 47 %int = OpTypeInt 32 1 48 %v3uint = OpTypeVector %uint 3 49 %float = OpTypeFloat 32 50 %v4float = OpTypeVector %float 4 51%_runtimearr_v4float = OpTypeRuntimeArray %v4float 52 %bName = OpTypeStruct %int %v3uint %_runtimearr_v4float 53%_ptr_Uniform_bName = OpTypePointer Uniform %bName 54 %bInst = OpVariable %_ptr_Uniform_bName Uniform 55 %int_2 = OpConstant %int 2 56 %int_0 = OpConstant %int 0 57%_ptr_Uniform_int = OpTypePointer Uniform %int 58 %float_7 = OpConstant %float 7 59 %24 = OpConstantComposite %v4float %float_7 %float_7 %float_7 %float_7 60%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 61 %uint_1 = OpConstant %uint 1 62 %uint_3400 = OpConstant %uint 3400 63 %uint_72 = OpConstant %uint 72 64%uint_197645 = OpConstant %uint 197645 65%_arr_v4float_uint_197645 = OpTypeArray %v4float %uint_197645 66%_ptr_Workgroup__arr_v4float_uint_197645 = OpTypePointer Workgroup %_arr_v4float_uint_197645 67 %s = OpVariable %_ptr_Workgroup__arr_v4float_uint_197645 Workgroup 68 %int_3 = OpConstant %int 3 69 %float_0 = OpConstant %float 0 70 %39 = OpSpecConstant %uint 2 71 %uint_5 = OpConstant %uint 5 72 %41 = OpSpecConstant %uint 7 73%gl_WorkGroupSize = OpSpecConstantComposite %v3uint %39 %uint_5 %41 74 %uint_0 = OpConstant %uint 0 75%_arr_int_44 = OpTypeArray %int %44 76%_ptr_Private__arr_int_44 = OpTypePointer Private %_arr_int_44 77 %arrX = OpVariable %_ptr_Private__arr_int_44 Private 78%_ptr_Private_int = OpTypePointer Private %int 79%_arr_int_52 = OpTypeArray %int %52 80%_ptr_Private__arr_int_52 = OpTypePointer Private %_arr_int_52 81 %arrY = OpVariable %_ptr_Private__arr_int_52 Private 82%_arr_int_59 = OpTypeArray %int %59 83%_ptr_Private__arr_int_59 = OpTypePointer Private %_arr_int_59 84 %arrZ = OpVariable %_ptr_Private__arr_int_59 Private 85%_ptr_Workgroup_v4float = OpTypePointer Workgroup %v4float 86 %int_1 = OpConstant %int 1 87%_ptr_Input_v3uint = OpTypePointer Input %v3uint 88%gl_NumWorkGroups = OpVariable %_ptr_Input_v3uint Input 89%gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input 90%gl_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input 91%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input 92%_ptr_Input_uint = OpTypePointer Input %uint 93%gl_LocalInvocationIndex = OpVariable %_ptr_Input_uint Input 94%_ptr_Uniform_v3uint = OpTypePointer Uniform %v3uint 95 %int_5 = OpConstant %int 5 96 %int_197645 = OpConstant %int 197645 97 %main = OpFunction %void None %3 98 %5 = OpLabel 99 OpControlBarrier %uint_2 %uint_2 %uint_264 100 %20 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 101 %21 = OpLoad %int %20 102 %22 = OpSDiv %int %21 %int_2 103 %26 = OpAccessChain %_ptr_Uniform_v4float %bInst %int_2 %22 104 %27 = OpLoad %v4float %26 105 %28 = OpFMul %v4float %27 %24 106 %29 = OpAccessChain %_ptr_Uniform_v4float %bInst %int_2 %22 107 OpStore %29 %28 108 OpMemoryBarrier %uint_1 %uint_3400 109 OpMemoryBarrier %uint_2 %uint_3400 110 OpMemoryBarrier %uint_1 %uint_264 111 OpMemoryBarrier %uint_1 %uint_72 112 %44 = OpCompositeExtract %uint %gl_WorkGroupSize 0 113 %49 = OpAccessChain %_ptr_Private_int %arrX %int_0 114 %50 = OpLoad %int %49 115 %51 = OpConvertSToF %float %50 116 %52 = OpCompositeExtract %uint %gl_WorkGroupSize 1 117 %56 = OpAccessChain %_ptr_Private_int %arrY %int_0 118 %57 = OpLoad %int %56 119 %58 = OpConvertSToF %float %57 120 %59 = OpCompositeExtract %uint %gl_WorkGroupSize 2 121 %63 = OpAccessChain %_ptr_Private_int %arrZ %int_0 122 %64 = OpLoad %int %63 123 %65 = OpConvertSToF %float %64 124 %66 = OpCompositeConstruct %v4float %float_0 %51 %58 %65 125 %68 = OpAccessChain %_ptr_Workgroup_v4float %s %int_3 126 OpStore %68 %66 127 %72 = OpLoad %v3uint %gl_NumWorkGroups 128 %73 = OpIAdd %v3uint %72 %gl_WorkGroupSize 129 %75 = OpLoad %v3uint %gl_WorkGroupID 130 %76 = OpIAdd %v3uint %73 %75 131 %78 = OpLoad %v3uint %gl_LocalInvocationID 132 %79 = OpIAdd %v3uint %76 %78 133 %81 = OpLoad %v3uint %gl_GlobalInvocationID 134 %84 = OpLoad %uint %gl_LocalInvocationIndex 135 %85 = OpCompositeConstruct %v3uint %84 %84 %84 136 %86 = OpIMul %v3uint %81 %85 137 %87 = OpIAdd %v3uint %79 %86 138 %89 = OpAccessChain %_ptr_Uniform_v3uint %bInst %int_1 139 OpStore %89 %87 140 %90 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 141 %91 = OpAtomicIAdd %int %90 %uint_1 %uint_0 %int_2 142 %92 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 143 %93 = OpAtomicSMin %int %92 %uint_1 %uint_0 %int_2 144 %94 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 145 %95 = OpAtomicSMax %int %94 %uint_1 %uint_0 %int_2 146 %96 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 147 %97 = OpAtomicAnd %int %96 %uint_1 %uint_0 %int_2 148 %98 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 149 %99 = OpAtomicOr %int %98 %uint_1 %uint_0 %int_2 150 %100 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 151 %101 = OpAtomicXor %int %100 %uint_1 %uint_0 %int_2 152 %102 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 153 %103 = OpAtomicExchange %int %102 %uint_1 %uint_0 %int_2 154 %104 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 155 %106 = OpAtomicCompareExchange %int %104 %uint_1 %uint_0 %uint_0 %int_2 %int_5 156 OpReturn 157 OpFunctionEnd 158