blob: f6ddfb7ea0b80e53b5e2c49ec2bc24e4c2f5c610 [file] [log] [blame]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 389
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %main "main" %local_id_1 %global_id_1 %local_invocation_index_1
OpExecutionMode %main LocalSize 16 16 1
OpName %local_id_1 "local_id_1"
OpName %global_id_1 "global_id_1"
OpName %local_invocation_index_1 "local_invocation_index_1"
OpName %Matrix "Matrix"
OpMemberName %Matrix 0 "numbers"
OpName %firstMatrix "firstMatrix"
OpName %secondMatrix "secondMatrix"
OpName %resultMatrix "resultMatrix"
OpName %uniforms_block "uniforms_block"
OpMemberName %uniforms_block 0 "inner"
OpName %Uniforms "Uniforms"
OpMemberName %Uniforms 0 "dimAOuter"
OpMemberName %Uniforms 1 "dimInner"
OpMemberName %Uniforms 2 "dimBOuter"
OpName %uniforms "uniforms"
OpName %mm_Asub "mm_Asub"
OpName %mm_Bsub "mm_Bsub"
OpName %mm_readA "mm_readA"
OpName %row "row"
OpName %col "col"
OpName %tint_return_flag "tint_return_flag"
OpName %tint_return_value "tint_return_value"
OpName %mm_readB "mm_readB"
OpName %row_0 "row"
OpName %col_0 "col"
OpName %tint_return_flag_1 "tint_return_flag_1"
OpName %tint_return_value_1 "tint_return_value_1"
OpName %mm_write "mm_write"
OpName %row_1 "row"
OpName %col_1 "col"
OpName %value "value"
OpName %main_inner "main_inner"
OpName %local_id "local_id"
OpName %global_id "global_id"
OpName %local_invocation_index "local_invocation_index"
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"
OpName %main "main"
OpDecorate %local_id_1 BuiltIn LocalInvocationId
OpDecorate %global_id_1 BuiltIn GlobalInvocationId
OpDecorate %local_invocation_index_1 BuiltIn LocalInvocationIndex
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 DescriptorSet 0
OpDecorate %resultMatrix Binding 2
OpDecorate %uniforms_block Block
OpMemberDecorate %uniforms_block 0 Offset 0
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_uint_64 ArrayStride 4
OpDecorate %_arr__arr_float_uint_64_uint_64 ArrayStride 256
OpDecorate %_arr_float_uint_16 ArrayStride 4
OpDecorate %_arr_float_uint_4 ArrayStride 4
%uint = OpTypeInt 32 0
%v3uint = OpTypeVector %uint 3
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%local_id_1 = OpVariable %_ptr_Input_v3uint Input
%global_id_1 = OpVariable %_ptr_Input_v3uint Input
%_ptr_Input_uint = OpTypePointer Input %uint
%local_invocation_index_1 = OpVariable %_ptr_Input_uint Input
%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
%Uniforms = OpTypeStruct %uint %uint %uint
%uniforms_block = OpTypeStruct %Uniforms
%_ptr_Uniform_uniforms_block = OpTypePointer Uniform %uniforms_block
%uniforms = OpVariable %_ptr_Uniform_uniforms_block Uniform
%uint_64 = OpConstant %uint 64
%_arr_float_uint_64 = OpTypeArray %float %uint_64
%_arr__arr_float_uint_64_uint_64 = OpTypeArray %_arr_float_uint_64 %uint_64
%_ptr_Workgroup__arr__arr_float_uint_64_uint_64 = OpTypePointer Workgroup %_arr__arr_float_uint_64_uint_64
%mm_Asub = OpVariable %_ptr_Workgroup__arr__arr_float_uint_64_uint_64 Workgroup
%mm_Bsub = OpVariable %_ptr_Workgroup__arr__arr_float_uint_64_uint_64 Workgroup
%25 = OpTypeFunction %float %uint %uint
%bool = OpTypeBool
%_ptr_Function_bool = OpTypePointer Function %bool
%33 = OpConstantNull %bool
%_ptr_Function_float = OpTypePointer Function %float
%36 = OpConstantNull %float
%uint_0 = OpConstant %uint 0
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
%uint_1 = OpConstant %uint 1
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
%true = OpConstantTrue %bool
%uint_2 = OpConstant %uint 2
%void = OpTypeVoid
%93 = OpTypeFunction %void %uint %uint %float
%116 = OpTypeFunction %void %v3uint %v3uint %uint
%_ptr_Function_uint = OpTypePointer Function %uint
%124 = OpConstantNull %uint
%uint_4096 = OpConstant %uint 4096
%_ptr_Workgroup_float = OpTypePointer Workgroup %float
%uint_256 = OpConstant %uint 256
%uint_264 = OpConstant %uint 264
%uint_4 = OpConstant %uint 4
%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
%165 = OpConstantNull %_arr_float_uint_16
%_arr_float_uint_4 = OpTypeArray %float %uint_4
%_ptr_Function__arr_float_uint_4 = OpTypePointer Function %_arr_float_uint_4
%170 = OpConstantNull %_arr_float_uint_4
%382 = OpTypeFunction %void
%mm_readA = OpFunction %float None %25
%row = OpFunctionParameter %uint
%col = OpFunctionParameter %uint
%29 = OpLabel
%tint_return_flag = OpVariable %_ptr_Function_bool Function %33
%tint_return_value = OpVariable %_ptr_Function_float Function %36
%39 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_0
%40 = OpLoad %uint %39
%41 = OpULessThan %bool %row %40
OpSelectionMerge %42 None
OpBranchConditional %41 %43 %42
%43 = OpLabel
%45 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_1
%46 = OpLoad %uint %45
%47 = OpULessThan %bool %col %46
OpBranch %42
%42 = OpLabel
%48 = OpPhi %bool %41 %29 %47 %43
OpSelectionMerge %49 None
OpBranchConditional %48 %50 %49
%50 = OpLabel
%51 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_1
%52 = OpLoad %uint %51
%53 = OpIMul %uint %row %52
%54 = OpIAdd %uint %53 %col
%56 = OpAccessChain %_ptr_StorageBuffer_float %firstMatrix %uint_0 %54
%57 = OpLoad %float %56
OpStore %tint_return_flag %true
OpStore %tint_return_value %57
OpBranch %49
%49 = OpLabel
%60 = OpLoad %bool %tint_return_flag
%59 = OpLogicalNot %bool %60
OpSelectionMerge %61 None
OpBranchConditional %59 %62 %61
%62 = OpLabel
OpStore %tint_return_flag %true
OpStore %tint_return_value %36
OpBranch %61
%61 = OpLabel
%63 = OpLoad %float %tint_return_value
OpReturnValue %63
OpFunctionEnd
%mm_readB = OpFunction %float None %25
%row_0 = OpFunctionParameter %uint
%col_0 = OpFunctionParameter %uint
%67 = OpLabel
%tint_return_flag_1 = OpVariable %_ptr_Function_bool Function %33
%tint_return_value_1 = OpVariable %_ptr_Function_float Function %36
%70 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_1
%71 = OpLoad %uint %70
%72 = OpULessThan %bool %row_0 %71
OpSelectionMerge %73 None
OpBranchConditional %72 %74 %73
%74 = OpLabel
%76 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_2
%77 = OpLoad %uint %76
%78 = OpULessThan %bool %col_0 %77
OpBranch %73
%73 = OpLabel
%79 = OpPhi %bool %72 %67 %78 %74
OpSelectionMerge %80 None
OpBranchConditional %79 %81 %80
%81 = OpLabel
%82 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_2
%83 = OpLoad %uint %82
%84 = OpIMul %uint %row_0 %83
%85 = OpIAdd %uint %84 %col_0
%86 = OpAccessChain %_ptr_StorageBuffer_float %secondMatrix %uint_0 %85
%87 = OpLoad %float %86
OpStore %tint_return_flag_1 %true
OpStore %tint_return_value_1 %87
OpBranch %80
%80 = OpLabel
%89 = OpLoad %bool %tint_return_flag_1
%88 = OpLogicalNot %bool %89
OpSelectionMerge %90 None
OpBranchConditional %88 %91 %90
%91 = OpLabel
OpStore %tint_return_flag_1 %true
OpStore %tint_return_value_1 %36
OpBranch %90
%90 = OpLabel
%92 = OpLoad %float %tint_return_value_1
OpReturnValue %92
OpFunctionEnd
%mm_write = OpFunction %void None %93
%row_1 = OpFunctionParameter %uint
%col_1 = OpFunctionParameter %uint
%value = OpFunctionParameter %float
%99 = OpLabel
%100 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_0
%101 = OpLoad %uint %100
%102 = OpULessThan %bool %row_1 %101
OpSelectionMerge %103 None
OpBranchConditional %102 %104 %103
%104 = OpLabel
%105 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_2
%106 = OpLoad %uint %105
%107 = OpULessThan %bool %col_1 %106
OpBranch %103
%103 = OpLabel
%108 = OpPhi %bool %102 %99 %107 %104
OpSelectionMerge %109 None
OpBranchConditional %108 %110 %109
%110 = OpLabel
%111 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_2
%112 = OpLoad %uint %111
%113 = OpIMul %uint %row_1 %112
%114 = OpIAdd %uint %col_1 %113
%115 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %114
OpStore %115 %value
OpBranch %109
%109 = OpLabel
OpReturn
OpFunctionEnd
%main_inner = OpFunction %void None %116
%local_id = OpFunctionParameter %v3uint
%global_id = OpFunctionParameter %v3uint
%local_invocation_index = OpFunctionParameter %uint
%121 = OpLabel
%idx = OpVariable %_ptr_Function_uint Function %124
%acc = OpVariable %_ptr_Function__arr_float_uint_16 Function %165
%ACached = OpVariable %_ptr_Function_float Function %36
%BCached = OpVariable %_ptr_Function__arr_float_uint_4 Function %170
%index = OpVariable %_ptr_Function_uint Function %124
%t = OpVariable %_ptr_Function_uint Function %124
%innerRow = OpVariable %_ptr_Function_uint Function %124
%innerCol = OpVariable %_ptr_Function_uint Function %124
%innerRow_0 = OpVariable %_ptr_Function_uint Function %124
%innerCol_0 = OpVariable %_ptr_Function_uint Function %124
%k = OpVariable %_ptr_Function_uint Function %124
%inner = OpVariable %_ptr_Function_uint Function %124
%innerRow_1 = OpVariable %_ptr_Function_uint Function %124
%innerCol_1 = OpVariable %_ptr_Function_uint Function %124
%innerRow_2 = OpVariable %_ptr_Function_uint Function %124
%innerCol_2 = OpVariable %_ptr_Function_uint Function %124
OpStore %idx %local_invocation_index
OpBranch %125
%125 = OpLabel
OpLoopMerge %126 %127 None
OpBranch %128
%128 = OpLabel
%130 = OpLoad %uint %idx
%132 = OpULessThan %bool %130 %uint_4096
%129 = OpLogicalNot %bool %132
OpSelectionMerge %133 None
OpBranchConditional %129 %134 %133
%134 = OpLabel
OpBranch %126
%133 = OpLabel
%135 = OpLoad %uint %idx
%136 = OpUDiv %uint %135 %uint_64
%137 = OpLoad %uint %idx
%138 = OpUMod %uint %137 %uint_64
%140 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %136 %138
OpStore %140 %36
%141 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %136 %138
OpStore %141 %36
OpBranch %127
%127 = OpLabel
%142 = OpLoad %uint %idx
%144 = OpIAdd %uint %142 %uint_256
OpStore %idx %144
OpBranch %125
%126 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
%147 = OpCompositeExtract %uint %local_id 1
%149 = OpIMul %uint %147 %uint_4
%150 = OpCompositeExtract %uint %local_id 0
%151 = OpIMul %uint %150 %uint_4
%152 = OpCompositeExtract %uint %global_id 1
%153 = OpIMul %uint %152 %uint_4
%154 = OpCompositeExtract %uint %global_id 0
%155 = OpIMul %uint %154 %uint_4
%156 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_1
%157 = OpLoad %uint %156
%158 = OpISub %uint %157 %uint_1
%159 = OpUDiv %uint %158 %uint_64
%160 = OpIAdd %uint %159 %uint_1
OpStore %index %124
OpBranch %172
%172 = OpLabel
OpLoopMerge %173 %174 None
OpBranch %175
%175 = OpLabel
%177 = OpLoad %uint %index
%178 = OpULessThan %bool %177 %uint_16
%176 = OpLogicalNot %bool %178
OpSelectionMerge %179 None
OpBranchConditional %176 %180 %179
%180 = OpLabel
OpBranch %173
%179 = OpLabel
%181 = OpLoad %uint %index
%182 = OpAccessChain %_ptr_Function_float %acc %181
OpStore %182 %36
OpBranch %174
%174 = OpLabel
%183 = OpLoad %uint %index
%184 = OpIAdd %uint %183 %uint_1
OpStore %index %184
OpBranch %172
%173 = OpLabel
%185 = OpCompositeExtract %uint %local_id 0
%186 = OpIMul %uint %185 %uint_4
%187 = OpCompositeExtract %uint %local_id 1
%188 = OpIMul %uint %187 %uint_4
OpStore %t %124
OpBranch %190
%190 = OpLabel
OpLoopMerge %191 %192 None
OpBranch %193
%193 = OpLabel
%195 = OpLoad %uint %t
%196 = OpULessThan %bool %195 %160
%194 = OpLogicalNot %bool %196
OpSelectionMerge %197 None
OpBranchConditional %194 %198 %197
%198 = OpLabel
OpBranch %191
%197 = OpLabel
OpStore %innerRow %124
OpBranch %200
%200 = OpLabel
OpLoopMerge %201 %202 None
OpBranch %203
%203 = OpLabel
%205 = OpLoad %uint %innerRow
%206 = OpULessThan %bool %205 %uint_4
%204 = OpLogicalNot %bool %206
OpSelectionMerge %207 None
OpBranchConditional %204 %208 %207
%208 = OpLabel
OpBranch %201
%207 = OpLabel
OpStore %innerCol %124
OpBranch %210
%210 = OpLabel
OpLoopMerge %211 %212 None
OpBranch %213
%213 = OpLabel
%215 = OpLoad %uint %innerCol
%216 = OpULessThan %bool %215 %uint_4
%214 = OpLogicalNot %bool %216
OpSelectionMerge %217 None
OpBranchConditional %214 %218 %217
%218 = OpLabel
OpBranch %211
%217 = OpLabel
%219 = OpLoad %uint %innerRow
%220 = OpIAdd %uint %149 %219
%221 = OpLoad %uint %innerCol
%222 = OpIAdd %uint %186 %221
%224 = OpLoad %uint %innerRow
%225 = OpIAdd %uint %153 %224
%226 = OpLoad %uint %t
%227 = OpIMul %uint %226 %uint_64
%228 = OpIAdd %uint %227 %222
%223 = OpFunctionCall %float %mm_readA %225 %228
%229 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %220 %222
OpStore %229 %223
OpBranch %212
%212 = OpLabel
%230 = OpLoad %uint %innerCol
%231 = OpIAdd %uint %230 %uint_1
OpStore %innerCol %231
OpBranch %210
%211 = OpLabel
OpBranch %202
%202 = OpLabel
%232 = OpLoad %uint %innerRow
%233 = OpIAdd %uint %232 %uint_1
OpStore %innerRow %233
OpBranch %200
%201 = OpLabel
OpStore %innerRow_0 %124
OpBranch %235
%235 = OpLabel
OpLoopMerge %236 %237 None
OpBranch %238
%238 = OpLabel
%240 = OpLoad %uint %innerRow_0
%241 = OpULessThan %bool %240 %uint_4
%239 = OpLogicalNot %bool %241
OpSelectionMerge %242 None
OpBranchConditional %239 %243 %242
%243 = OpLabel
OpBranch %236
%242 = OpLabel
OpStore %innerCol_0 %124
OpBranch %245
%245 = OpLabel
OpLoopMerge %246 %247 None
OpBranch %248
%248 = OpLabel
%250 = OpLoad %uint %innerCol_0
%251 = OpULessThan %bool %250 %uint_4
%249 = OpLogicalNot %bool %251
OpSelectionMerge %252 None
OpBranchConditional %249 %253 %252
%253 = OpLabel
OpBranch %246
%252 = OpLabel
%254 = OpLoad %uint %innerRow_0
%255 = OpIAdd %uint %188 %254
%256 = OpLoad %uint %innerCol_0
%257 = OpIAdd %uint %151 %256
%259 = OpLoad %uint %t
%260 = OpIMul %uint %259 %uint_64
%261 = OpIAdd %uint %260 %255
%262 = OpLoad %uint %innerCol_0
%263 = OpIAdd %uint %155 %262
%258 = OpFunctionCall %float %mm_readB %261 %263
%264 = OpLoad %uint %innerCol_0
%265 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %264 %257
OpStore %265 %258
OpBranch %247
%247 = OpLabel
%266 = OpLoad %uint %innerCol_0
%267 = OpIAdd %uint %266 %uint_1
OpStore %innerCol_0 %267
OpBranch %245
%246 = OpLabel
OpBranch %237
%237 = OpLabel
%268 = OpLoad %uint %innerRow_0
%269 = OpIAdd %uint %268 %uint_1
OpStore %innerRow_0 %269
OpBranch %235
%236 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpStore %k %124
OpBranch %272
%272 = OpLabel
OpLoopMerge %273 %274 None
OpBranch %275
%275 = OpLabel
%277 = OpLoad %uint %k
%278 = OpULessThan %bool %277 %uint_64
%276 = OpLogicalNot %bool %278
OpSelectionMerge %279 None
OpBranchConditional %276 %280 %279
%280 = OpLabel
OpBranch %273
%279 = OpLabel
OpStore %inner %124
OpBranch %282
%282 = OpLabel
OpLoopMerge %283 %284 None
OpBranch %285
%285 = OpLabel
%287 = OpLoad %uint %inner
%288 = OpULessThan %bool %287 %uint_4
%286 = OpLogicalNot %bool %288
OpSelectionMerge %289 None
OpBranchConditional %286 %290 %289
%290 = OpLabel
OpBranch %283
%289 = OpLabel
%291 = OpLoad %uint %inner
%292 = OpAccessChain %_ptr_Function_float %BCached %291
%293 = OpLoad %uint %k
%294 = OpLoad %uint %inner
%295 = OpIAdd %uint %151 %294
%296 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %293 %295
%297 = OpLoad %float %296
OpStore %292 %297
OpBranch %284
%284 = OpLabel
%298 = OpLoad %uint %inner
%299 = OpIAdd %uint %298 %uint_1
OpStore %inner %299
OpBranch %282
%283 = OpLabel
OpStore %innerRow_1 %124
OpBranch %301
%301 = OpLabel
OpLoopMerge %302 %303 None
OpBranch %304
%304 = OpLabel
%306 = OpLoad %uint %innerRow_1
%307 = OpULessThan %bool %306 %uint_4
%305 = OpLogicalNot %bool %307
OpSelectionMerge %308 None
OpBranchConditional %305 %309 %308
%309 = OpLabel
OpBranch %302
%308 = OpLabel
%310 = OpLoad %uint %innerRow_1
%311 = OpIAdd %uint %149 %310
%312 = OpLoad %uint %k
%313 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %311 %312
%314 = OpLoad %float %313
OpStore %ACached %314
OpStore %innerCol_1 %124
OpBranch %316
%316 = OpLabel
OpLoopMerge %317 %318 None
OpBranch %319
%319 = OpLabel
%321 = OpLoad %uint %innerCol_1
%322 = OpULessThan %bool %321 %uint_4
%320 = OpLogicalNot %bool %322
OpSelectionMerge %323 None
OpBranchConditional %320 %324 %323
%324 = OpLabel
OpBranch %317
%323 = OpLabel
%325 = OpLoad %uint %innerRow_1
%326 = OpIMul %uint %325 %uint_4
%327 = OpLoad %uint %innerCol_1
%328 = OpIAdd %uint %326 %327
%329 = OpAccessChain %_ptr_Function_float %acc %328
%330 = OpAccessChain %_ptr_Function_float %acc %328
%331 = OpLoad %float %330
%332 = OpLoad %float %ACached
%333 = OpLoad %uint %innerCol_1
%334 = OpAccessChain %_ptr_Function_float %BCached %333
%335 = OpLoad %float %334
%336 = OpFMul %float %332 %335
%337 = OpFAdd %float %331 %336
OpStore %329 %337
OpBranch %318
%318 = OpLabel
%338 = OpLoad %uint %innerCol_1
%339 = OpIAdd %uint %338 %uint_1
OpStore %innerCol_1 %339
OpBranch %316
%317 = OpLabel
OpBranch %303
%303 = OpLabel
%340 = OpLoad %uint %innerRow_1
%341 = OpIAdd %uint %340 %uint_1
OpStore %innerRow_1 %341
OpBranch %301
%302 = OpLabel
OpBranch %274
%274 = OpLabel
%342 = OpLoad %uint %k
%343 = OpIAdd %uint %342 %uint_1
OpStore %k %343
OpBranch %272
%273 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpBranch %192
%192 = OpLabel
%345 = OpLoad %uint %t
%346 = OpIAdd %uint %345 %uint_1
OpStore %t %346
OpBranch %190
%191 = OpLabel
OpStore %innerRow_2 %124
OpBranch %348
%348 = OpLabel
OpLoopMerge %349 %350 None
OpBranch %351
%351 = OpLabel
%353 = OpLoad %uint %innerRow_2
%354 = OpULessThan %bool %353 %uint_4
%352 = OpLogicalNot %bool %354
OpSelectionMerge %355 None
OpBranchConditional %352 %356 %355
%356 = OpLabel
OpBranch %349
%355 = OpLabel
OpStore %innerCol_2 %124
OpBranch %358
%358 = OpLabel
OpLoopMerge %359 %360 None
OpBranch %361
%361 = OpLabel
%363 = OpLoad %uint %innerCol_2
%364 = OpULessThan %bool %363 %uint_4
%362 = OpLogicalNot %bool %364
OpSelectionMerge %365 None
OpBranchConditional %362 %366 %365
%366 = OpLabel
OpBranch %359
%365 = OpLabel
%367 = OpLoad %uint %innerRow_2
%368 = OpIMul %uint %367 %uint_4
%369 = OpLoad %uint %innerCol_2
%370 = OpIAdd %uint %368 %369
%372 = OpLoad %uint %innerRow_2
%373 = OpIAdd %uint %153 %372
%374 = OpLoad %uint %innerCol_2
%375 = OpIAdd %uint %155 %374
%376 = OpAccessChain %_ptr_Function_float %acc %370
%377 = OpLoad %float %376
%371 = OpFunctionCall %void %mm_write %373 %375 %377
OpBranch %360
%360 = OpLabel
%378 = OpLoad %uint %innerCol_2
%379 = OpIAdd %uint %378 %uint_1
OpStore %innerCol_2 %379
OpBranch %358
%359 = OpLabel
OpBranch %350
%350 = OpLabel
%380 = OpLoad %uint %innerRow_2
%381 = OpIAdd %uint %380 %uint_1
OpStore %innerRow_2 %381
OpBranch %348
%349 = OpLabel
OpReturn
OpFunctionEnd
%main = OpFunction %void None %382
%384 = OpLabel
%386 = OpLoad %v3uint %local_id_1
%387 = OpLoad %v3uint %global_id_1
%388 = OpLoad %uint %local_invocation_index_1
%385 = OpFunctionCall %void %main_inner %386 %387 %388
OpReturn
OpFunctionEnd