670 lines
26 KiB
Plaintext
670 lines
26 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.3
|
|
; Generator: Google Tint Compiler; 0
|
|
; Bound: 397
|
|
; 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 %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 %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 %uint %uint %uint
|
|
%122 = OpConstantNull %uint
|
|
%125 = OpTypeFunction %void %v3uint %v3uint %uint
|
|
%_ptr_Function_uint = OpTypePointer Function %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
|
|
%173 = 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
|
|
%178 = OpConstantNull %_arr_float_uint_4
|
|
%390 = 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
|
|
%tint_div = OpFunction %uint None %116
|
|
%lhs = OpFunctionParameter %uint
|
|
%rhs = OpFunctionParameter %uint
|
|
%120 = OpLabel
|
|
%123 = OpIEqual %bool %rhs %122
|
|
%121 = OpSelect %uint %123 %uint_1 %rhs
|
|
%124 = OpUDiv %uint %lhs %121
|
|
OpReturnValue %124
|
|
OpFunctionEnd
|
|
%main_inner = OpFunction %void None %125
|
|
%local_id = OpFunctionParameter %v3uint
|
|
%global_id = OpFunctionParameter %v3uint
|
|
%local_invocation_index = OpFunctionParameter %uint
|
|
%130 = OpLabel
|
|
%idx = OpVariable %_ptr_Function_uint Function %122
|
|
%acc = OpVariable %_ptr_Function__arr_float_uint_16 Function %173
|
|
%ACached = OpVariable %_ptr_Function_float Function %36
|
|
%BCached = OpVariable %_ptr_Function__arr_float_uint_4 Function %178
|
|
%index = OpVariable %_ptr_Function_uint Function %122
|
|
%t = OpVariable %_ptr_Function_uint Function %122
|
|
%innerRow = OpVariable %_ptr_Function_uint Function %122
|
|
%innerCol = OpVariable %_ptr_Function_uint Function %122
|
|
%innerRow_0 = OpVariable %_ptr_Function_uint Function %122
|
|
%innerCol_0 = OpVariable %_ptr_Function_uint Function %122
|
|
%k = OpVariable %_ptr_Function_uint Function %122
|
|
%inner = OpVariable %_ptr_Function_uint Function %122
|
|
%innerRow_1 = OpVariable %_ptr_Function_uint Function %122
|
|
%innerCol_1 = OpVariable %_ptr_Function_uint Function %122
|
|
%innerRow_2 = OpVariable %_ptr_Function_uint Function %122
|
|
%innerCol_2 = OpVariable %_ptr_Function_uint Function %122
|
|
OpStore %idx %local_invocation_index
|
|
OpBranch %133
|
|
%133 = OpLabel
|
|
OpLoopMerge %134 %135 None
|
|
OpBranch %136
|
|
%136 = OpLabel
|
|
%138 = OpLoad %uint %idx
|
|
%140 = OpULessThan %bool %138 %uint_4096
|
|
%137 = OpLogicalNot %bool %140
|
|
OpSelectionMerge %141 None
|
|
OpBranchConditional %137 %142 %141
|
|
%142 = OpLabel
|
|
OpBranch %134
|
|
%141 = OpLabel
|
|
%143 = OpLoad %uint %idx
|
|
%144 = OpUDiv %uint %143 %uint_64
|
|
%145 = OpLoad %uint %idx
|
|
%146 = OpUMod %uint %145 %uint_64
|
|
%148 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %144 %146
|
|
OpStore %148 %36
|
|
%149 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %144 %146
|
|
OpStore %149 %36
|
|
OpBranch %135
|
|
%135 = OpLabel
|
|
%150 = OpLoad %uint %idx
|
|
%152 = OpIAdd %uint %150 %uint_256
|
|
OpStore %idx %152
|
|
OpBranch %133
|
|
%134 = OpLabel
|
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
|
%155 = OpCompositeExtract %uint %local_id 1
|
|
%157 = OpIMul %uint %155 %uint_4
|
|
%158 = OpCompositeExtract %uint %local_id 0
|
|
%159 = OpIMul %uint %158 %uint_4
|
|
%160 = OpCompositeExtract %uint %global_id 1
|
|
%161 = OpIMul %uint %160 %uint_4
|
|
%162 = OpCompositeExtract %uint %global_id 0
|
|
%163 = OpIMul %uint %162 %uint_4
|
|
%165 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_0 %uint_1
|
|
%166 = OpLoad %uint %165
|
|
%167 = OpISub %uint %166 %uint_1
|
|
%164 = OpFunctionCall %uint %tint_div %167 %uint_64
|
|
%168 = OpIAdd %uint %164 %uint_1
|
|
OpStore %index %122
|
|
OpBranch %180
|
|
%180 = OpLabel
|
|
OpLoopMerge %181 %182 None
|
|
OpBranch %183
|
|
%183 = OpLabel
|
|
%185 = OpLoad %uint %index
|
|
%186 = OpULessThan %bool %185 %uint_16
|
|
%184 = OpLogicalNot %bool %186
|
|
OpSelectionMerge %187 None
|
|
OpBranchConditional %184 %188 %187
|
|
%188 = OpLabel
|
|
OpBranch %181
|
|
%187 = OpLabel
|
|
%189 = OpLoad %uint %index
|
|
%190 = OpAccessChain %_ptr_Function_float %acc %189
|
|
OpStore %190 %36
|
|
OpBranch %182
|
|
%182 = OpLabel
|
|
%191 = OpLoad %uint %index
|
|
%192 = OpIAdd %uint %191 %uint_1
|
|
OpStore %index %192
|
|
OpBranch %180
|
|
%181 = OpLabel
|
|
%193 = OpCompositeExtract %uint %local_id 0
|
|
%194 = OpIMul %uint %193 %uint_4
|
|
%195 = OpCompositeExtract %uint %local_id 1
|
|
%196 = OpIMul %uint %195 %uint_4
|
|
OpStore %t %122
|
|
OpBranch %198
|
|
%198 = OpLabel
|
|
OpLoopMerge %199 %200 None
|
|
OpBranch %201
|
|
%201 = OpLabel
|
|
%203 = OpLoad %uint %t
|
|
%204 = OpULessThan %bool %203 %168
|
|
%202 = OpLogicalNot %bool %204
|
|
OpSelectionMerge %205 None
|
|
OpBranchConditional %202 %206 %205
|
|
%206 = OpLabel
|
|
OpBranch %199
|
|
%205 = OpLabel
|
|
OpStore %innerRow %122
|
|
OpBranch %208
|
|
%208 = OpLabel
|
|
OpLoopMerge %209 %210 None
|
|
OpBranch %211
|
|
%211 = OpLabel
|
|
%213 = OpLoad %uint %innerRow
|
|
%214 = OpULessThan %bool %213 %uint_4
|
|
%212 = OpLogicalNot %bool %214
|
|
OpSelectionMerge %215 None
|
|
OpBranchConditional %212 %216 %215
|
|
%216 = OpLabel
|
|
OpBranch %209
|
|
%215 = OpLabel
|
|
OpStore %innerCol %122
|
|
OpBranch %218
|
|
%218 = OpLabel
|
|
OpLoopMerge %219 %220 None
|
|
OpBranch %221
|
|
%221 = OpLabel
|
|
%223 = OpLoad %uint %innerCol
|
|
%224 = OpULessThan %bool %223 %uint_4
|
|
%222 = OpLogicalNot %bool %224
|
|
OpSelectionMerge %225 None
|
|
OpBranchConditional %222 %226 %225
|
|
%226 = OpLabel
|
|
OpBranch %219
|
|
%225 = OpLabel
|
|
%227 = OpLoad %uint %innerRow
|
|
%228 = OpIAdd %uint %157 %227
|
|
%229 = OpLoad %uint %innerCol
|
|
%230 = OpIAdd %uint %194 %229
|
|
%231 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %228 %230
|
|
%233 = OpLoad %uint %innerRow
|
|
%234 = OpIAdd %uint %161 %233
|
|
%235 = OpLoad %uint %t
|
|
%236 = OpIMul %uint %235 %uint_64
|
|
%237 = OpIAdd %uint %236 %230
|
|
%232 = OpFunctionCall %float %mm_readA %234 %237
|
|
OpStore %231 %232
|
|
OpBranch %220
|
|
%220 = OpLabel
|
|
%238 = OpLoad %uint %innerCol
|
|
%239 = OpIAdd %uint %238 %uint_1
|
|
OpStore %innerCol %239
|
|
OpBranch %218
|
|
%219 = OpLabel
|
|
OpBranch %210
|
|
%210 = OpLabel
|
|
%240 = OpLoad %uint %innerRow
|
|
%241 = OpIAdd %uint %240 %uint_1
|
|
OpStore %innerRow %241
|
|
OpBranch %208
|
|
%209 = OpLabel
|
|
OpStore %innerRow_0 %122
|
|
OpBranch %243
|
|
%243 = OpLabel
|
|
OpLoopMerge %244 %245 None
|
|
OpBranch %246
|
|
%246 = OpLabel
|
|
%248 = OpLoad %uint %innerRow_0
|
|
%249 = OpULessThan %bool %248 %uint_4
|
|
%247 = OpLogicalNot %bool %249
|
|
OpSelectionMerge %250 None
|
|
OpBranchConditional %247 %251 %250
|
|
%251 = OpLabel
|
|
OpBranch %244
|
|
%250 = OpLabel
|
|
OpStore %innerCol_0 %122
|
|
OpBranch %253
|
|
%253 = OpLabel
|
|
OpLoopMerge %254 %255 None
|
|
OpBranch %256
|
|
%256 = OpLabel
|
|
%258 = OpLoad %uint %innerCol_0
|
|
%259 = OpULessThan %bool %258 %uint_4
|
|
%257 = OpLogicalNot %bool %259
|
|
OpSelectionMerge %260 None
|
|
OpBranchConditional %257 %261 %260
|
|
%261 = OpLabel
|
|
OpBranch %254
|
|
%260 = OpLabel
|
|
%262 = OpLoad %uint %innerRow_0
|
|
%263 = OpIAdd %uint %196 %262
|
|
%264 = OpLoad %uint %innerCol_0
|
|
%265 = OpIAdd %uint %159 %264
|
|
%266 = OpLoad %uint %innerCol_0
|
|
%267 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %266 %265
|
|
%269 = OpLoad %uint %t
|
|
%270 = OpIMul %uint %269 %uint_64
|
|
%271 = OpIAdd %uint %270 %263
|
|
%272 = OpLoad %uint %innerCol_0
|
|
%273 = OpIAdd %uint %163 %272
|
|
%268 = OpFunctionCall %float %mm_readB %271 %273
|
|
OpStore %267 %268
|
|
OpBranch %255
|
|
%255 = OpLabel
|
|
%274 = OpLoad %uint %innerCol_0
|
|
%275 = OpIAdd %uint %274 %uint_1
|
|
OpStore %innerCol_0 %275
|
|
OpBranch %253
|
|
%254 = OpLabel
|
|
OpBranch %245
|
|
%245 = OpLabel
|
|
%276 = OpLoad %uint %innerRow_0
|
|
%277 = OpIAdd %uint %276 %uint_1
|
|
OpStore %innerRow_0 %277
|
|
OpBranch %243
|
|
%244 = OpLabel
|
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
|
OpStore %k %122
|
|
OpBranch %280
|
|
%280 = OpLabel
|
|
OpLoopMerge %281 %282 None
|
|
OpBranch %283
|
|
%283 = OpLabel
|
|
%285 = OpLoad %uint %k
|
|
%286 = OpULessThan %bool %285 %uint_64
|
|
%284 = OpLogicalNot %bool %286
|
|
OpSelectionMerge %287 None
|
|
OpBranchConditional %284 %288 %287
|
|
%288 = OpLabel
|
|
OpBranch %281
|
|
%287 = OpLabel
|
|
OpStore %inner %122
|
|
OpBranch %290
|
|
%290 = OpLabel
|
|
OpLoopMerge %291 %292 None
|
|
OpBranch %293
|
|
%293 = OpLabel
|
|
%295 = OpLoad %uint %inner
|
|
%296 = OpULessThan %bool %295 %uint_4
|
|
%294 = OpLogicalNot %bool %296
|
|
OpSelectionMerge %297 None
|
|
OpBranchConditional %294 %298 %297
|
|
%298 = OpLabel
|
|
OpBranch %291
|
|
%297 = OpLabel
|
|
%299 = OpLoad %uint %inner
|
|
%300 = OpAccessChain %_ptr_Function_float %BCached %299
|
|
%301 = OpLoad %uint %k
|
|
%302 = OpLoad %uint %inner
|
|
%303 = OpIAdd %uint %159 %302
|
|
%304 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %301 %303
|
|
%305 = OpLoad %float %304
|
|
OpStore %300 %305
|
|
OpBranch %292
|
|
%292 = OpLabel
|
|
%306 = OpLoad %uint %inner
|
|
%307 = OpIAdd %uint %306 %uint_1
|
|
OpStore %inner %307
|
|
OpBranch %290
|
|
%291 = OpLabel
|
|
OpStore %innerRow_1 %122
|
|
OpBranch %309
|
|
%309 = OpLabel
|
|
OpLoopMerge %310 %311 None
|
|
OpBranch %312
|
|
%312 = OpLabel
|
|
%314 = OpLoad %uint %innerRow_1
|
|
%315 = OpULessThan %bool %314 %uint_4
|
|
%313 = OpLogicalNot %bool %315
|
|
OpSelectionMerge %316 None
|
|
OpBranchConditional %313 %317 %316
|
|
%317 = OpLabel
|
|
OpBranch %310
|
|
%316 = OpLabel
|
|
%318 = OpLoad %uint %innerRow_1
|
|
%319 = OpIAdd %uint %157 %318
|
|
%320 = OpLoad %uint %k
|
|
%321 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %319 %320
|
|
%322 = OpLoad %float %321
|
|
OpStore %ACached %322
|
|
OpStore %innerCol_1 %122
|
|
OpBranch %324
|
|
%324 = OpLabel
|
|
OpLoopMerge %325 %326 None
|
|
OpBranch %327
|
|
%327 = OpLabel
|
|
%329 = OpLoad %uint %innerCol_1
|
|
%330 = OpULessThan %bool %329 %uint_4
|
|
%328 = OpLogicalNot %bool %330
|
|
OpSelectionMerge %331 None
|
|
OpBranchConditional %328 %332 %331
|
|
%332 = OpLabel
|
|
OpBranch %325
|
|
%331 = OpLabel
|
|
%333 = OpLoad %uint %innerRow_1
|
|
%334 = OpIMul %uint %333 %uint_4
|
|
%335 = OpLoad %uint %innerCol_1
|
|
%336 = OpIAdd %uint %334 %335
|
|
%337 = OpAccessChain %_ptr_Function_float %acc %336
|
|
%338 = OpAccessChain %_ptr_Function_float %acc %336
|
|
%339 = OpLoad %float %338
|
|
%340 = OpLoad %float %ACached
|
|
%341 = OpLoad %uint %innerCol_1
|
|
%342 = OpAccessChain %_ptr_Function_float %BCached %341
|
|
%343 = OpLoad %float %342
|
|
%344 = OpFMul %float %340 %343
|
|
%345 = OpFAdd %float %339 %344
|
|
OpStore %337 %345
|
|
OpBranch %326
|
|
%326 = OpLabel
|
|
%346 = OpLoad %uint %innerCol_1
|
|
%347 = OpIAdd %uint %346 %uint_1
|
|
OpStore %innerCol_1 %347
|
|
OpBranch %324
|
|
%325 = OpLabel
|
|
OpBranch %311
|
|
%311 = OpLabel
|
|
%348 = OpLoad %uint %innerRow_1
|
|
%349 = OpIAdd %uint %348 %uint_1
|
|
OpStore %innerRow_1 %349
|
|
OpBranch %309
|
|
%310 = OpLabel
|
|
OpBranch %282
|
|
%282 = OpLabel
|
|
%350 = OpLoad %uint %k
|
|
%351 = OpIAdd %uint %350 %uint_1
|
|
OpStore %k %351
|
|
OpBranch %280
|
|
%281 = OpLabel
|
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
|
OpBranch %200
|
|
%200 = OpLabel
|
|
%353 = OpLoad %uint %t
|
|
%354 = OpIAdd %uint %353 %uint_1
|
|
OpStore %t %354
|
|
OpBranch %198
|
|
%199 = OpLabel
|
|
OpStore %innerRow_2 %122
|
|
OpBranch %356
|
|
%356 = OpLabel
|
|
OpLoopMerge %357 %358 None
|
|
OpBranch %359
|
|
%359 = OpLabel
|
|
%361 = OpLoad %uint %innerRow_2
|
|
%362 = OpULessThan %bool %361 %uint_4
|
|
%360 = OpLogicalNot %bool %362
|
|
OpSelectionMerge %363 None
|
|
OpBranchConditional %360 %364 %363
|
|
%364 = OpLabel
|
|
OpBranch %357
|
|
%363 = OpLabel
|
|
OpStore %innerCol_2 %122
|
|
OpBranch %366
|
|
%366 = OpLabel
|
|
OpLoopMerge %367 %368 None
|
|
OpBranch %369
|
|
%369 = OpLabel
|
|
%371 = OpLoad %uint %innerCol_2
|
|
%372 = OpULessThan %bool %371 %uint_4
|
|
%370 = OpLogicalNot %bool %372
|
|
OpSelectionMerge %373 None
|
|
OpBranchConditional %370 %374 %373
|
|
%374 = OpLabel
|
|
OpBranch %367
|
|
%373 = OpLabel
|
|
%375 = OpLoad %uint %innerRow_2
|
|
%376 = OpIMul %uint %375 %uint_4
|
|
%377 = OpLoad %uint %innerCol_2
|
|
%378 = OpIAdd %uint %376 %377
|
|
%380 = OpLoad %uint %innerRow_2
|
|
%381 = OpIAdd %uint %161 %380
|
|
%382 = OpLoad %uint %innerCol_2
|
|
%383 = OpIAdd %uint %163 %382
|
|
%384 = OpAccessChain %_ptr_Function_float %acc %378
|
|
%385 = OpLoad %float %384
|
|
%379 = OpFunctionCall %void %mm_write %381 %383 %385
|
|
OpBranch %368
|
|
%368 = OpLabel
|
|
%386 = OpLoad %uint %innerCol_2
|
|
%387 = OpIAdd %uint %386 %uint_1
|
|
OpStore %innerCol_2 %387
|
|
OpBranch %366
|
|
%367 = OpLabel
|
|
OpBranch %358
|
|
%358 = OpLabel
|
|
%388 = OpLoad %uint %innerRow_2
|
|
%389 = OpIAdd %uint %388 %uint_1
|
|
OpStore %innerRow_2 %389
|
|
OpBranch %356
|
|
%357 = OpLabel
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%main = OpFunction %void None %390
|
|
%392 = OpLabel
|
|
%394 = OpLoad %v3uint %local_id_1
|
|
%395 = OpLoad %v3uint %global_id_1
|
|
%396 = OpLoad %uint %local_invocation_index_1
|
|
%393 = OpFunctionCall %void %main_inner %394 %395 %396
|
|
OpReturn
|
|
OpFunctionEnd
|