1; SPIR-V 2; Version: 1.3 3; Generator: Unknown(30017); 21022 4; Bound: 233 5; Schema: 0 6 OpCapability Shader 7 OpCapability SampledBuffer 8 OpCapability ImageBuffer 9 OpCapability ImageQuery 10 OpCapability StorageImageWriteWithoutFormat 11 OpCapability GroupNonUniformBallot 12 OpCapability RuntimeDescriptorArray 13 OpCapability UniformTexelBufferArrayDynamicIndexing 14 OpCapability StorageTexelBufferArrayDynamicIndexing 15 OpCapability UniformTexelBufferArrayNonUniformIndexing 16 OpCapability StorageTexelBufferArrayNonUniformIndexing 17 OpCapability PhysicalStorageBufferAddresses 18 OpExtension "SPV_EXT_descriptor_indexing" 19 OpExtension "SPV_KHR_physical_storage_buffer" 20 OpMemoryModel PhysicalStorageBuffer64 GLSL450 21 OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID 22 OpExecutionMode %main LocalSize 1 1 1 23 OpName %main "main" 24 OpName %RootConstants "RootConstants" 25 OpName %registers "registers" 26 OpName %SSBO_Offsets "SSBO_Offsets" 27 OpDecorate %RootConstants Block 28 OpMemberDecorate %RootConstants 0 Offset 0 29 OpMemberDecorate %RootConstants 1 Offset 4 30 OpMemberDecorate %RootConstants 2 Offset 8 31 OpMemberDecorate %RootConstants 3 Offset 12 32 OpMemberDecorate %RootConstants 4 Offset 16 33 OpMemberDecorate %RootConstants 5 Offset 20 34 OpMemberDecorate %RootConstants 6 Offset 24 35 OpMemberDecorate %RootConstants 7 Offset 28 36 OpDecorate %_runtimearr_v2uint ArrayStride 8 37 OpMemberDecorate %SSBO_Offsets 0 Offset 0 38 OpDecorate %SSBO_Offsets Block 39 OpDecorate %13 DescriptorSet 0 40 OpDecorate %13 Binding 0 41 OpDecorate %13 NonWritable 42 OpDecorate %13 Restrict 43 OpDecorate %18 DescriptorSet 1 44 OpDecorate %18 Binding 0 45 OpDecorate %22 DescriptorSet 4 46 OpDecorate %22 Binding 0 47 OpDecorate %26 DescriptorSet 4 48 OpDecorate %26 Binding 0 49 OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId 50 OpDecorate %148 NonUniform 51 OpDecorate %149 NonUniform 52 OpDecorate %172 NonUniform 53 OpDecorate %173 NonUniform 54 OpDecorate %196 NonUniform 55 OpDecorate %197 NonUniform 56 OpDecorate %205 NonUniform 57 OpDecorate %212 NonUniform 58 %void = OpTypeVoid 59 %2 = OpTypeFunction %void 60 %uint = OpTypeInt 32 0 61%RootConstants = OpTypeStruct %uint %uint %uint %uint %uint %uint %uint %uint 62%_ptr_PushConstant_RootConstants = OpTypePointer PushConstant %RootConstants 63 %registers = OpVariable %_ptr_PushConstant_RootConstants PushConstant 64 %v2uint = OpTypeVector %uint 2 65%_runtimearr_v2uint = OpTypeRuntimeArray %v2uint 66%SSBO_Offsets = OpTypeStruct %_runtimearr_v2uint 67%_ptr_StorageBuffer_SSBO_Offsets = OpTypePointer StorageBuffer %SSBO_Offsets 68 %13 = OpVariable %_ptr_StorageBuffer_SSBO_Offsets StorageBuffer 69 %float = OpTypeFloat 32 70 %15 = OpTypeImage %float Buffer 0 0 0 1 Unknown 71%_runtimearr_15 = OpTypeRuntimeArray %15 72%_ptr_UniformConstant__runtimearr_15 = OpTypePointer UniformConstant %_runtimearr_15 73 %18 = OpVariable %_ptr_UniformConstant__runtimearr_15 UniformConstant 74 %19 = OpTypeImage %float Buffer 0 0 0 2 R32f 75%_runtimearr_19 = OpTypeRuntimeArray %19 76%_ptr_UniformConstant__runtimearr_19 = OpTypePointer UniformConstant %_runtimearr_19 77 %22 = OpVariable %_ptr_UniformConstant__runtimearr_19 UniformConstant 78 %23 = OpTypeImage %uint Buffer 0 0 0 2 R32ui 79%_runtimearr_23 = OpTypeRuntimeArray %23 80%_ptr_UniformConstant__runtimearr_23 = OpTypePointer UniformConstant %_runtimearr_23 81 %26 = OpVariable %_ptr_UniformConstant__runtimearr_23 UniformConstant 82%_ptr_UniformConstant_23 = OpTypePointer UniformConstant %23 83%_ptr_PushConstant_uint = OpTypePointer PushConstant %uint 84 %uint_4 = OpConstant %uint 4 85 %uint_2 = OpConstant %uint 2 86 %uint_3 = OpConstant %uint 3 87%_ptr_StorageBuffer_v2uint = OpTypePointer StorageBuffer %v2uint 88 %uint_0 = OpConstant %uint 0 89%_ptr_UniformConstant_19 = OpTypePointer UniformConstant %19 90%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 91 %uint_1 = OpConstant %uint 1 92 %v3uint = OpTypeVector %uint 3 93%_ptr_Input_v3uint = OpTypePointer Input %v3uint 94%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input 95%_ptr_Input_uint = OpTypePointer Input %uint 96 %bool = OpTypeBool 97%uint_4294967295 = OpConstant %uint 4294967295 98 %v4float = OpTypeVector %float 4 99 %uint_1024 = OpConstant %uint 1024 100 %uint_2048 = OpConstant %uint 2048 101%_ptr_Image_uint = OpTypePointer Image %uint 102 %uint_40 = OpConstant %uint 40 103 %uint_50 = OpConstant %uint 50 104 %uint_70 = OpConstant %uint 70 105 %main = OpFunction %void None %2 106 %4 = OpLabel 107 OpBranch %231 108 %231 = OpLabel 109 %30 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4 110 %32 = OpLoad %uint %30 111 %33 = OpIAdd %uint %32 %uint_2 112 %28 = OpAccessChain %_ptr_UniformConstant_23 %26 %33 113 %35 = OpLoad %23 %28 114 %36 = OpGroupNonUniformBroadcastFirst %uint %uint_3 %33 115 %39 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %36 116 %41 = OpLoad %v2uint %39 117 %44 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4 118 %45 = OpLoad %uint %44 119 %43 = OpAccessChain %_ptr_UniformConstant_19 %22 %45 120 %46 = OpLoad %19 %43 121 %47 = OpGroupNonUniformBroadcastFirst %uint %uint_3 %45 122 %48 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %47 123 %49 = OpLoad %v2uint %48 124 %52 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_1 125 %54 = OpLoad %uint %52 126 %55 = OpIAdd %uint %54 %uint_1 127 %51 = OpAccessChain %_ptr_UniformConstant_15 %18 %55 128 %56 = OpLoad %15 %51 129 %57 = OpGroupNonUniformBroadcastFirst %uint %uint_3 %55 130 %58 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %57 131 %59 = OpLoad %v2uint %58 132 %64 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0 133 %65 = OpLoad %uint %64 134 %66 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_1 135 %67 = OpLoad %uint %66 136 %68 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_2 137 %69 = OpLoad %uint %68 138 %70 = OpIAdd %uint %65 %uint_4 139 %71 = OpCompositeExtract %uint %49 0 140 %72 = OpCompositeExtract %uint %49 1 141 %73 = OpIAdd %uint %70 %71 142 %75 = OpULessThan %bool %70 %72 143 %76 = OpSelect %uint %75 %73 %uint_4294967295 144 %79 = OpImageRead %v4float %46 %76 145 %80 = OpCompositeExtract %float %79 0 146 %81 = OpCompositeExtract %float %79 1 147 %82 = OpCompositeExtract %float %79 2 148 %83 = OpCompositeExtract %float %79 3 149 %84 = OpIAdd %uint %65 %uint_1024 150 %86 = OpCompositeExtract %uint %49 0 151 %87 = OpCompositeExtract %uint %49 1 152 %88 = OpIAdd %uint %84 %86 153 %89 = OpULessThan %bool %84 %87 154 %90 = OpSelect %uint %89 %88 %uint_4294967295 155 %91 = OpCompositeConstruct %v4float %80 %81 %82 %83 156 OpImageWrite %46 %90 %91 157 %92 = OpIAdd %uint %65 %uint_2 158 %93 = OpCompositeExtract %uint %59 0 159 %94 = OpCompositeExtract %uint %59 1 160 %95 = OpIAdd %uint %92 %93 161 %96 = OpULessThan %bool %92 %94 162 %97 = OpSelect %uint %96 %95 %uint_4294967295 163 %98 = OpImageFetch %v4float %56 %97 164 %99 = OpCompositeExtract %float %98 0 165 %100 = OpCompositeExtract %float %98 1 166 %101 = OpCompositeExtract %float %98 2 167 %102 = OpCompositeExtract %float %98 3 168 %103 = OpIAdd %uint %65 %uint_2048 169 %105 = OpCompositeExtract %uint %49 0 170 %106 = OpCompositeExtract %uint %49 1 171 %107 = OpIAdd %uint %103 %105 172 %108 = OpULessThan %bool %103 %106 173 %109 = OpSelect %uint %108 %107 %uint_4294967295 174 %110 = OpCompositeConstruct %v4float %99 %100 %101 %102 175 OpImageWrite %46 %109 %110 176 %111 = OpCompositeExtract %uint %41 0 177 %112 = OpCompositeExtract %uint %41 1 178 %113 = OpIAdd %uint %65 %111 179 %114 = OpULessThan %bool %65 %112 180 %115 = OpSelect %uint %114 %113 %uint_4294967295 181 %117 = OpImageTexelPointer %_ptr_Image_uint %28 %115 %uint_0 182 %118 = OpAtomicIAdd %uint %117 %uint_1 %uint_0 %uint_40 183 %120 = OpCompositeExtract %uint %41 0 184 %121 = OpCompositeExtract %uint %41 1 185 %122 = OpIAdd %uint %67 %120 186 %123 = OpULessThan %bool %67 %121 187 %124 = OpSelect %uint %123 %122 %uint_4294967295 188 %125 = OpImageTexelPointer %_ptr_Image_uint %28 %124 %uint_0 189 %126 = OpAtomicCompareExchange %uint %125 %uint_1 %uint_0 %uint_0 %uint_50 %uint_40 190 %128 = OpCompositeExtract %uint %49 1 191 %129 = OpConvertUToF %float %128 192 %130 = OpCompositeExtract %uint %49 0 193 %131 = OpCompositeExtract %uint %49 1 194 %132 = OpIAdd %uint %uint_0 %130 195 %133 = OpULessThan %bool %uint_0 %131 196 %134 = OpSelect %uint %133 %132 %uint_4294967295 197 %135 = OpCompositeConstruct %v4float %129 %129 %129 %129 198 OpImageWrite %46 %134 %135 199 %136 = OpCompositeExtract %uint %59 1 200 %137 = OpConvertUToF %float %136 201 %138 = OpCompositeExtract %uint %49 0 202 %139 = OpCompositeExtract %uint %49 1 203 %140 = OpIAdd %uint %uint_1 %138 204 %141 = OpULessThan %bool %uint_1 %139 205 %142 = OpSelect %uint %141 %140 %uint_4294967295 206 %143 = OpCompositeConstruct %v4float %137 %137 %137 %137 207 OpImageWrite %46 %142 %143 208 %144 = OpIAdd %uint %69 %uint_0 209 %146 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4 210 %147 = OpLoad %uint %146 211 %148 = OpIAdd %uint %147 %144 212 %145 = OpAccessChain %_ptr_UniformConstant_19 %22 %148 213 %149 = OpLoad %19 %145 214 %150 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %148 215 %151 = OpLoad %v2uint %150 216 %152 = OpCompositeExtract %uint %151 0 217 %153 = OpCompositeExtract %uint %151 1 218 %154 = OpIAdd %uint %70 %152 219 %155 = OpULessThan %bool %70 %153 220 %156 = OpSelect %uint %155 %154 %uint_4294967295 221 %157 = OpImageRead %v4float %149 %156 222 %158 = OpCompositeExtract %float %157 0 223 %159 = OpCompositeExtract %float %157 1 224 %160 = OpCompositeExtract %float %157 2 225 %161 = OpCompositeExtract %float %157 3 226 %162 = OpCompositeExtract %uint %151 0 227 %163 = OpCompositeExtract %uint %151 1 228 %164 = OpIAdd %uint %84 %162 229 %165 = OpULessThan %bool %84 %163 230 %166 = OpSelect %uint %165 %164 %uint_4294967295 231 %167 = OpCompositeConstruct %v4float %158 %159 %160 %161 232 OpImageWrite %149 %166 %167 233 %168 = OpIAdd %uint %69 %uint_0 234 %170 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_1 235 %171 = OpLoad %uint %170 236 %172 = OpIAdd %uint %171 %168 237 %169 = OpAccessChain %_ptr_UniformConstant_15 %18 %172 238 %173 = OpLoad %15 %169 239 %174 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %172 240 %175 = OpLoad %v2uint %174 241 %176 = OpCompositeExtract %uint %175 0 242 %177 = OpCompositeExtract %uint %175 1 243 %178 = OpIAdd %uint %70 %176 244 %179 = OpULessThan %bool %70 %177 245 %180 = OpSelect %uint %179 %178 %uint_4294967295 246 %181 = OpImageFetch %v4float %173 %180 247 %182 = OpCompositeExtract %float %181 0 248 %183 = OpCompositeExtract %float %181 1 249 %184 = OpCompositeExtract %float %181 2 250 %185 = OpCompositeExtract %float %181 3 251 %186 = OpCompositeExtract %uint %151 0 252 %187 = OpCompositeExtract %uint %151 1 253 %188 = OpIAdd %uint %103 %186 254 %189 = OpULessThan %bool %103 %187 255 %190 = OpSelect %uint %189 %188 %uint_4294967295 256 %191 = OpCompositeConstruct %v4float %182 %183 %184 %185 257 OpImageWrite %149 %190 %191 258 %192 = OpIAdd %uint %69 %uint_0 259 %194 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4 260 %195 = OpLoad %uint %194 261 %196 = OpIAdd %uint %195 %192 262 %193 = OpAccessChain %_ptr_UniformConstant_23 %26 %196 263 %197 = OpLoad %23 %193 264 %198 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %196 265 %199 = OpLoad %v2uint %198 266 %200 = OpCompositeExtract %uint %199 0 267 %201 = OpCompositeExtract %uint %199 1 268 %202 = OpIAdd %uint %67 %200 269 %203 = OpULessThan %bool %67 %201 270 %204 = OpSelect %uint %203 %202 %uint_4294967295 271 %205 = OpImageTexelPointer %_ptr_Image_uint %193 %204 %uint_0 272 %206 = OpAtomicIAdd %uint %205 %uint_1 %uint_0 %uint_40 273 %207 = OpCompositeExtract %uint %199 0 274 %208 = OpCompositeExtract %uint %199 1 275 %209 = OpIAdd %uint %67 %207 276 %210 = OpULessThan %bool %67 %208 277 %211 = OpSelect %uint %210 %209 %uint_4294967295 278 %212 = OpImageTexelPointer %_ptr_Image_uint %193 %211 %uint_0 279 %213 = OpAtomicCompareExchange %uint %212 %uint_1 %uint_0 %uint_0 %uint_70 %uint_40 280 %215 = OpCompositeExtract %uint %151 1 281 %216 = OpConvertUToF %float %215 282 %217 = OpCompositeExtract %uint %49 0 283 %218 = OpCompositeExtract %uint %49 1 284 %219 = OpIAdd %uint %uint_2 %217 285 %220 = OpULessThan %bool %uint_2 %218 286 %221 = OpSelect %uint %220 %219 %uint_4294967295 287 %222 = OpCompositeConstruct %v4float %216 %216 %216 %216 288 OpImageWrite %46 %221 %222 289 %223 = OpCompositeExtract %uint %175 1 290 %224 = OpConvertUToF %float %223 291 %225 = OpCompositeExtract %uint %49 0 292 %226 = OpCompositeExtract %uint %49 1 293 %227 = OpIAdd %uint %uint_3 %225 294 %228 = OpULessThan %bool %uint_3 %226 295 %229 = OpSelect %uint %228 %227 %uint_4294967295 296 %230 = OpCompositeConstruct %v4float %224 %224 %224 %224 297 OpImageWrite %46 %229 %230 298 OpReturn 299 OpFunctionEnd 300