; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 ; Bound: 372 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 OpEntryPoint GLCompute %main "main" %tint_symbol_2 %tint_symbol %tint_symbol_1 OpExecutionMode %main LocalSize 16 16 1 OpName %Matrix "Matrix" OpMemberName %Matrix 0 "numbers" OpName %firstMatrix "firstMatrix" OpName %secondMatrix "secondMatrix" OpName %resultMatrix "resultMatrix" OpName %Uniforms "Uniforms" OpMemberName %Uniforms 0 "dimAOuter" OpMemberName %Uniforms 1 "dimInner" OpMemberName %Uniforms 2 "dimBOuter" OpName %uniforms "uniforms" OpName %RowPerThread "RowPerThread" OpName %RowPerThread "ColPerThread" OpName %TileAOuter "TileAOuter" OpName %TileAOuter "TileBOuter" OpName %TileAOuter "TileInner" OpName %mm_Asub "mm_Asub" OpName %mm_Bsub "mm_Bsub" OpName %tint_symbol "tint_symbol" OpName %tint_symbol_1 "tint_symbol_1" OpName %tint_symbol_2 "tint_symbol_2" OpName %mm_readA "mm_readA" OpName %row "row" OpName %col "col" OpName %mm_readB "mm_readB" OpName %row_0 "row" OpName %col_0 "col" OpName %mm_write "mm_write" OpName %row_1 "row" OpName %col_1 "col" OpName %value "value" OpName %main "main" OpName %idx "idx" OpName %acc "acc" OpName %ACached "ACached" OpName %BCached "BCached" OpName %index "index" OpName %t "t" OpName %innerRow "innerRow" OpName %innerCol "innerCol" OpName %innerRow_0 "innerRow" OpName %innerCol_0 "innerCol" OpName %k "k" OpName %inner "inner" OpName %innerRow_1 "innerRow" OpName %innerCol_1 "innerCol" OpName %innerRow_2 "innerRow" OpName %innerCol_2 "innerCol" OpDecorate %Matrix Block OpMemberDecorate %Matrix 0 Offset 0 OpDecorate %_runtimearr_float ArrayStride 4 OpDecorate %firstMatrix NonWritable OpDecorate %firstMatrix DescriptorSet 0 OpDecorate %firstMatrix Binding 0 OpDecorate %secondMatrix NonWritable OpDecorate %secondMatrix DescriptorSet 0 OpDecorate %secondMatrix Binding 1 OpDecorate %resultMatrix NonReadable OpDecorate %resultMatrix DescriptorSet 0 OpDecorate %resultMatrix Binding 2 OpDecorate %Uniforms Block OpMemberDecorate %Uniforms 0 Offset 0 OpMemberDecorate %Uniforms 1 Offset 4 OpMemberDecorate %Uniforms 2 Offset 8 OpDecorate %uniforms NonWritable OpDecorate %uniforms DescriptorSet 0 OpDecorate %uniforms Binding 3 OpDecorate %_arr_float_TileAOuter ArrayStride 4 OpDecorate %_arr__arr_float_TileAOuter_TileAOuter ArrayStride 256 OpDecorate %tint_symbol BuiltIn LocalInvocationId OpDecorate %tint_symbol_1 BuiltIn GlobalInvocationId OpDecorate %tint_symbol_2 BuiltIn LocalInvocationIndex OpDecorate %_arr_float_uint_16 ArrayStride 4 OpDecorate %_arr_float_RowPerThread ArrayStride 4 %float = OpTypeFloat 32 %_runtimearr_float = OpTypeRuntimeArray %float %Matrix = OpTypeStruct %_runtimearr_float %_ptr_StorageBuffer_Matrix = OpTypePointer StorageBuffer %Matrix %firstMatrix = OpVariable %_ptr_StorageBuffer_Matrix StorageBuffer %secondMatrix = OpVariable %_ptr_StorageBuffer_Matrix StorageBuffer %resultMatrix = OpVariable %_ptr_StorageBuffer_Matrix StorageBuffer %uint = OpTypeInt 32 0 %Uniforms = OpTypeStruct %uint %uint %uint %_ptr_Uniform_Uniforms = OpTypePointer Uniform %Uniforms %uniforms = OpVariable %_ptr_Uniform_Uniforms Uniform %RowPerThread = OpConstant %uint 4 %TileAOuter = OpConstant %uint 64 %_arr_float_TileAOuter = OpTypeArray %float %TileAOuter %_arr__arr_float_TileAOuter_TileAOuter = OpTypeArray %_arr_float_TileAOuter %TileAOuter %_ptr_Workgroup__arr__arr_float_TileAOuter_TileAOuter = OpTypePointer Workgroup %_arr__arr_float_TileAOuter_TileAOuter %mm_Asub = OpVariable %_ptr_Workgroup__arr__arr_float_TileAOuter_TileAOuter Workgroup %mm_Bsub = OpVariable %_ptr_Workgroup__arr__arr_float_TileAOuter_TileAOuter Workgroup %v3uint = OpTypeVector %uint 3 %_ptr_Input_v3uint = OpTypePointer Input %v3uint %tint_symbol = OpVariable %_ptr_Input_v3uint Input %tint_symbol_1 = OpVariable %_ptr_Input_v3uint Input %_ptr_Input_uint = OpTypePointer Input %uint %tint_symbol_2 = OpVariable %_ptr_Input_uint Input %25 = OpTypeFunction %float %uint %uint %uint_0 = OpConstant %uint 0 %_ptr_Uniform_uint = OpTypePointer Uniform %uint %bool = OpTypeBool %uint_1 = OpConstant %uint 1 %_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float %float_0 = OpConstant %float 0 %uint_2 = OpConstant %uint 2 %void = OpTypeVoid %75 = OpTypeFunction %void %uint %uint %float %98 = OpTypeFunction %void %_ptr_Function_uint = OpTypePointer Function %uint %104 = OpConstantNull %uint %uint_4096 = OpConstant %uint 4096 %_ptr_Workgroup_float = OpTypePointer Workgroup %float %121 = OpConstantNull %float %uint_256 = OpConstant %uint 256 %uint_264 = OpConstant %uint 264 %uint_16 = OpConstant %uint 16 %_arr_float_uint_16 = OpTypeArray %float %uint_16 %_ptr_Function__arr_float_uint_16 = OpTypePointer Function %_arr_float_uint_16 %149 = OpConstantNull %_arr_float_uint_16 %_ptr_Function_float = OpTypePointer Function %float %_arr_float_RowPerThread = OpTypeArray %float %RowPerThread %_ptr_Function__arr_float_RowPerThread = OpTypePointer Function %_arr_float_RowPerThread %155 = OpConstantNull %_arr_float_RowPerThread %mm_readA = OpFunction %float None %25 %row = OpFunctionParameter %uint %col = OpFunctionParameter %uint %29 = OpLabel %32 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %33 = OpLoad %uint %32 %34 = OpULessThan %bool %row %33 OpSelectionMerge %36 None OpBranchConditional %34 %37 %36 %37 = OpLabel %39 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %40 = OpLoad %uint %39 %41 = OpULessThan %bool %col %40 OpBranch %36 %36 = OpLabel %42 = OpPhi %bool %34 %29 %41 %37 OpSelectionMerge %43 None OpBranchConditional %42 %44 %43 %44 = OpLabel %45 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %46 = OpLoad %uint %45 %47 = OpIMul %uint %row %46 %48 = OpIAdd %uint %47 %col %50 = OpAccessChain %_ptr_StorageBuffer_float %firstMatrix %uint_0 %48 %51 = OpLoad %float %50 OpReturnValue %51 %43 = OpLabel OpReturnValue %float_0 OpFunctionEnd %mm_readB = OpFunction %float None %25 %row_0 = OpFunctionParameter %uint %col_0 = OpFunctionParameter %uint %56 = OpLabel %57 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %58 = OpLoad %uint %57 %59 = OpULessThan %bool %row_0 %58 OpSelectionMerge %60 None OpBranchConditional %59 %61 %60 %61 = OpLabel %63 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_2 %64 = OpLoad %uint %63 %65 = OpULessThan %bool %col_0 %64 OpBranch %60 %60 = OpLabel %66 = OpPhi %bool %59 %56 %65 %61 OpSelectionMerge %67 None OpBranchConditional %66 %68 %67 %68 = OpLabel %69 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_2 %70 = OpLoad %uint %69 %71 = OpIMul %uint %row_0 %70 %72 = OpIAdd %uint %71 %col_0 %73 = OpAccessChain %_ptr_StorageBuffer_float %secondMatrix %uint_0 %72 %74 = OpLoad %float %73 OpReturnValue %74 %67 = OpLabel OpReturnValue %float_0 OpFunctionEnd %mm_write = OpFunction %void None %75 %row_1 = OpFunctionParameter %uint %col_1 = OpFunctionParameter %uint %value = OpFunctionParameter %float %81 = OpLabel %82 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %83 = OpLoad %uint %82 %84 = OpULessThan %bool %row_1 %83 OpSelectionMerge %85 None OpBranchConditional %84 %86 %85 %86 = OpLabel %87 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_2 %88 = OpLoad %uint %87 %89 = OpULessThan %bool %col_1 %88 OpBranch %85 %85 = OpLabel %90 = OpPhi %bool %84 %81 %89 %86 OpSelectionMerge %91 None OpBranchConditional %90 %92 %91 %92 = OpLabel %93 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_2 %94 = OpLoad %uint %93 %95 = OpIMul %uint %row_1 %94 %96 = OpIAdd %uint %col_1 %95 %97 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %96 OpStore %97 %value OpBranch %91 %91 = OpLabel OpReturn OpFunctionEnd %main = OpFunction %void None %98 %100 = OpLabel %idx = OpVariable %_ptr_Function_uint Function %104 %acc = OpVariable %_ptr_Function__arr_float_uint_16 Function %149 %ACached = OpVariable %_ptr_Function_float Function %121 %BCached = OpVariable %_ptr_Function__arr_float_RowPerThread Function %155 %index = OpVariable %_ptr_Function_uint Function %104 %t = OpVariable %_ptr_Function_uint Function %104 %innerRow = OpVariable %_ptr_Function_uint Function %104 %innerCol = OpVariable %_ptr_Function_uint Function %104 %innerRow_0 = OpVariable %_ptr_Function_uint Function %104 %innerCol_0 = OpVariable %_ptr_Function_uint Function %104 %k = OpVariable %_ptr_Function_uint Function %104 %inner = OpVariable %_ptr_Function_uint Function %104 %innerRow_1 = OpVariable %_ptr_Function_uint Function %104 %innerCol_1 = OpVariable %_ptr_Function_uint Function %104 %innerRow_2 = OpVariable %_ptr_Function_uint Function %104 %innerCol_2 = OpVariable %_ptr_Function_uint Function %104 %101 = OpLoad %uint %tint_symbol_2 OpStore %idx %101 OpBranch %105 %105 = OpLabel OpLoopMerge %106 %107 None OpBranch %108 %108 = OpLabel %110 = OpLoad %uint %idx %112 = OpULessThan %bool %110 %uint_4096 %109 = OpLogicalNot %bool %112 OpSelectionMerge %113 None OpBranchConditional %109 %114 %113 %114 = OpLabel OpBranch %106 %113 = OpLabel %115 = OpLoad %uint %idx %116 = OpUDiv %uint %115 %TileAOuter %117 = OpLoad %uint %idx %118 = OpUMod %uint %117 %TileAOuter %120 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %116 %118 OpStore %120 %121 %122 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %116 %118 OpStore %122 %121 OpBranch %107 %107 = OpLabel %123 = OpLoad %uint %idx %125 = OpIAdd %uint %123 %uint_256 OpStore %idx %125 OpBranch %105 %106 = OpLabel OpControlBarrier %uint_2 %uint_2 %uint_264 %128 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_1 %129 = OpLoad %uint %128 %130 = OpIMul %uint %129 %RowPerThread %131 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_0 %132 = OpLoad %uint %131 %133 = OpIMul %uint %132 %RowPerThread %134 = OpAccessChain %_ptr_Input_uint %tint_symbol_1 %uint_1 %135 = OpLoad %uint %134 %136 = OpIMul %uint %135 %RowPerThread %137 = OpAccessChain %_ptr_Input_uint %tint_symbol_1 %uint_0 %138 = OpLoad %uint %137 %139 = OpIMul %uint %138 %RowPerThread %140 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %141 = OpLoad %uint %140 %142 = OpISub %uint %141 %uint_1 %143 = OpUDiv %uint %142 %TileAOuter %144 = OpIAdd %uint %143 %uint_1 OpStore %index %uint_0 OpBranch %157 %157 = OpLabel OpLoopMerge %158 %159 None OpBranch %160 %160 = OpLabel %162 = OpLoad %uint %index %163 = OpIMul %uint %RowPerThread %RowPerThread %164 = OpULessThan %bool %162 %163 %161 = OpLogicalNot %bool %164 OpSelectionMerge %165 None OpBranchConditional %161 %166 %165 %166 = OpLabel OpBranch %158 %165 = OpLabel %167 = OpLoad %uint %index %168 = OpAccessChain %_ptr_Function_float %acc %167 OpStore %168 %float_0 OpBranch %159 %159 = OpLabel %169 = OpLoad %uint %index %170 = OpIAdd %uint %169 %uint_1 OpStore %index %170 OpBranch %157 %158 = OpLabel %171 = OpUDiv %uint %TileAOuter %uint_16 %172 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_0 %173 = OpLoad %uint %172 %174 = OpIMul %uint %173 %171 %175 = OpUDiv %uint %TileAOuter %uint_16 %176 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_1 %177 = OpLoad %uint %176 %178 = OpIMul %uint %177 %175 OpStore %t %uint_0 OpBranch %180 %180 = OpLabel OpLoopMerge %181 %182 None OpBranch %183 %183 = OpLabel %185 = OpLoad %uint %t %186 = OpULessThan %bool %185 %144 %184 = OpLogicalNot %bool %186 OpSelectionMerge %187 None OpBranchConditional %184 %188 %187 %188 = OpLabel OpBranch %181 %187 = OpLabel OpStore %innerRow %uint_0 OpBranch %190 %190 = OpLabel OpLoopMerge %191 %192 None OpBranch %193 %193 = OpLabel %195 = OpLoad %uint %innerRow %196 = OpULessThan %bool %195 %RowPerThread %194 = OpLogicalNot %bool %196 OpSelectionMerge %197 None OpBranchConditional %194 %198 %197 %198 = OpLabel OpBranch %191 %197 = OpLabel OpStore %innerCol %uint_0 OpBranch %200 %200 = OpLabel OpLoopMerge %201 %202 None OpBranch %203 %203 = OpLabel %205 = OpLoad %uint %innerCol %206 = OpULessThan %bool %205 %171 %204 = OpLogicalNot %bool %206 OpSelectionMerge %207 None OpBranchConditional %204 %208 %207 %208 = OpLabel OpBranch %201 %207 = OpLabel %209 = OpLoad %uint %innerRow %210 = OpIAdd %uint %130 %209 %211 = OpLoad %uint %innerCol %212 = OpIAdd %uint %174 %211 %213 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %210 %212 %215 = OpLoad %uint %innerRow %216 = OpIAdd %uint %136 %215 %217 = OpLoad %uint %t %218 = OpIMul %uint %217 %TileAOuter %219 = OpIAdd %uint %218 %212 %214 = OpFunctionCall %float %mm_readA %216 %219 OpStore %213 %214 OpBranch %202 %202 = OpLabel %220 = OpLoad %uint %innerCol %221 = OpIAdd %uint %220 %uint_1 OpStore %innerCol %221 OpBranch %200 %201 = OpLabel OpBranch %192 %192 = OpLabel %222 = OpLoad %uint %innerRow %223 = OpIAdd %uint %222 %uint_1 OpStore %innerRow %223 OpBranch %190 %191 = OpLabel OpStore %innerRow_0 %uint_0 OpBranch %225 %225 = OpLabel OpLoopMerge %226 %227 None OpBranch %228 %228 = OpLabel %230 = OpLoad %uint %innerRow_0 %231 = OpULessThan %bool %230 %175 %229 = OpLogicalNot %bool %231 OpSelectionMerge %232 None OpBranchConditional %229 %233 %232 %233 = OpLabel OpBranch %226 %232 = OpLabel OpStore %innerCol_0 %uint_0 OpBranch %235 %235 = OpLabel OpLoopMerge %236 %237 None OpBranch %238 %238 = OpLabel %240 = OpLoad %uint %innerCol_0 %241 = OpULessThan %bool %240 %RowPerThread %239 = OpLogicalNot %bool %241 OpSelectionMerge %242 None OpBranchConditional %239 %243 %242 %243 = OpLabel OpBranch %236 %242 = OpLabel %244 = OpLoad %uint %innerRow_0 %245 = OpIAdd %uint %178 %244 %246 = OpLoad %uint %innerCol_0 %247 = OpIAdd %uint %133 %246 %248 = OpLoad %uint %innerCol_0 %249 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %248 %247 %251 = OpLoad %uint %t %252 = OpIMul %uint %251 %TileAOuter %253 = OpIAdd %uint %252 %245 %254 = OpLoad %uint %innerCol_0 %255 = OpIAdd %uint %139 %254 %250 = OpFunctionCall %float %mm_readB %253 %255 OpStore %249 %250 OpBranch %237 %237 = OpLabel %256 = OpLoad %uint %innerCol_0 %257 = OpIAdd %uint %256 %uint_1 OpStore %innerCol_0 %257 OpBranch %235 %236 = OpLabel OpBranch %227 %227 = OpLabel %258 = OpLoad %uint %innerRow_0 %259 = OpIAdd %uint %258 %uint_1 OpStore %innerRow_0 %259 OpBranch %225 %226 = OpLabel OpControlBarrier %uint_2 %uint_2 %uint_264 OpStore %k %uint_0 OpBranch %262 %262 = OpLabel OpLoopMerge %263 %264 None OpBranch %265 %265 = OpLabel %267 = OpLoad %uint %k %268 = OpULessThan %bool %267 %TileAOuter %266 = OpLogicalNot %bool %268 OpSelectionMerge %269 None OpBranchConditional %266 %270 %269 %270 = OpLabel OpBranch %263 %269 = OpLabel OpStore %inner %uint_0 OpBranch %272 %272 = OpLabel OpLoopMerge %273 %274 None OpBranch %275 %275 = OpLabel %277 = OpLoad %uint %inner %278 = OpULessThan %bool %277 %RowPerThread %276 = OpLogicalNot %bool %278 OpSelectionMerge %279 None OpBranchConditional %276 %280 %279 %280 = OpLabel OpBranch %273 %279 = OpLabel %281 = OpLoad %uint %inner %282 = OpAccessChain %_ptr_Function_float %BCached %281 %283 = OpLoad %uint %k %284 = OpLoad %uint %inner %285 = OpIAdd %uint %133 %284 %286 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %283 %285 %287 = OpLoad %float %286 OpStore %282 %287 OpBranch %274 %274 = OpLabel %288 = OpLoad %uint %inner %289 = OpIAdd %uint %288 %uint_1 OpStore %inner %289 OpBranch %272 %273 = OpLabel OpStore %innerRow_1 %uint_0 OpBranch %291 %291 = OpLabel OpLoopMerge %292 %293 None OpBranch %294 %294 = OpLabel %296 = OpLoad %uint %innerRow_1 %297 = OpULessThan %bool %296 %RowPerThread %295 = OpLogicalNot %bool %297 OpSelectionMerge %298 None OpBranchConditional %295 %299 %298 %299 = OpLabel OpBranch %292 %298 = OpLabel %300 = OpLoad %uint %innerRow_1 %301 = OpIAdd %uint %130 %300 %302 = OpLoad %uint %k %303 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %301 %302 %304 = OpLoad %float %303 OpStore %ACached %304 OpStore %innerCol_1 %uint_0 OpBranch %306 %306 = OpLabel OpLoopMerge %307 %308 None OpBranch %309 %309 = OpLabel %311 = OpLoad %uint %innerCol_1 %312 = OpULessThan %bool %311 %RowPerThread %310 = OpLogicalNot %bool %312 OpSelectionMerge %313 None OpBranchConditional %310 %314 %313 %314 = OpLabel OpBranch %307 %313 = OpLabel %315 = OpLoad %uint %innerRow_1 %316 = OpIMul %uint %315 %RowPerThread %317 = OpLoad %uint %innerCol_1 %318 = OpIAdd %uint %316 %317 %319 = OpAccessChain %_ptr_Function_float %acc %318 %320 = OpAccessChain %_ptr_Function_float %acc %318 %321 = OpLoad %float %320 %322 = OpLoad %float %ACached %323 = OpLoad %uint %innerCol_1 %324 = OpAccessChain %_ptr_Function_float %BCached %323 %325 = OpLoad %float %324 %326 = OpFMul %float %322 %325 %327 = OpFAdd %float %321 %326 OpStore %319 %327 OpBranch %308 %308 = OpLabel %328 = OpLoad %uint %innerCol_1 %329 = OpIAdd %uint %328 %uint_1 OpStore %innerCol_1 %329 OpBranch %306 %307 = OpLabel OpBranch %293 %293 = OpLabel %330 = OpLoad %uint %innerRow_1 %331 = OpIAdd %uint %330 %uint_1 OpStore %innerRow_1 %331 OpBranch %291 %292 = OpLabel OpBranch %264 %264 = OpLabel %332 = OpLoad %uint %k %333 = OpIAdd %uint %332 %uint_1 OpStore %k %333 OpBranch %262 %263 = OpLabel OpControlBarrier %uint_2 %uint_2 %uint_264 OpBranch %182 %182 = OpLabel %335 = OpLoad %uint %t %336 = OpIAdd %uint %335 %uint_1 OpStore %t %336 OpBranch %180 %181 = OpLabel OpStore %innerRow_2 %uint_0 OpBranch %338 %338 = OpLabel OpLoopMerge %339 %340 None OpBranch %341 %341 = OpLabel %343 = OpLoad %uint %innerRow_2 %344 = OpULessThan %bool %343 %RowPerThread %342 = OpLogicalNot %bool %344 OpSelectionMerge %345 None OpBranchConditional %342 %346 %345 %346 = OpLabel OpBranch %339 %345 = OpLabel OpStore %innerCol_2 %uint_0 OpBranch %348 %348 = OpLabel OpLoopMerge %349 %350 None OpBranch %351 %351 = OpLabel %353 = OpLoad %uint %innerCol_2 %354 = OpULessThan %bool %353 %RowPerThread %352 = OpLogicalNot %bool %354 OpSelectionMerge %355 None OpBranchConditional %352 %356 %355 %356 = OpLabel OpBranch %349 %355 = OpLabel %357 = OpLoad %uint %innerRow_2 %358 = OpIMul %uint %357 %RowPerThread %359 = OpLoad %uint %innerCol_2 %360 = OpIAdd %uint %358 %359 %362 = OpLoad %uint %innerRow_2 %363 = OpIAdd %uint %136 %362 %364 = OpLoad %uint %innerCol_2 %365 = OpIAdd %uint %139 %364 %366 = OpAccessChain %_ptr_Function_float %acc %360 %367 = OpLoad %float %366 %361 = OpFunctionCall %void %mm_write %363 %365 %367 OpBranch %350 %350 = OpLabel %368 = OpLoad %uint %innerCol_2 %369 = OpIAdd %uint %368 %uint_1 OpStore %innerCol_2 %369 OpBranch %348 %349 = OpLabel OpBranch %340 %340 = OpLabel %370 = OpLoad %uint %innerRow_2 %371 = OpIAdd %uint %370 %uint_1 OpStore %innerRow_2 %371 OpBranch %338 %339 = OpLabel OpReturn OpFunctionEnd