blob: c5d77b146f243c2306d81121b41301ca24e97b69 [file] [log] [blame]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 402
; 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 %tint_zero_workgroup_memory "tint_zero_workgroup_memory"
OpName %local_idx "local_idx"
OpName %idx "idx"
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 %tint_div "tint_div"
OpName %lhs "lhs"
OpName %rhs "rhs"
OpName %main_inner "main_inner"
OpName %local_id "local_id"
OpName %global_id "global_id"
OpName %local_invocation_index "local_invocation_index"
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
%void = OpTypeVoid
%25 = OpTypeFunction %void %uint
%_ptr_Function_uint = OpTypePointer Function %uint
%32 = OpConstantNull %uint
%uint_4096 = OpConstant %uint 4096
%bool = OpTypeBool
%_ptr_Workgroup_float = OpTypePointer Workgroup %float
%50 = OpConstantNull %float
%uint_256 = OpConstant %uint 256
%uint_2 = OpConstant %uint 2
%uint_264 = OpConstant %uint 264
%58 = OpTypeFunction %float %uint %uint
%_ptr_Function_bool = OpTypePointer Function %bool
%65 = OpConstantNull %bool
%_ptr_Function_float = OpTypePointer Function %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
%123 = OpTypeFunction %void %uint %uint %float
%145 = OpTypeFunction %uint %uint %uint
%153 = OpTypeFunction %void %v3uint %v3uint %uint
%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
%178 = 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
%183 = OpConstantNull %_arr_float_uint_4
%395 = OpTypeFunction %void
%tint_zero_workgroup_memory = OpFunction %void None %25
%local_idx = OpFunctionParameter %uint
%29 = OpLabel
%idx = OpVariable %_ptr_Function_uint Function %32
OpStore %idx %local_idx
OpBranch %33
%33 = OpLabel
OpLoopMerge %34 %35 None
OpBranch %36
%36 = OpLabel
%38 = OpLoad %uint %idx
%40 = OpULessThan %bool %38 %uint_4096
%37 = OpLogicalNot %bool %40
OpSelectionMerge %42 None
OpBranchConditional %37 %43 %42
%43 = OpLabel
OpBranch %34
%42 = OpLabel
%44 = OpLoad %uint %idx
%45 = OpUDiv %uint %44 %uint_64
%46 = OpLoad %uint %idx
%47 = OpUMod %uint %46 %uint_64
%49 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %45 %47
OpStore %49 %50
%51 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %45 %47
OpStore %51 %50
OpBranch %35
%35 = OpLabel
%52 = OpLoad %uint %idx
%54 = OpIAdd %uint %52 %uint_256
OpStore %idx %54
OpBranch %33
%34 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpReturn
OpFunctionEnd
%mm_readA = OpFunction %float None %58
%row = OpFunctionParameter %uint
%col = OpFunctionParameter %uint
%62 = OpLabel
%tint_return_flag = OpVariable %_ptr_Function_bool Function %65
%tint_return_value = OpVariable %_ptr_Function_float Function %50
%70 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_0
%71 = OpLoad %uint %70
%72 = OpULessThan %bool %row %71
OpSelectionMerge %73 None
OpBranchConditional %72 %74 %73
%74 = OpLabel
%76 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_1
%77 = OpLoad %uint %76
%78 = OpULessThan %bool %col %77
OpBranch %73
%73 = OpLabel
%79 = OpPhi %bool %72 %62 %78 %74
OpSelectionMerge %80 None
OpBranchConditional %79 %81 %80
%81 = OpLabel
%82 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_1
%83 = OpLoad %uint %82
%84 = OpIMul %uint %row %83
%85 = OpIAdd %uint %84 %col
%87 = OpAccessChain %_ptr_StorageBuffer_float %firstMatrix %uint_0 %85
%88 = OpLoad %float %87
OpStore %tint_return_flag %true
OpStore %tint_return_value %88
OpBranch %80
%80 = OpLabel
%91 = OpLoad %bool %tint_return_flag
%90 = OpLogicalNot %bool %91
OpSelectionMerge %92 None
OpBranchConditional %90 %93 %92
%93 = OpLabel
OpStore %tint_return_flag %true
OpStore %tint_return_value %50
OpBranch %92
%92 = OpLabel
%94 = OpLoad %float %tint_return_value
OpReturnValue %94
OpFunctionEnd
%mm_readB = OpFunction %float None %58
%row_0 = OpFunctionParameter %uint
%col_0 = OpFunctionParameter %uint
%98 = OpLabel
%tint_return_flag_1 = OpVariable %_ptr_Function_bool Function %65
%tint_return_value_1 = OpVariable %_ptr_Function_float Function %50
%101 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_1
%102 = OpLoad %uint %101
%103 = OpULessThan %bool %row_0 %102
OpSelectionMerge %104 None
OpBranchConditional %103 %105 %104
%105 = OpLabel
%106 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_2
%107 = OpLoad %uint %106
%108 = OpULessThan %bool %col_0 %107
OpBranch %104
%104 = OpLabel
%109 = OpPhi %bool %103 %98 %108 %105
OpSelectionMerge %110 None
OpBranchConditional %109 %111 %110
%111 = OpLabel
%112 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_2
%113 = OpLoad %uint %112
%114 = OpIMul %uint %row_0 %113
%115 = OpIAdd %uint %114 %col_0
%116 = OpAccessChain %_ptr_StorageBuffer_float %secondMatrix %uint_0 %115
%117 = OpLoad %float %116
OpStore %tint_return_flag_1 %true
OpStore %tint_return_value_1 %117
OpBranch %110
%110 = OpLabel
%119 = OpLoad %bool %tint_return_flag_1
%118 = OpLogicalNot %bool %119
OpSelectionMerge %120 None
OpBranchConditional %118 %121 %120
%121 = OpLabel
OpStore %tint_return_flag_1 %true
OpStore %tint_return_value_1 %50
OpBranch %120
%120 = OpLabel
%122 = OpLoad %float %tint_return_value_1
OpReturnValue %122
OpFunctionEnd
%mm_write = OpFunction %void None %123
%row_1 = OpFunctionParameter %uint
%col_1 = OpFunctionParameter %uint
%value = OpFunctionParameter %float
%128 = OpLabel
%129 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_0
%130 = OpLoad %uint %129
%131 = OpULessThan %bool %row_1 %130
OpSelectionMerge %132 None
OpBranchConditional %131 %133 %132
%133 = OpLabel
%134 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_2
%135 = OpLoad %uint %134
%136 = OpULessThan %bool %col_1 %135
OpBranch %132
%132 = OpLabel
%137 = OpPhi %bool %131 %128 %136 %133
OpSelectionMerge %138 None
OpBranchConditional %137 %139 %138
%139 = OpLabel
%140 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_2
%141 = OpLoad %uint %140
%142 = OpIMul %uint %row_1 %141
%143 = OpIAdd %uint %col_1 %142
%144 = OpAccessChain %_ptr_StorageBuffer_float %resultMatrix %uint_0 %143
OpStore %144 %value
OpBranch %138
%138 = OpLabel
OpReturn
OpFunctionEnd
%tint_div = OpFunction %uint None %145
%lhs = OpFunctionParameter %uint
%rhs = OpFunctionParameter %uint
%149 = OpLabel
%151 = OpIEqual %bool %rhs %32
%150 = OpSelect %uint %151 %uint_1 %rhs
%152 = OpUDiv %uint %lhs %150
OpReturnValue %152
OpFunctionEnd
%main_inner = OpFunction %void None %153
%local_id = OpFunctionParameter %v3uint
%global_id = OpFunctionParameter %v3uint
%local_invocation_index = OpFunctionParameter %uint
%158 = OpLabel
%acc = OpVariable %_ptr_Function__arr_float_uint_16 Function %178
%ACached = OpVariable %_ptr_Function_float Function %50
%BCached = OpVariable %_ptr_Function__arr_float_uint_4 Function %183
%index = OpVariable %_ptr_Function_uint Function %32
%t = OpVariable %_ptr_Function_uint Function %32
%innerRow = OpVariable %_ptr_Function_uint Function %32
%innerCol = OpVariable %_ptr_Function_uint Function %32
%innerRow_0 = OpVariable %_ptr_Function_uint Function %32
%innerCol_0 = OpVariable %_ptr_Function_uint Function %32
%k = OpVariable %_ptr_Function_uint Function %32
%inner = OpVariable %_ptr_Function_uint Function %32
%innerRow_1 = OpVariable %_ptr_Function_uint Function %32
%innerCol_1 = OpVariable %_ptr_Function_uint Function %32
%innerRow_2 = OpVariable %_ptr_Function_uint Function %32
%innerCol_2 = OpVariable %_ptr_Function_uint Function %32
%159 = OpFunctionCall %void %tint_zero_workgroup_memory %local_invocation_index
%160 = OpCompositeExtract %uint %local_id 1
%162 = OpIMul %uint %160 %uint_4
%163 = OpCompositeExtract %uint %local_id 0
%164 = OpIMul %uint %163 %uint_4
%165 = OpCompositeExtract %uint %global_id 1
%166 = OpIMul %uint %165 %uint_4
%167 = OpCompositeExtract %uint %global_id 0
%168 = OpIMul %uint %167 %uint_4
%170 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_1
%171 = OpLoad %uint %170
%172 = OpISub %uint %171 %uint_1
%169 = OpFunctionCall %uint %tint_div %172 %uint_64
%173 = OpIAdd %uint %169 %uint_1
OpStore %index %32
OpBranch %185
%185 = OpLabel
OpLoopMerge %186 %187 None
OpBranch %188
%188 = OpLabel
%190 = OpLoad %uint %index
%191 = OpULessThan %bool %190 %uint_16
%189 = OpLogicalNot %bool %191
OpSelectionMerge %192 None
OpBranchConditional %189 %193 %192
%193 = OpLabel
OpBranch %186
%192 = OpLabel
%194 = OpLoad %uint %index
%195 = OpAccessChain %_ptr_Function_float %acc %194
OpStore %195 %50
OpBranch %187
%187 = OpLabel
%196 = OpLoad %uint %index
%197 = OpIAdd %uint %196 %uint_1
OpStore %index %197
OpBranch %185
%186 = OpLabel
%198 = OpCompositeExtract %uint %local_id 0
%199 = OpIMul %uint %198 %uint_4
%200 = OpCompositeExtract %uint %local_id 1
%201 = OpIMul %uint %200 %uint_4
OpStore %t %32
OpBranch %203
%203 = OpLabel
OpLoopMerge %204 %205 None
OpBranch %206
%206 = OpLabel
%208 = OpLoad %uint %t
%209 = OpULessThan %bool %208 %173
%207 = OpLogicalNot %bool %209
OpSelectionMerge %210 None
OpBranchConditional %207 %211 %210
%211 = OpLabel
OpBranch %204
%210 = OpLabel
OpStore %innerRow %32
OpBranch %213
%213 = OpLabel
OpLoopMerge %214 %215 None
OpBranch %216
%216 = OpLabel
%218 = OpLoad %uint %innerRow
%219 = OpULessThan %bool %218 %uint_4
%217 = OpLogicalNot %bool %219
OpSelectionMerge %220 None
OpBranchConditional %217 %221 %220
%221 = OpLabel
OpBranch %214
%220 = OpLabel
OpStore %innerCol %32
OpBranch %223
%223 = OpLabel
OpLoopMerge %224 %225 None
OpBranch %226
%226 = OpLabel
%228 = OpLoad %uint %innerCol
%229 = OpULessThan %bool %228 %uint_4
%227 = OpLogicalNot %bool %229
OpSelectionMerge %230 None
OpBranchConditional %227 %231 %230
%231 = OpLabel
OpBranch %224
%230 = OpLabel
%232 = OpLoad %uint %innerRow
%233 = OpIAdd %uint %162 %232
%234 = OpLoad %uint %innerCol
%235 = OpIAdd %uint %199 %234
%236 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %233 %235
%238 = OpLoad %uint %innerRow
%239 = OpIAdd %uint %166 %238
%240 = OpLoad %uint %t
%241 = OpIMul %uint %240 %uint_64
%242 = OpIAdd %uint %241 %235
%237 = OpFunctionCall %float %mm_readA %239 %242
OpStore %236 %237
OpBranch %225
%225 = OpLabel
%243 = OpLoad %uint %innerCol
%244 = OpIAdd %uint %243 %uint_1
OpStore %innerCol %244
OpBranch %223
%224 = OpLabel
OpBranch %215
%215 = OpLabel
%245 = OpLoad %uint %innerRow
%246 = OpIAdd %uint %245 %uint_1
OpStore %innerRow %246
OpBranch %213
%214 = OpLabel
OpStore %innerRow_0 %32
OpBranch %248
%248 = OpLabel
OpLoopMerge %249 %250 None
OpBranch %251
%251 = OpLabel
%253 = OpLoad %uint %innerRow_0
%254 = OpULessThan %bool %253 %uint_4
%252 = OpLogicalNot %bool %254
OpSelectionMerge %255 None
OpBranchConditional %252 %256 %255
%256 = OpLabel
OpBranch %249
%255 = OpLabel
OpStore %innerCol_0 %32
OpBranch %258
%258 = OpLabel
OpLoopMerge %259 %260 None
OpBranch %261
%261 = OpLabel
%263 = OpLoad %uint %innerCol_0
%264 = OpULessThan %bool %263 %uint_4
%262 = OpLogicalNot %bool %264
OpSelectionMerge %265 None
OpBranchConditional %262 %266 %265
%266 = OpLabel
OpBranch %259
%265 = OpLabel
%267 = OpLoad %uint %innerRow_0
%268 = OpIAdd %uint %201 %267
%269 = OpLoad %uint %innerCol_0
%270 = OpIAdd %uint %164 %269
%271 = OpLoad %uint %innerCol_0
%272 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %271 %270
%274 = OpLoad %uint %t
%275 = OpIMul %uint %274 %uint_64
%276 = OpIAdd %uint %275 %268
%277 = OpLoad %uint %innerCol_0
%278 = OpIAdd %uint %168 %277
%273 = OpFunctionCall %float %mm_readB %276 %278
OpStore %272 %273
OpBranch %260
%260 = OpLabel
%279 = OpLoad %uint %innerCol_0
%280 = OpIAdd %uint %279 %uint_1
OpStore %innerCol_0 %280
OpBranch %258
%259 = OpLabel
OpBranch %250
%250 = OpLabel
%281 = OpLoad %uint %innerRow_0
%282 = OpIAdd %uint %281 %uint_1
OpStore %innerRow_0 %282
OpBranch %248
%249 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpStore %k %32
OpBranch %285
%285 = OpLabel
OpLoopMerge %286 %287 None
OpBranch %288
%288 = OpLabel
%290 = OpLoad %uint %k
%291 = OpULessThan %bool %290 %uint_64
%289 = OpLogicalNot %bool %291
OpSelectionMerge %292 None
OpBranchConditional %289 %293 %292
%293 = OpLabel
OpBranch %286
%292 = OpLabel
OpStore %inner %32
OpBranch %295
%295 = OpLabel
OpLoopMerge %296 %297 None
OpBranch %298
%298 = OpLabel
%300 = OpLoad %uint %inner
%301 = OpULessThan %bool %300 %uint_4
%299 = OpLogicalNot %bool %301
OpSelectionMerge %302 None
OpBranchConditional %299 %303 %302
%303 = OpLabel
OpBranch %296
%302 = OpLabel
%304 = OpLoad %uint %inner
%305 = OpAccessChain %_ptr_Function_float %BCached %304
%306 = OpLoad %uint %k
%307 = OpLoad %uint %inner
%308 = OpIAdd %uint %164 %307
%309 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %306 %308
%310 = OpLoad %float %309
OpStore %305 %310
OpBranch %297
%297 = OpLabel
%311 = OpLoad %uint %inner
%312 = OpIAdd %uint %311 %uint_1
OpStore %inner %312
OpBranch %295
%296 = OpLabel
OpStore %innerRow_1 %32
OpBranch %314
%314 = OpLabel
OpLoopMerge %315 %316 None
OpBranch %317
%317 = OpLabel
%319 = OpLoad %uint %innerRow_1
%320 = OpULessThan %bool %319 %uint_4
%318 = OpLogicalNot %bool %320
OpSelectionMerge %321 None
OpBranchConditional %318 %322 %321
%322 = OpLabel
OpBranch %315
%321 = OpLabel
%323 = OpLoad %uint %innerRow_1
%324 = OpIAdd %uint %162 %323
%325 = OpLoad %uint %k
%326 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %324 %325
%327 = OpLoad %float %326
OpStore %ACached %327
OpStore %innerCol_1 %32
OpBranch %329
%329 = OpLabel
OpLoopMerge %330 %331 None
OpBranch %332
%332 = OpLabel
%334 = OpLoad %uint %innerCol_1
%335 = OpULessThan %bool %334 %uint_4
%333 = OpLogicalNot %bool %335
OpSelectionMerge %336 None
OpBranchConditional %333 %337 %336
%337 = OpLabel
OpBranch %330
%336 = OpLabel
%338 = OpLoad %uint %innerRow_1
%339 = OpIMul %uint %338 %uint_4
%340 = OpLoad %uint %innerCol_1
%341 = OpIAdd %uint %339 %340
%342 = OpAccessChain %_ptr_Function_float %acc %341
%343 = OpAccessChain %_ptr_Function_float %acc %341
%344 = OpLoad %float %343
%345 = OpLoad %float %ACached
%346 = OpLoad %uint %innerCol_1
%347 = OpAccessChain %_ptr_Function_float %BCached %346
%348 = OpLoad %float %347
%349 = OpFMul %float %345 %348
%350 = OpFAdd %float %344 %349
OpStore %342 %350
OpBranch %331
%331 = OpLabel
%351 = OpLoad %uint %innerCol_1
%352 = OpIAdd %uint %351 %uint_1
OpStore %innerCol_1 %352
OpBranch %329
%330 = OpLabel
OpBranch %316
%316 = OpLabel
%353 = OpLoad %uint %innerRow_1
%354 = OpIAdd %uint %353 %uint_1
OpStore %innerRow_1 %354
OpBranch %314
%315 = OpLabel
OpBranch %287
%287 = OpLabel
%355 = OpLoad %uint %k
%356 = OpIAdd %uint %355 %uint_1
OpStore %k %356
OpBranch %285
%286 = OpLabel
OpControlBarrier %uint_2 %uint_2 %uint_264
OpBranch %205
%205 = OpLabel
%358 = OpLoad %uint %t
%359 = OpIAdd %uint %358 %uint_1
OpStore %t %359
OpBranch %203
%204 = OpLabel
OpStore %innerRow_2 %32
OpBranch %361
%361 = OpLabel
OpLoopMerge %362 %363 None
OpBranch %364
%364 = OpLabel
%366 = OpLoad %uint %innerRow_2
%367 = OpULessThan %bool %366 %uint_4
%365 = OpLogicalNot %bool %367
OpSelectionMerge %368 None
OpBranchConditional %365 %369 %368
%369 = OpLabel
OpBranch %362
%368 = OpLabel
OpStore %innerCol_2 %32
OpBranch %371
%371 = OpLabel
OpLoopMerge %372 %373 None
OpBranch %374
%374 = OpLabel
%376 = OpLoad %uint %innerCol_2
%377 = OpULessThan %bool %376 %uint_4
%375 = OpLogicalNot %bool %377
OpSelectionMerge %378 None
OpBranchConditional %375 %379 %378
%379 = OpLabel
OpBranch %372
%378 = OpLabel
%380 = OpLoad %uint %innerRow_2
%381 = OpIMul %uint %380 %uint_4
%382 = OpLoad %uint %innerCol_2
%383 = OpIAdd %uint %381 %382
%385 = OpLoad %uint %innerRow_2
%386 = OpIAdd %uint %166 %385
%387 = OpLoad %uint %innerCol_2
%388 = OpIAdd %uint %168 %387
%389 = OpAccessChain %_ptr_Function_float %acc %383
%390 = OpLoad %float %389
%384 = OpFunctionCall %void %mm_write %386 %388 %390
OpBranch %373
%373 = OpLabel
%391 = OpLoad %uint %innerCol_2
%392 = OpIAdd %uint %391 %uint_1
OpStore %innerCol_2 %392
OpBranch %371
%372 = OpLabel
OpBranch %363
%363 = OpLabel
%393 = OpLoad %uint %innerRow_2
%394 = OpIAdd %uint %393 %uint_1
OpStore %innerRow_2 %394
OpBranch %361
%362 = OpLabel
OpReturn
OpFunctionEnd
%main = OpFunction %void None %395
%397 = OpLabel
%399 = OpLoad %v3uint %local_id_1
%400 = OpLoad %v3uint %global_id_1
%401 = OpLoad %uint %local_invocation_index_1
%398 = OpFunctionCall %void %main_inner %399 %400 %401
OpReturn
OpFunctionEnd