dawn-cmake/test/benchmark/metaball-isosurface.wgsl.expected.spvasm
Ben Clayton 73ced33dfb test/benchmark: Add more shaders to the corpus
Kindly donated by Brandon Jones and Austin Eng.
Tint has been used to convert all the deprecated attributes to the new style. In doing so, comments have been stripped. These are not massively important for the benchmarking.

Bindings have also been adjusted to be sequential and unique so that the MSL backend doesn't have to deal with binding remapping.

Existing benchmark files that used an underscore '_' have been renamed to use a dash '-' instead, to match the new files.

Change-Id: If5fb507b981f107ed570f6eedb55b232448f67aa
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/77443
Reviewed-by: Brandon Jones <bajones@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-01-21 22:38:16 +00:00

778 lines
34 KiB
Plaintext

; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 515
; Schema: 0
OpCapability Shader
%145 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %computeMain "computeMain" %global_id_1
OpExecutionMode %computeMain LocalSize 4 4 4
OpName %global_id_1 "global_id_1"
OpName %Tables "Tables"
OpMemberName %Tables 0 "edges"
OpMemberName %Tables 1 "tris"
OpName %tables "tables"
OpName %IsosurfaceVolume "IsosurfaceVolume"
OpMemberName %IsosurfaceVolume 0 "min"
OpMemberName %IsosurfaceVolume 1 "max"
OpMemberName %IsosurfaceVolume 2 "step"
OpMemberName %IsosurfaceVolume 3 "size"
OpMemberName %IsosurfaceVolume 4 "threshold"
OpMemberName %IsosurfaceVolume 5 "values"
OpName %volume "volume"
OpName %PositionBuffer "PositionBuffer"
OpMemberName %PositionBuffer 0 "values"
OpName %positionsOut "positionsOut"
OpName %NormalBuffer "NormalBuffer"
OpMemberName %NormalBuffer 0 "values"
OpName %normalsOut "normalsOut"
OpName %IndexBuffer "IndexBuffer"
OpMemberName %IndexBuffer 0 "tris"
OpName %indicesOut "indicesOut"
OpName %DrawIndirectArgs "DrawIndirectArgs"
OpMemberName %DrawIndirectArgs 0 "vc"
OpMemberName %DrawIndirectArgs 1 "vertexCount"
OpMemberName %DrawIndirectArgs 2 "firstVertex"
OpMemberName %DrawIndirectArgs 3 "firstInstance"
OpMemberName %DrawIndirectArgs 4 "indexCount"
OpMemberName %DrawIndirectArgs 5 "indexedInstanceCount"
OpMemberName %DrawIndirectArgs 6 "indexedFirstIndex"
OpMemberName %DrawIndirectArgs 7 "indexedBaseVertex"
OpMemberName %DrawIndirectArgs 8 "indexedFirstInstance"
OpName %drawOut "drawOut"
OpName %positions "positions"
OpName %normals "normals"
OpName %indices "indices"
OpName %cubeVerts "cubeVerts"
OpName %valueAt "valueAt"
OpName %index "index"
OpName %positionAt "positionAt"
OpName %index_0 "index"
OpName %normalAt "normalAt"
OpName %index_1 "index"
OpName %interpX "interpX"
OpName %index_2 "index"
OpName %i "i"
OpName %va "va"
OpName %vb "vb"
OpName %interpY "interpY"
OpName %index_3 "index"
OpName %i_0 "i"
OpName %va_0 "va"
OpName %vb_0 "vb"
OpName %interpZ "interpZ"
OpName %index_4 "index"
OpName %i_1 "i"
OpName %va_1 "va"
OpName %vb_1 "vb"
OpName %computeMain_inner "computeMain_inner"
OpName %global_id "global_id"
OpName %cubeIndex "cubeIndex"
OpName %firstVertex "firstVertex"
OpName %i_2 "i"
OpName %i_3 "i"
OpName %i_4 "i"
OpName %computeMain "computeMain"
OpDecorate %global_id_1 BuiltIn GlobalInvocationId
OpDecorate %Tables Block
OpMemberDecorate %Tables 0 Offset 0
OpDecorate %_arr_uint_uint_256 ArrayStride 4
OpMemberDecorate %Tables 1 Offset 1024
OpDecorate %_arr_int_uint_4096 ArrayStride 4
OpDecorate %tables NonWritable
OpDecorate %tables DescriptorSet 0
OpDecorate %tables Binding 0
OpDecorate %IsosurfaceVolume Block
OpMemberDecorate %IsosurfaceVolume 0 Offset 0
OpMemberDecorate %IsosurfaceVolume 1 Offset 16
OpMemberDecorate %IsosurfaceVolume 2 Offset 32
OpMemberDecorate %IsosurfaceVolume 3 Offset 48
OpMemberDecorate %IsosurfaceVolume 4 Offset 60
OpMemberDecorate %IsosurfaceVolume 5 Offset 64
OpDecorate %_runtimearr_float ArrayStride 4
OpDecorate %volume NonReadable
OpDecorate %volume DescriptorSet 0
OpDecorate %volume Binding 1
OpDecorate %PositionBuffer Block
OpMemberDecorate %PositionBuffer 0 Offset 0
OpDecorate %positionsOut NonReadable
OpDecorate %positionsOut DescriptorSet 0
OpDecorate %positionsOut Binding 2
OpDecorate %NormalBuffer Block
OpMemberDecorate %NormalBuffer 0 Offset 0
OpDecorate %normalsOut NonReadable
OpDecorate %normalsOut DescriptorSet 0
OpDecorate %normalsOut Binding 3
OpDecorate %IndexBuffer Block
OpMemberDecorate %IndexBuffer 0 Offset 0
OpDecorate %_runtimearr_uint ArrayStride 4
OpDecorate %indicesOut NonReadable
OpDecorate %indicesOut DescriptorSet 0
OpDecorate %indicesOut Binding 4
OpDecorate %DrawIndirectArgs Block
OpMemberDecorate %DrawIndirectArgs 0 Offset 0
OpMemberDecorate %DrawIndirectArgs 1 Offset 4
OpMemberDecorate %DrawIndirectArgs 2 Offset 8
OpMemberDecorate %DrawIndirectArgs 3 Offset 12
OpMemberDecorate %DrawIndirectArgs 4 Offset 16
OpMemberDecorate %DrawIndirectArgs 5 Offset 20
OpMemberDecorate %DrawIndirectArgs 6 Offset 24
OpMemberDecorate %DrawIndirectArgs 7 Offset 28
OpMemberDecorate %DrawIndirectArgs 8 Offset 32
OpDecorate %drawOut DescriptorSet 0
OpDecorate %drawOut Binding 5
OpDecorate %_arr_v3float_uint_12 ArrayStride 16
OpDecorate %_arr_uint_uint_12 ArrayStride 4
%uint = OpTypeInt 32 0
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%global_id_1 = OpVariable %_ptr_Input_v3uint Input
%uint_256 = OpConstant %uint 256
%_arr_uint_uint_256 = OpTypeArray %uint %uint_256
%int = OpTypeInt 32 1
%uint_4096 = OpConstant %uint 4096
%_arr_int_uint_4096 = OpTypeArray %int %uint_4096
%Tables = OpTypeStruct %_arr_uint_uint_256 %_arr_int_uint_4096
%_ptr_StorageBuffer_Tables = OpTypePointer StorageBuffer %Tables
%tables = OpVariable %_ptr_StorageBuffer_Tables StorageBuffer
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%_runtimearr_float = OpTypeRuntimeArray %float
%IsosurfaceVolume = OpTypeStruct %v3float %v3float %v3float %v3uint %float %_runtimearr_float
%_ptr_StorageBuffer_IsosurfaceVolume = OpTypePointer StorageBuffer %IsosurfaceVolume
%volume = OpVariable %_ptr_StorageBuffer_IsosurfaceVolume StorageBuffer
%PositionBuffer = OpTypeStruct %_runtimearr_float
%_ptr_StorageBuffer_PositionBuffer = OpTypePointer StorageBuffer %PositionBuffer
%positionsOut = OpVariable %_ptr_StorageBuffer_PositionBuffer StorageBuffer
%NormalBuffer = OpTypeStruct %_runtimearr_float
%_ptr_StorageBuffer_NormalBuffer = OpTypePointer StorageBuffer %NormalBuffer
%normalsOut = OpVariable %_ptr_StorageBuffer_NormalBuffer StorageBuffer
%_runtimearr_uint = OpTypeRuntimeArray %uint
%IndexBuffer = OpTypeStruct %_runtimearr_uint
%_ptr_StorageBuffer_IndexBuffer = OpTypePointer StorageBuffer %IndexBuffer
%indicesOut = OpVariable %_ptr_StorageBuffer_IndexBuffer StorageBuffer
%DrawIndirectArgs = OpTypeStruct %uint %uint %uint %uint %uint %uint %uint %uint %uint
%_ptr_StorageBuffer_DrawIndirectArgs = OpTypePointer StorageBuffer %DrawIndirectArgs
%drawOut = OpVariable %_ptr_StorageBuffer_DrawIndirectArgs StorageBuffer
%uint_12 = OpConstant %uint 12
%_arr_v3float_uint_12 = OpTypeArray %v3float %uint_12
%_ptr_Private__arr_v3float_uint_12 = OpTypePointer Private %_arr_v3float_uint_12
%36 = OpConstantNull %_arr_v3float_uint_12
%positions = OpVariable %_ptr_Private__arr_v3float_uint_12 Private %36
%normals = OpVariable %_ptr_Private__arr_v3float_uint_12 Private %36
%_arr_uint_uint_12 = OpTypeArray %uint %uint_12
%_ptr_Private__arr_uint_uint_12 = OpTypePointer Private %_arr_uint_uint_12
%41 = OpConstantNull %_arr_uint_uint_12
%indices = OpVariable %_ptr_Private__arr_uint_uint_12 Private %41
%uint_0 = OpConstant %uint 0
%_ptr_Private_uint = OpTypePointer Private %uint
%cubeVerts = OpVariable %_ptr_Private_uint Private %uint_0
%45 = OpTypeFunction %float %v3uint
%bool = OpTypeBool
%uint_3 = OpConstant %uint 3
%_ptr_StorageBuffer_v3uint = OpTypePointer StorageBuffer %v3uint
%v3bool = OpTypeVector %bool 3
%float_0 = OpConstant %float 0
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%uint_1 = OpConstant %uint 1
%uint_5 = OpConstant %uint 5
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%80 = OpTypeFunction %v3float %v3uint
%_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float
%uint_2 = OpConstant %uint 2
%98 = OpConstantComposite %v3uint %uint_1 %uint_0 %uint_0
%104 = OpConstantComposite %v3uint %uint_0 %uint_1 %uint_0
%110 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_1
%void = OpTypeVoid
%116 = OpTypeFunction %void %uint %v3uint %float %float
%uint_4 = OpConstant %uint 4
%_ptr_Private_v3float = OpTypePointer Private %v3float
%211 = OpTypeFunction %void %v3uint
%216 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_0
%220 = OpConstantComposite %v3uint %uint_1 %uint_0 %uint_1
%222 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
%224 = OpConstantComposite %v3uint %uint_0 %uint_1 %uint_1
%_ptr_Function_uint = OpTypePointer Function %uint
%236 = OpConstantNull %uint
%uint_8 = OpConstant %uint 8
%uint_16 = OpConstant %uint 16
%uint_32 = OpConstant %uint 32
%uint_64 = OpConstant %uint 64
%uint_128 = OpConstant %uint 128
%uint_6 = OpConstant %uint 6
%uint_7 = OpConstant %uint 7
%uint_512 = OpConstant %uint 512
%uint_9 = OpConstant %uint 9
%uint_1024 = OpConstant %uint 1024
%uint_10 = OpConstant %uint 10
%uint_2048 = OpConstant %uint 2048
%uint_11 = OpConstant %uint 11
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
%uint_15 = OpConstant %uint 15
%_ptr_Private_float = OpTypePointer Private %float
%510 = OpTypeFunction %void
%valueAt = OpFunction %float None %45
%index = OpFunctionParameter %v3uint
%48 = OpLabel
%53 = OpAccessChain %_ptr_StorageBuffer_v3uint %volume %uint_3
%54 = OpLoad %v3uint %53
%55 = OpUGreaterThanEqual %v3bool %index %54
%49 = OpAny %bool %55
OpSelectionMerge %57 None
OpBranchConditional %49 %58 %57
%58 = OpLabel
OpReturnValue %float_0
%57 = OpLabel
%60 = OpCompositeExtract %uint %index 0
%61 = OpCompositeExtract %uint %index 1
%63 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_0
%64 = OpLoad %uint %63
%65 = OpIMul %uint %61 %64
%66 = OpIAdd %uint %60 %65
%67 = OpCompositeExtract %uint %index 2
%68 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_0
%69 = OpLoad %uint %68
%70 = OpIMul %uint %67 %69
%72 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_1
%73 = OpLoad %uint %72
%74 = OpIMul %uint %70 %73
%75 = OpIAdd %uint %66 %74
%78 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_5 %75
%79 = OpLoad %float %78
OpReturnValue %79
OpFunctionEnd
%positionAt = OpFunction %v3float None %80
%index_0 = OpFunctionParameter %v3uint
%83 = OpLabel
%85 = OpAccessChain %_ptr_StorageBuffer_v3float %volume %uint_0
%86 = OpLoad %v3float %85
%88 = OpAccessChain %_ptr_StorageBuffer_v3float %volume %uint_2
%89 = OpLoad %v3float %88
%91 = OpVectorShuffle %v3uint %index_0 %index_0 0 1 2
%90 = OpConvertUToF %v3float %91
%92 = OpFMul %v3float %89 %90
%93 = OpFAdd %v3float %86 %92
OpReturnValue %93
OpFunctionEnd
%normalAt = OpFunction %v3float None %80
%index_1 = OpFunctionParameter %v3uint
%96 = OpLabel
%99 = OpISub %v3uint %index_1 %98
%97 = OpFunctionCall %float %valueAt %99
%101 = OpIAdd %v3uint %index_1 %98
%100 = OpFunctionCall %float %valueAt %101
%102 = OpFSub %float %97 %100
%105 = OpISub %v3uint %index_1 %104
%103 = OpFunctionCall %float %valueAt %105
%107 = OpIAdd %v3uint %index_1 %104
%106 = OpFunctionCall %float %valueAt %107
%108 = OpFSub %float %103 %106
%111 = OpISub %v3uint %index_1 %110
%109 = OpFunctionCall %float %valueAt %111
%113 = OpIAdd %v3uint %index_1 %110
%112 = OpFunctionCall %float %valueAt %113
%114 = OpFSub %float %109 %112
%115 = OpCompositeConstruct %v3float %102 %108 %114
OpReturnValue %115
OpFunctionEnd
%interpX = OpFunction %void None %116
%index_2 = OpFunctionParameter %uint
%i = OpFunctionParameter %v3uint
%va = OpFunctionParameter %float
%vb = OpFunctionParameter %float
%123 = OpLabel
%125 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%126 = OpLoad %float %125
%127 = OpFSub %float %126 %va
%128 = OpFSub %float %vb %va
%129 = OpFDiv %float %127 %128
%130 = OpLoad %uint %cubeVerts
%132 = OpAccessChain %_ptr_Private_v3float %positions %130
%133 = OpFunctionCall %v3float %positionAt %i
%134 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_2 %uint_0
%135 = OpLoad %float %134
%136 = OpFMul %float %135 %129
%137 = OpCompositeConstruct %v3float %136 %float_0 %float_0
%138 = OpFAdd %v3float %133 %137
OpStore %132 %138
%139 = OpFunctionCall %v3float %normalAt %i
%141 = OpIAdd %v3uint %i %98
%140 = OpFunctionCall %v3float %normalAt %141
%142 = OpLoad %uint %cubeVerts
%143 = OpAccessChain %_ptr_Private_v3float %normals %142
%146 = OpCompositeConstruct %v3float %129 %129 %129
%144 = OpExtInst %v3float %145 FMix %139 %140 %146
OpStore %143 %144
%147 = OpAccessChain %_ptr_Private_uint %indices %index_2
%148 = OpLoad %uint %cubeVerts
OpStore %147 %148
%149 = OpLoad %uint %cubeVerts
%150 = OpIAdd %uint %149 %uint_1
OpStore %cubeVerts %150
OpReturn
OpFunctionEnd
%interpY = OpFunction %void None %116
%index_3 = OpFunctionParameter %uint
%i_0 = OpFunctionParameter %v3uint
%va_0 = OpFunctionParameter %float
%vb_0 = OpFunctionParameter %float
%156 = OpLabel
%157 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%158 = OpLoad %float %157
%159 = OpFSub %float %158 %va_0
%160 = OpFSub %float %vb_0 %va_0
%161 = OpFDiv %float %159 %160
%162 = OpLoad %uint %cubeVerts
%163 = OpAccessChain %_ptr_Private_v3float %positions %162
%164 = OpFunctionCall %v3float %positionAt %i_0
%165 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_2 %uint_1
%166 = OpLoad %float %165
%167 = OpFMul %float %166 %161
%168 = OpCompositeConstruct %v3float %float_0 %167 %float_0
%169 = OpFAdd %v3float %164 %168
OpStore %163 %169
%170 = OpFunctionCall %v3float %normalAt %i_0
%172 = OpIAdd %v3uint %i_0 %104
%171 = OpFunctionCall %v3float %normalAt %172
%173 = OpLoad %uint %cubeVerts
%174 = OpAccessChain %_ptr_Private_v3float %normals %173
%176 = OpCompositeConstruct %v3float %161 %161 %161
%175 = OpExtInst %v3float %145 FMix %170 %171 %176
OpStore %174 %175
%177 = OpAccessChain %_ptr_Private_uint %indices %index_3
%178 = OpLoad %uint %cubeVerts
OpStore %177 %178
%179 = OpLoad %uint %cubeVerts
%180 = OpIAdd %uint %179 %uint_1
OpStore %cubeVerts %180
OpReturn
OpFunctionEnd
%interpZ = OpFunction %void None %116
%index_4 = OpFunctionParameter %uint
%i_1 = OpFunctionParameter %v3uint
%va_1 = OpFunctionParameter %float
%vb_1 = OpFunctionParameter %float
%186 = OpLabel
%187 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%188 = OpLoad %float %187
%189 = OpFSub %float %188 %va_1
%190 = OpFSub %float %vb_1 %va_1
%191 = OpFDiv %float %189 %190
%192 = OpLoad %uint %cubeVerts
%193 = OpAccessChain %_ptr_Private_v3float %positions %192
%194 = OpFunctionCall %v3float %positionAt %i_1
%195 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_2 %uint_2
%196 = OpLoad %float %195
%197 = OpFMul %float %196 %191
%198 = OpCompositeConstruct %v3float %float_0 %float_0 %197
%199 = OpFAdd %v3float %194 %198
OpStore %193 %199
%200 = OpFunctionCall %v3float %normalAt %i_1
%202 = OpIAdd %v3uint %i_1 %110
%201 = OpFunctionCall %v3float %normalAt %202
%203 = OpLoad %uint %cubeVerts
%204 = OpAccessChain %_ptr_Private_v3float %normals %203
%206 = OpCompositeConstruct %v3float %191 %191 %191
%205 = OpExtInst %v3float %145 FMix %200 %201 %206
OpStore %204 %205
%207 = OpAccessChain %_ptr_Private_uint %indices %index_4
%208 = OpLoad %uint %cubeVerts
OpStore %207 %208
%209 = OpLoad %uint %cubeVerts
%210 = OpIAdd %uint %209 %uint_1
OpStore %cubeVerts %210
OpReturn
OpFunctionEnd
%computeMain_inner = OpFunction %void None %211
%global_id = OpFunctionParameter %v3uint
%214 = OpLabel
%cubeIndex = OpVariable %_ptr_Function_uint Function %236
%firstVertex = OpVariable %_ptr_Function_uint Function %236
%i_2 = OpVariable %_ptr_Function_uint Function %236
%i_3 = OpVariable %_ptr_Function_uint Function %236
%i_4 = OpVariable %_ptr_Function_uint Function %236
%215 = OpIAdd %v3uint %global_id %98
%217 = OpIAdd %v3uint %global_id %216
%218 = OpIAdd %v3uint %global_id %104
%219 = OpIAdd %v3uint %global_id %110
%221 = OpIAdd %v3uint %global_id %220
%223 = OpIAdd %v3uint %global_id %222
%225 = OpIAdd %v3uint %global_id %224
%226 = OpFunctionCall %float %valueAt %global_id
%227 = OpFunctionCall %float %valueAt %215
%228 = OpFunctionCall %float %valueAt %217
%229 = OpFunctionCall %float %valueAt %218
%230 = OpFunctionCall %float %valueAt %219
%231 = OpFunctionCall %float %valueAt %221
%232 = OpFunctionCall %float %valueAt %223
%233 = OpFunctionCall %float %valueAt %225
OpStore %cubeIndex %uint_0
%237 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%238 = OpLoad %float %237
%239 = OpFOrdLessThan %bool %226 %238
OpSelectionMerge %240 None
OpBranchConditional %239 %241 %240
%241 = OpLabel
%242 = OpLoad %uint %cubeIndex
%243 = OpBitwiseOr %uint %242 %uint_1
OpStore %cubeIndex %243
OpBranch %240
%240 = OpLabel
%244 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%245 = OpLoad %float %244
%246 = OpFOrdLessThan %bool %227 %245
OpSelectionMerge %247 None
OpBranchConditional %246 %248 %247
%248 = OpLabel
%249 = OpLoad %uint %cubeIndex
%250 = OpBitwiseOr %uint %249 %uint_2
OpStore %cubeIndex %250
OpBranch %247
%247 = OpLabel
%251 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%252 = OpLoad %float %251
%253 = OpFOrdLessThan %bool %228 %252
OpSelectionMerge %254 None
OpBranchConditional %253 %255 %254
%255 = OpLabel
%256 = OpLoad %uint %cubeIndex
%257 = OpBitwiseOr %uint %256 %uint_4
OpStore %cubeIndex %257
OpBranch %254
%254 = OpLabel
%258 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%259 = OpLoad %float %258
%260 = OpFOrdLessThan %bool %229 %259
OpSelectionMerge %261 None
OpBranchConditional %260 %262 %261
%262 = OpLabel
%263 = OpLoad %uint %cubeIndex
%265 = OpBitwiseOr %uint %263 %uint_8
OpStore %cubeIndex %265
OpBranch %261
%261 = OpLabel
%266 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%267 = OpLoad %float %266
%268 = OpFOrdLessThan %bool %230 %267
OpSelectionMerge %269 None
OpBranchConditional %268 %270 %269
%270 = OpLabel
%271 = OpLoad %uint %cubeIndex
%273 = OpBitwiseOr %uint %271 %uint_16
OpStore %cubeIndex %273
OpBranch %269
%269 = OpLabel
%274 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%275 = OpLoad %float %274
%276 = OpFOrdLessThan %bool %231 %275
OpSelectionMerge %277 None
OpBranchConditional %276 %278 %277
%278 = OpLabel
%279 = OpLoad %uint %cubeIndex
%281 = OpBitwiseOr %uint %279 %uint_32
OpStore %cubeIndex %281
OpBranch %277
%277 = OpLabel
%282 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%283 = OpLoad %float %282
%284 = OpFOrdLessThan %bool %232 %283
OpSelectionMerge %285 None
OpBranchConditional %284 %286 %285
%286 = OpLabel
%287 = OpLoad %uint %cubeIndex
%289 = OpBitwiseOr %uint %287 %uint_64
OpStore %cubeIndex %289
OpBranch %285
%285 = OpLabel
%290 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
%291 = OpLoad %float %290
%292 = OpFOrdLessThan %bool %233 %291
OpSelectionMerge %293 None
OpBranchConditional %292 %294 %293
%294 = OpLabel
%295 = OpLoad %uint %cubeIndex
%297 = OpBitwiseOr %uint %295 %uint_128
OpStore %cubeIndex %297
OpBranch %293
%293 = OpLabel
%298 = OpLoad %uint %cubeIndex
%299 = OpAccessChain %_ptr_StorageBuffer_uint %tables %uint_0 %298
%300 = OpLoad %uint %299
%301 = OpBitwiseAnd %uint %300 %uint_1
%302 = OpINotEqual %bool %301 %uint_0
OpSelectionMerge %303 None
OpBranchConditional %302 %304 %303
%304 = OpLabel
%305 = OpFunctionCall %void %interpX %uint_0 %global_id %226 %227
OpBranch %303
%303 = OpLabel
%306 = OpBitwiseAnd %uint %300 %uint_2
%307 = OpINotEqual %bool %306 %uint_0
OpSelectionMerge %308 None
OpBranchConditional %307 %309 %308
%309 = OpLabel
%310 = OpFunctionCall %void %interpY %uint_1 %215 %227 %228
OpBranch %308
%308 = OpLabel
%311 = OpBitwiseAnd %uint %300 %uint_4
%312 = OpINotEqual %bool %311 %uint_0
OpSelectionMerge %313 None
OpBranchConditional %312 %314 %313
%314 = OpLabel
%315 = OpFunctionCall %void %interpX %uint_2 %218 %229 %228
OpBranch %313
%313 = OpLabel
%316 = OpBitwiseAnd %uint %300 %uint_8
%317 = OpINotEqual %bool %316 %uint_0
OpSelectionMerge %318 None
OpBranchConditional %317 %319 %318
%319 = OpLabel
%320 = OpFunctionCall %void %interpY %uint_3 %global_id %226 %229
OpBranch %318
%318 = OpLabel
%321 = OpBitwiseAnd %uint %300 %uint_16
%322 = OpINotEqual %bool %321 %uint_0
OpSelectionMerge %323 None
OpBranchConditional %322 %324 %323
%324 = OpLabel
%325 = OpFunctionCall %void %interpX %uint_4 %219 %230 %231
OpBranch %323
%323 = OpLabel
%326 = OpBitwiseAnd %uint %300 %uint_32
%327 = OpINotEqual %bool %326 %uint_0
OpSelectionMerge %328 None
OpBranchConditional %327 %329 %328
%329 = OpLabel
%330 = OpFunctionCall %void %interpY %uint_5 %221 %231 %232
OpBranch %328
%328 = OpLabel
%331 = OpBitwiseAnd %uint %300 %uint_64
%332 = OpINotEqual %bool %331 %uint_0
OpSelectionMerge %333 None
OpBranchConditional %332 %334 %333
%334 = OpLabel
%335 = OpFunctionCall %void %interpX %uint_6 %225 %233 %232
OpBranch %333
%333 = OpLabel
%337 = OpBitwiseAnd %uint %300 %uint_128
%338 = OpINotEqual %bool %337 %uint_0
OpSelectionMerge %339 None
OpBranchConditional %338 %340 %339
%340 = OpLabel
%341 = OpFunctionCall %void %interpY %uint_7 %219 %230 %233
OpBranch %339
%339 = OpLabel
%343 = OpBitwiseAnd %uint %300 %uint_256
%344 = OpINotEqual %bool %343 %uint_0
OpSelectionMerge %345 None
OpBranchConditional %344 %346 %345
%346 = OpLabel
%347 = OpFunctionCall %void %interpZ %uint_8 %global_id %226 %230
OpBranch %345
%345 = OpLabel
%349 = OpBitwiseAnd %uint %300 %uint_512
%350 = OpINotEqual %bool %349 %uint_0
OpSelectionMerge %351 None
OpBranchConditional %350 %352 %351
%352 = OpLabel
%353 = OpFunctionCall %void %interpZ %uint_9 %215 %227 %231
OpBranch %351
%351 = OpLabel
%356 = OpBitwiseAnd %uint %300 %uint_1024
%357 = OpINotEqual %bool %356 %uint_0
OpSelectionMerge %358 None
OpBranchConditional %357 %359 %358
%359 = OpLabel
%360 = OpFunctionCall %void %interpZ %uint_10 %217 %228 %232
OpBranch %358
%358 = OpLabel
%363 = OpBitwiseAnd %uint %300 %uint_2048
%364 = OpINotEqual %bool %363 %uint_0
OpSelectionMerge %365 None
OpBranchConditional %364 %366 %365
%366 = OpLabel
%367 = OpFunctionCall %void %interpZ %uint_11 %218 %229 %233
OpBranch %365
%365 = OpLabel
%369 = OpLoad %uint %cubeIndex
%370 = OpShiftLeftLogical %uint %369 %uint_4
%371 = OpIAdd %uint %370 %uint_1
%373 = OpISub %uint %371 %uint_1
%375 = OpAccessChain %_ptr_StorageBuffer_int %tables %uint_1 %373
%376 = OpLoad %int %375
%372 = OpBitcast %uint %376
%380 = OpAccessChain %_ptr_StorageBuffer_uint_0 %drawOut %uint_1
%381 = OpLoad %uint %cubeVerts
%377 = OpAtomicIAdd %uint %380 %uint_1 %uint_0 %381
OpStore %firstVertex %377
%383 = OpCompositeExtract %uint %global_id 0
%384 = OpCompositeExtract %uint %global_id 1
%385 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_0
%386 = OpLoad %uint %385
%387 = OpIMul %uint %384 %386
%388 = OpIAdd %uint %383 %387
%389 = OpCompositeExtract %uint %global_id 2
%390 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_0
%391 = OpLoad %uint %390
%392 = OpIMul %uint %389 %391
%393 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_1
%394 = OpLoad %uint %393
%395 = OpIMul %uint %392 %394
%396 = OpIAdd %uint %388 %395
%398 = OpIMul %uint %396 %uint_15
OpStore %i_2 %uint_0
OpBranch %400
%400 = OpLabel
OpLoopMerge %401 %402 None
OpBranch %403
%403 = OpLabel
%405 = OpLoad %uint %i_2
%406 = OpLoad %uint %cubeVerts
%407 = OpULessThan %bool %405 %406
%404 = OpLogicalNot %bool %407
OpSelectionMerge %408 None
OpBranchConditional %404 %409 %408
%409 = OpLabel
OpBranch %401
%408 = OpLabel
%410 = OpLoad %uint %firstVertex
%411 = OpIMul %uint %410 %uint_3
%412 = OpLoad %uint %i_2
%413 = OpIMul %uint %412 %uint_3
%414 = OpIAdd %uint %411 %413
%415 = OpAccessChain %_ptr_StorageBuffer_float %positionsOut %uint_0 %414
%416 = OpLoad %uint %i_2
%418 = OpAccessChain %_ptr_Private_float %positions %416 %uint_0
%419 = OpLoad %float %418
OpStore %415 %419
%420 = OpLoad %uint %firstVertex
%421 = OpIMul %uint %420 %uint_3
%422 = OpLoad %uint %i_2
%423 = OpIMul %uint %422 %uint_3
%424 = OpIAdd %uint %421 %423
%425 = OpIAdd %uint %424 %uint_1
%426 = OpAccessChain %_ptr_StorageBuffer_float %positionsOut %uint_0 %425
%427 = OpLoad %uint %i_2
%428 = OpAccessChain %_ptr_Private_float %positions %427 %uint_1
%429 = OpLoad %float %428
OpStore %426 %429
%430 = OpLoad %uint %firstVertex
%431 = OpIMul %uint %430 %uint_3
%432 = OpLoad %uint %i_2
%433 = OpIMul %uint %432 %uint_3
%434 = OpIAdd %uint %431 %433
%435 = OpIAdd %uint %434 %uint_2
%436 = OpAccessChain %_ptr_StorageBuffer_float %positionsOut %uint_0 %435
%437 = OpLoad %uint %i_2
%438 = OpAccessChain %_ptr_Private_float %positions %437 %uint_2
%439 = OpLoad %float %438
OpStore %436 %439
%440 = OpLoad %uint %firstVertex
%441 = OpIMul %uint %440 %uint_3
%442 = OpLoad %uint %i_2
%443 = OpIMul %uint %442 %uint_3
%444 = OpIAdd %uint %441 %443
%445 = OpAccessChain %_ptr_StorageBuffer_float %normalsOut %uint_0 %444
%446 = OpLoad %uint %i_2
%447 = OpAccessChain %_ptr_Private_float %normals %446 %uint_0
%448 = OpLoad %float %447
OpStore %445 %448
%449 = OpLoad %uint %firstVertex
%450 = OpIMul %uint %449 %uint_3
%451 = OpLoad %uint %i_2
%452 = OpIMul %uint %451 %uint_3
%453 = OpIAdd %uint %450 %452
%454 = OpIAdd %uint %453 %uint_1
%455 = OpAccessChain %_ptr_StorageBuffer_float %normalsOut %uint_0 %454
%456 = OpLoad %uint %i_2
%457 = OpAccessChain %_ptr_Private_float %normals %456 %uint_1
%458 = OpLoad %float %457
OpStore %455 %458
%459 = OpLoad %uint %firstVertex
%460 = OpIMul %uint %459 %uint_3
%461 = OpLoad %uint %i_2
%462 = OpIMul %uint %461 %uint_3
%463 = OpIAdd %uint %460 %462
%464 = OpIAdd %uint %463 %uint_2
%465 = OpAccessChain %_ptr_StorageBuffer_float %normalsOut %uint_0 %464
%466 = OpLoad %uint %i_2
%467 = OpAccessChain %_ptr_Private_float %normals %466 %uint_2
%468 = OpLoad %float %467
OpStore %465 %468
OpBranch %402
%402 = OpLabel
%469 = OpLoad %uint %i_2
%470 = OpIAdd %uint %469 %uint_1
OpStore %i_2 %470
OpBranch %400
%401 = OpLabel
OpStore %i_3 %uint_0
OpBranch %472
%472 = OpLabel
OpLoopMerge %473 %474 None
OpBranch %475
%475 = OpLabel
%477 = OpLoad %uint %i_3
%478 = OpULessThan %bool %477 %372
%476 = OpLogicalNot %bool %478
OpSelectionMerge %479 None
OpBranchConditional %476 %480 %479
%480 = OpLabel
OpBranch %473
%479 = OpLabel
%481 = OpLoad %uint %i_3
%482 = OpIAdd %uint %371 %481
%483 = OpAccessChain %_ptr_StorageBuffer_int %tables %uint_1 %482
%484 = OpLoad %int %483
%485 = OpLoad %uint %i_3
%486 = OpIAdd %uint %398 %485
%487 = OpAccessChain %_ptr_StorageBuffer_uint %indicesOut %uint_0 %486
%488 = OpLoad %uint %firstVertex
%489 = OpAccessChain %_ptr_Private_uint %indices %484
%490 = OpLoad %uint %489
%491 = OpIAdd %uint %488 %490
OpStore %487 %491
OpBranch %474
%474 = OpLabel
%492 = OpLoad %uint %i_3
%493 = OpIAdd %uint %492 %uint_1
OpStore %i_3 %493
OpBranch %472
%473 = OpLabel
OpStore %i_4 %372
OpBranch %495
%495 = OpLabel
OpLoopMerge %496 %497 None
OpBranch %498
%498 = OpLabel
%500 = OpLoad %uint %i_4
%501 = OpULessThan %bool %500 %uint_15
%499 = OpLogicalNot %bool %501
OpSelectionMerge %502 None
OpBranchConditional %499 %503 %502
%503 = OpLabel
OpBranch %496
%502 = OpLabel
%504 = OpLoad %uint %i_4
%505 = OpIAdd %uint %398 %504
%506 = OpAccessChain %_ptr_StorageBuffer_uint %indicesOut %uint_0 %505
%507 = OpLoad %uint %firstVertex
OpStore %506 %507
OpBranch %497
%497 = OpLabel
%508 = OpLoad %uint %i_4
%509 = OpIAdd %uint %508 %uint_1
OpStore %i_4 %509
OpBranch %495
%496 = OpLabel
OpReturn
OpFunctionEnd
%computeMain = OpFunction %void None %510
%512 = OpLabel
%514 = OpLoad %v3uint %global_id_1
%513 = OpFunctionCall %void %computeMain_inner %514
OpReturn
OpFunctionEnd