842 lines
62 KiB
Plaintext
842 lines
62 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.0
|
|
; Generator: Khronos Glslang Reference Front End; 10
|
|
; Bound: 515
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
%1 = OpExtInstImport "GLSL.std.450"
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint GLCompute %main "main" %gl_LocalInvocationID %gl_GlobalInvocationID
|
|
OpExecutionMode %main LocalSize 1 64 1
|
|
OpSource GLSL 450
|
|
OpName %main "main"
|
|
OpName %coordsInBounds_vi2_vi2_ "coordsInBounds(vi2;vi2;"
|
|
OpName %coord "coord"
|
|
OpName %shape "shape"
|
|
OpName %setOutput_i1_f1_ "setOutput(i1;f1;"
|
|
OpName %flatIndex "flatIndex"
|
|
OpName %value "value"
|
|
OpName %getOutputFlatIndex_vi3_ "getOutputFlatIndex(vi3;"
|
|
OpName %coords "coords"
|
|
OpName %setOutput_i1_i1_i1_f1_ "setOutput(i1;i1;i1;f1;"
|
|
OpName %d0 "d0"
|
|
OpName %d1 "d1"
|
|
OpName %d2 "d2"
|
|
OpName %value_0 "value"
|
|
OpName %mm_matMul_i1_i1_i1_ "mm_matMul(i1;i1;i1;"
|
|
OpName %dimAOuter "dimAOuter"
|
|
OpName %dimInner "dimInner"
|
|
OpName %dimBOuter "dimBOuter"
|
|
OpName %mm_readA_i1_i1_ "mm_readA(i1;i1;"
|
|
OpName %row "row"
|
|
OpName %col "col"
|
|
OpName %mm_readB_i1_i1_ "mm_readB(i1;i1;"
|
|
OpName %row_0 "row"
|
|
OpName %col_0 "col"
|
|
OpName %mm_write_i1_i1_f1_ "mm_write(i1;i1;f1;"
|
|
OpName %row_1 "row"
|
|
OpName %col_1 "col"
|
|
OpName %value_1 "value"
|
|
OpName %dimAOuter_0 "dimAOuter"
|
|
OpName %Uniforms "Uniforms"
|
|
OpMemberName %Uniforms 0 "NAN"
|
|
OpMemberName %Uniforms 1 "aShape"
|
|
OpMemberName %Uniforms 2 "bShape"
|
|
OpMemberName %Uniforms 3 "outShape"
|
|
OpMemberName %Uniforms 4 "outShapeStrides"
|
|
OpName %_ ""
|
|
OpName %dimInner_0 "dimInner"
|
|
OpName %dimBOuter_0 "dimBOuter"
|
|
OpName %ssbOut "ssbOut"
|
|
OpMemberName %ssbOut 0 "result"
|
|
OpName %__0 ""
|
|
OpName %flatIndex_0 "flatIndex"
|
|
OpName %param "param"
|
|
OpName %param_0 "param"
|
|
OpName %param_1 "param"
|
|
OpName %tileRow "tileRow"
|
|
OpName %gl_LocalInvocationID "gl_LocalInvocationID"
|
|
OpName %tileCol "tileCol"
|
|
OpName %globalRow "globalRow"
|
|
OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
|
|
OpName %globalCol "globalCol"
|
|
OpName %numTiles "numTiles"
|
|
OpName %innerRow "innerRow"
|
|
OpName %innerCol "innerCol"
|
|
OpName %acc "acc"
|
|
OpName %tileColA "tileColA"
|
|
OpName %tileRowB "tileRowB"
|
|
OpName %t "t"
|
|
OpName %innerRow_0 "innerRow"
|
|
OpName %innerCol_0 "innerCol"
|
|
OpName %inputRow "inputRow"
|
|
OpName %inputCol "inputCol"
|
|
OpName %mm_Asub "mm_Asub"
|
|
OpName %param_2 "param"
|
|
OpName %param_3 "param"
|
|
OpName %innerRow_1 "innerRow"
|
|
OpName %innerCol_1 "innerCol"
|
|
OpName %inputRow_0 "inputRow"
|
|
OpName %inputCol_0 "inputCol"
|
|
OpName %mm_Bsub "mm_Bsub"
|
|
OpName %param_4 "param"
|
|
OpName %param_5 "param"
|
|
OpName %k "k"
|
|
OpName %inner "inner"
|
|
OpName %BCached "BCached"
|
|
OpName %innerRow_2 "innerRow"
|
|
OpName %ACached "ACached"
|
|
OpName %innerCol_2 "innerCol"
|
|
OpName %innerRow_3 "innerRow"
|
|
OpName %innerCol_3 "innerCol"
|
|
OpName %param_6 "param"
|
|
OpName %param_7 "param"
|
|
OpName %param_8 "param"
|
|
OpName %batchASize "batchASize"
|
|
OpName %param_9 "param"
|
|
OpName %param_10 "param"
|
|
OpName %ssbA "ssbA"
|
|
OpMemberName %ssbA 0 "A"
|
|
OpName %__1 ""
|
|
OpName %batch "batch"
|
|
OpName %batchBSize "batchBSize"
|
|
OpName %param_11 "param"
|
|
OpName %param_12 "param"
|
|
OpName %ssbB "ssbB"
|
|
OpMemberName %ssbB 0 "B"
|
|
OpName %__2 ""
|
|
OpName %outCoord "outCoord"
|
|
OpName %param_13 "param"
|
|
OpName %param_14 "param"
|
|
OpName %param_15 "param"
|
|
OpName %param_16 "param"
|
|
OpName %param_17 "param"
|
|
OpName %param_18 "param"
|
|
OpName %param_19 "param"
|
|
OpMemberDecorate %Uniforms 0 Offset 0
|
|
OpMemberDecorate %Uniforms 1 Offset 16
|
|
OpMemberDecorate %Uniforms 2 Offset 32
|
|
OpMemberDecorate %Uniforms 3 Offset 48
|
|
OpMemberDecorate %Uniforms 4 Offset 64
|
|
OpDecorate %Uniforms Block
|
|
OpDecorate %_ DescriptorSet 0
|
|
OpDecorate %_ Binding 3
|
|
OpDecorate %_runtimearr_float ArrayStride 4
|
|
OpMemberDecorate %ssbOut 0 NonReadable
|
|
OpMemberDecorate %ssbOut 0 Offset 0
|
|
OpDecorate %ssbOut BufferBlock
|
|
OpDecorate %__0 DescriptorSet 0
|
|
OpDecorate %__0 Binding 0
|
|
OpDecorate %gl_LocalInvocationID BuiltIn LocalInvocationId
|
|
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
|
|
OpDecorate %_runtimearr_float_0 ArrayStride 4
|
|
OpMemberDecorate %ssbA 0 NonWritable
|
|
OpMemberDecorate %ssbA 0 Offset 0
|
|
OpDecorate %ssbA BufferBlock
|
|
OpDecorate %__1 DescriptorSet 0
|
|
OpDecorate %__1 Binding 1
|
|
OpDecorate %_runtimearr_float_1 ArrayStride 4
|
|
OpMemberDecorate %ssbB 0 NonWritable
|
|
OpMemberDecorate %ssbB 0 Offset 0
|
|
OpDecorate %ssbB BufferBlock
|
|
OpDecorate %__2 DescriptorSet 0
|
|
OpDecorate %__2 Binding 2
|
|
OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
|
|
%void = OpTypeVoid
|
|
%3 = OpTypeFunction %void
|
|
%int = OpTypeInt 32 1
|
|
%v2int = OpTypeVector %int 2
|
|
%_ptr_Function_v2int = OpTypePointer Function %v2int
|
|
%bool = OpTypeBool
|
|
%10 = OpTypeFunction %bool %_ptr_Function_v2int %_ptr_Function_v2int
|
|
%_ptr_Function_int = OpTypePointer Function %int
|
|
%float = OpTypeFloat 32
|
|
%_ptr_Function_float = OpTypePointer Function %float
|
|
%18 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_float
|
|
%v3int = OpTypeVector %int 3
|
|
%_ptr_Function_v3int = OpTypePointer Function %v3int
|
|
%25 = OpTypeFunction %int %_ptr_Function_v3int
|
|
%29 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int %_ptr_Function_float
|
|
%36 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
|
|
%42 = OpTypeFunction %float %_ptr_Function_int %_ptr_Function_int
|
|
%51 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_float
|
|
%_ptr_Private_int = OpTypePointer Private %int
|
|
%dimAOuter_0 = OpVariable %_ptr_Private_int Private
|
|
%Uniforms = OpTypeStruct %float %v3int %v3int %v3int %v2int
|
|
%_ptr_Uniform_Uniforms = OpTypePointer Uniform %Uniforms
|
|
%_ = OpVariable %_ptr_Uniform_Uniforms Uniform
|
|
%int_1 = OpConstant %int 1
|
|
%uint = OpTypeInt 32 0
|
|
%uint_1 = OpConstant %uint 1
|
|
%_ptr_Uniform_int = OpTypePointer Uniform %int
|
|
%dimInner_0 = OpVariable %_ptr_Private_int Private
|
|
%uint_2 = OpConstant %uint 2
|
|
%dimBOuter_0 = OpVariable %_ptr_Private_int Private
|
|
%int_2 = OpConstant %int 2
|
|
%int_0 = OpConstant %int 0
|
|
%78 = OpConstantComposite %v2int %int_0 %int_0
|
|
%v2bool = OpTypeVector %bool 2
|
|
%_runtimearr_float = OpTypeRuntimeArray %float
|
|
%ssbOut = OpTypeStruct %_runtimearr_float
|
|
%_ptr_Uniform_ssbOut = OpTypePointer Uniform %ssbOut
|
|
%__0 = OpVariable %_ptr_Uniform_ssbOut Uniform
|
|
%_ptr_Uniform_float = OpTypePointer Uniform %float
|
|
%v3float = OpTypeVector %float 3
|
|
%int_4 = OpConstant %int 4
|
|
%uint_0 = OpConstant %uint 0
|
|
%v3uint = OpTypeVector %uint 3
|
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
|
%gl_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input
|
|
%_ptr_Input_uint = OpTypePointer Input %uint
|
|
%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
|
|
%int_64 = OpConstant %int 64
|
|
%_arr_float_uint_1 = OpTypeArray %float %uint_1
|
|
%_arr__arr_float_uint_1_uint_1 = OpTypeArray %_arr_float_uint_1 %uint_1
|
|
%_ptr_Function__arr__arr_float_uint_1_uint_1 = OpTypePointer Function %_arr__arr_float_uint_1_uint_1
|
|
%float_0 = OpConstant %float 0
|
|
%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
|
|
%_ptr_Workgroup_float = OpTypePointer Workgroup %float
|
|
%_arr__arr_float_uint_1_uint_64 = OpTypeArray %_arr_float_uint_1 %uint_64
|
|
%_ptr_Workgroup__arr__arr_float_uint_1_uint_64 = OpTypePointer Workgroup %_arr__arr_float_uint_1_uint_64
|
|
%mm_Bsub = OpVariable %_ptr_Workgroup__arr__arr_float_uint_1_uint_64 Workgroup
|
|
%uint_264 = OpConstant %uint 264
|
|
%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
|
|
%_runtimearr_float_0 = OpTypeRuntimeArray %float
|
|
%ssbA = OpTypeStruct %_runtimearr_float_0
|
|
%_ptr_Uniform_ssbA = OpTypePointer Uniform %ssbA
|
|
%__1 = OpVariable %_ptr_Uniform_ssbA Uniform
|
|
%batch = OpVariable %_ptr_Private_int Private
|
|
%_runtimearr_float_1 = OpTypeRuntimeArray %float
|
|
%ssbB = OpTypeStruct %_runtimearr_float_1
|
|
%_ptr_Uniform_ssbB = OpTypePointer Uniform %ssbB
|
|
%__2 = OpVariable %_ptr_Uniform_ssbB Uniform
|
|
%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_1 %uint_64 %uint_1
|
|
%main = OpFunction %void None %3
|
|
%5 = OpLabel
|
|
%param_17 = OpVariable %_ptr_Function_int Function
|
|
%param_18 = OpVariable %_ptr_Function_int Function
|
|
%param_19 = OpVariable %_ptr_Function_int Function
|
|
%66 = OpAccessChain %_ptr_Uniform_int %_ %int_1 %uint_1
|
|
%67 = OpLoad %int %66
|
|
OpStore %dimAOuter_0 %67
|
|
%70 = OpAccessChain %_ptr_Uniform_int %_ %int_1 %uint_2
|
|
%71 = OpLoad %int %70
|
|
OpStore %dimInner_0 %71
|
|
%74 = OpAccessChain %_ptr_Uniform_int %_ %int_2 %uint_2
|
|
%75 = OpLoad %int %74
|
|
OpStore %dimBOuter_0 %75
|
|
%504 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_2
|
|
%505 = OpLoad %uint %504
|
|
%506 = OpBitcast %int %505
|
|
OpStore %batch %506
|
|
%508 = OpLoad %int %dimAOuter_0
|
|
OpStore %param_17 %508
|
|
%510 = OpLoad %int %dimInner_0
|
|
OpStore %param_18 %510
|
|
%512 = OpLoad %int %dimBOuter_0
|
|
OpStore %param_19 %512
|
|
%513 = OpFunctionCall %void %mm_matMul_i1_i1_i1_ %param_17 %param_18 %param_19
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%coordsInBounds_vi2_vi2_ = OpFunction %bool None %10
|
|
%coord = OpFunctionParameter %_ptr_Function_v2int
|
|
%shape = OpFunctionParameter %_ptr_Function_v2int
|
|
%14 = OpLabel
|
|
%76 = OpLoad %v2int %coord
|
|
%80 = OpSGreaterThanEqual %v2bool %76 %78
|
|
%81 = OpAll %bool %80
|
|
OpSelectionMerge %83 None
|
|
OpBranchConditional %81 %82 %83
|
|
%82 = OpLabel
|
|
%84 = OpLoad %v2int %coord
|
|
%85 = OpLoad %v2int %shape
|
|
%86 = OpSLessThan %v2bool %84 %85
|
|
%87 = OpAll %bool %86
|
|
OpBranch %83
|
|
%83 = OpLabel
|
|
%88 = OpPhi %bool %81 %14 %87 %82
|
|
OpReturnValue %88
|
|
OpFunctionEnd
|
|
%setOutput_i1_f1_ = OpFunction %void None %18
|
|
%flatIndex = OpFunctionParameter %_ptr_Function_int
|
|
%value = OpFunctionParameter %_ptr_Function_float
|
|
%22 = OpLabel
|
|
%95 = OpLoad %int %flatIndex
|
|
%96 = OpLoad %float %value
|
|
%98 = OpAccessChain %_ptr_Uniform_float %__0 %int_0 %95
|
|
OpStore %98 %96
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%getOutputFlatIndex_vi3_ = OpFunction %int None %25
|
|
%coords = OpFunctionParameter %_ptr_Function_v3int
|
|
%28 = OpLabel
|
|
%99 = OpLoad %v3int %coords
|
|
%101 = OpConvertSToF %v3float %99
|
|
%104 = OpAccessChain %_ptr_Uniform_int %_ %int_4 %uint_0
|
|
%105 = OpLoad %int %104
|
|
%106 = OpAccessChain %_ptr_Uniform_int %_ %int_4 %uint_1
|
|
%107 = OpLoad %int %106
|
|
%108 = OpCompositeConstruct %v3int %105 %107 %int_1
|
|
%109 = OpConvertSToF %v3float %108
|
|
%110 = OpDot %float %101 %109
|
|
%111 = OpConvertFToS %int %110
|
|
OpReturnValue %111
|
|
OpFunctionEnd
|
|
%setOutput_i1_i1_i1_f1_ = OpFunction %void None %29
|
|
%d0 = OpFunctionParameter %_ptr_Function_int
|
|
%d1 = OpFunctionParameter %_ptr_Function_int
|
|
%d2 = OpFunctionParameter %_ptr_Function_int
|
|
%value_0 = OpFunctionParameter %_ptr_Function_float
|
|
%35 = OpLabel
|
|
%flatIndex_0 = OpVariable %_ptr_Function_int Function
|
|
%param = OpVariable %_ptr_Function_v3int Function
|
|
%param_0 = OpVariable %_ptr_Function_int Function
|
|
%param_1 = OpVariable %_ptr_Function_float Function
|
|
%115 = OpLoad %int %d0
|
|
%116 = OpLoad %int %d1
|
|
%117 = OpLoad %int %d2
|
|
%118 = OpCompositeConstruct %v3int %115 %116 %117
|
|
OpStore %param %118
|
|
%120 = OpFunctionCall %int %getOutputFlatIndex_vi3_ %param
|
|
OpStore %flatIndex_0 %120
|
|
%122 = OpLoad %int %flatIndex_0
|
|
OpStore %param_0 %122
|
|
%124 = OpLoad %float %value_0
|
|
OpStore %param_1 %124
|
|
%125 = OpFunctionCall %void %setOutput_i1_f1_ %param_0 %param_1
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%mm_matMul_i1_i1_i1_ = OpFunction %void None %36
|
|
%dimAOuter = OpFunctionParameter %_ptr_Function_int
|
|
%dimInner = OpFunctionParameter %_ptr_Function_int
|
|
%dimBOuter = OpFunctionParameter %_ptr_Function_int
|
|
%41 = OpLabel
|
|
%tileRow = OpVariable %_ptr_Function_int Function
|
|
%tileCol = OpVariable %_ptr_Function_int Function
|
|
%globalRow = OpVariable %_ptr_Function_int Function
|
|
%globalCol = OpVariable %_ptr_Function_int Function
|
|
%numTiles = OpVariable %_ptr_Function_int Function
|
|
%innerRow = OpVariable %_ptr_Function_int Function
|
|
%innerCol = OpVariable %_ptr_Function_int Function
|
|
%acc = OpVariable %_ptr_Function__arr__arr_float_uint_1_uint_1 Function
|
|
%tileColA = OpVariable %_ptr_Function_int Function
|
|
%tileRowB = OpVariable %_ptr_Function_int Function
|
|
%t = OpVariable %_ptr_Function_int Function
|
|
%innerRow_0 = OpVariable %_ptr_Function_int Function
|
|
%innerCol_0 = OpVariable %_ptr_Function_int Function
|
|
%inputRow = OpVariable %_ptr_Function_int Function
|
|
%inputCol = OpVariable %_ptr_Function_int Function
|
|
%param_2 = OpVariable %_ptr_Function_int Function
|
|
%param_3 = OpVariable %_ptr_Function_int Function
|
|
%innerRow_1 = OpVariable %_ptr_Function_int Function
|
|
%innerCol_1 = OpVariable %_ptr_Function_int Function
|
|
%inputRow_0 = OpVariable %_ptr_Function_int Function
|
|
%inputCol_0 = OpVariable %_ptr_Function_int Function
|
|
%param_4 = OpVariable %_ptr_Function_int Function
|
|
%param_5 = OpVariable %_ptr_Function_int Function
|
|
%k = OpVariable %_ptr_Function_int Function
|
|
%inner = OpVariable %_ptr_Function_int Function
|
|
%BCached = OpVariable %_ptr_Function__arr_float_uint_1 Function
|
|
%innerRow_2 = OpVariable %_ptr_Function_int Function
|
|
%ACached = OpVariable %_ptr_Function_float Function
|
|
%innerCol_2 = OpVariable %_ptr_Function_int Function
|
|
%innerRow_3 = OpVariable %_ptr_Function_int Function
|
|
%innerCol_3 = OpVariable %_ptr_Function_int Function
|
|
%param_6 = OpVariable %_ptr_Function_int Function
|
|
%param_7 = OpVariable %_ptr_Function_int Function
|
|
%param_8 = OpVariable %_ptr_Function_float Function
|
|
%131 = OpAccessChain %_ptr_Input_uint %gl_LocalInvocationID %uint_1
|
|
%132 = OpLoad %uint %131
|
|
%133 = OpBitcast %int %132
|
|
%134 = OpIMul %int %133 %int_1
|
|
OpStore %tileRow %134
|
|
%136 = OpAccessChain %_ptr_Input_uint %gl_LocalInvocationID %uint_0
|
|
%137 = OpLoad %uint %136
|
|
%138 = OpBitcast %int %137
|
|
%139 = OpIMul %int %138 %int_1
|
|
OpStore %tileCol %139
|
|
%142 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_1
|
|
%143 = OpLoad %uint %142
|
|
%144 = OpBitcast %int %143
|
|
%145 = OpIMul %int %144 %int_1
|
|
OpStore %globalRow %145
|
|
%147 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0
|
|
%148 = OpLoad %uint %147
|
|
%149 = OpBitcast %int %148
|
|
%150 = OpIMul %int %149 %int_1
|
|
OpStore %globalCol %150
|
|
%152 = OpLoad %int %dimInner
|
|
%153 = OpISub %int %152 %int_1
|
|
%155 = OpSDiv %int %153 %int_64
|
|
%156 = OpIAdd %int %155 %int_1
|
|
OpStore %numTiles %156
|
|
OpStore %innerRow %int_0
|
|
OpBranch %158
|
|
%158 = OpLabel
|
|
OpLoopMerge %160 %161 None
|
|
OpBranch %162
|
|
%162 = OpLabel
|
|
%163 = OpLoad %int %innerRow
|
|
%164 = OpSLessThan %bool %163 %int_1
|
|
OpBranchConditional %164 %159 %160
|
|
%159 = OpLabel
|
|
OpStore %innerCol %int_0
|
|
OpBranch %166
|
|
%166 = OpLabel
|
|
OpLoopMerge %168 %169 None
|
|
OpBranch %170
|
|
%170 = OpLabel
|
|
%171 = OpLoad %int %innerCol
|
|
%172 = OpSLessThan %bool %171 %int_1
|
|
OpBranchConditional %172 %167 %168
|
|
%167 = OpLabel
|
|
%177 = OpLoad %int %innerRow
|
|
%178 = OpLoad %int %innerCol
|
|
%180 = OpAccessChain %_ptr_Function_float %acc %177 %178
|
|
OpStore %180 %float_0
|
|
OpBranch %169
|
|
%169 = OpLabel
|
|
%181 = OpLoad %int %innerCol
|
|
%182 = OpIAdd %int %181 %int_1
|
|
OpStore %innerCol %182
|
|
OpBranch %166
|
|
%168 = OpLabel
|
|
OpBranch %161
|
|
%161 = OpLabel
|
|
%183 = OpLoad %int %innerRow
|
|
%184 = OpIAdd %int %183 %int_1
|
|
OpStore %innerRow %184
|
|
OpBranch %158
|
|
%160 = OpLabel
|
|
%186 = OpAccessChain %_ptr_Input_uint %gl_LocalInvocationID %uint_0
|
|
%187 = OpLoad %uint %186
|
|
%188 = OpBitcast %int %187
|
|
%189 = OpIMul %int %188 %int_64
|
|
OpStore %tileColA %189
|
|
%191 = OpAccessChain %_ptr_Input_uint %gl_LocalInvocationID %uint_1
|
|
%192 = OpLoad %uint %191
|
|
%193 = OpBitcast %int %192
|
|
%194 = OpIMul %int %193 %int_1
|
|
OpStore %tileRowB %194
|
|
OpStore %t %int_0
|
|
OpBranch %196
|
|
%196 = OpLabel
|
|
OpLoopMerge %198 %199 None
|
|
OpBranch %200
|
|
%200 = OpLabel
|
|
%201 = OpLoad %int %t
|
|
%202 = OpLoad %int %numTiles
|
|
%203 = OpSLessThan %bool %201 %202
|
|
OpBranchConditional %203 %197 %198
|
|
%197 = OpLabel
|
|
OpStore %innerRow_0 %int_0
|
|
OpBranch %205
|
|
%205 = OpLabel
|
|
OpLoopMerge %207 %208 None
|
|
OpBranch %209
|
|
%209 = OpLabel
|
|
%210 = OpLoad %int %innerRow_0
|
|
%211 = OpSLessThan %bool %210 %int_1
|
|
OpBranchConditional %211 %206 %207
|
|
%206 = OpLabel
|
|
OpStore %innerCol_0 %int_0
|
|
OpBranch %213
|
|
%213 = OpLabel
|
|
OpLoopMerge %215 %216 None
|
|
OpBranch %217
|
|
%217 = OpLabel
|
|
%218 = OpLoad %int %innerCol_0
|
|
%219 = OpSLessThan %bool %218 %int_64
|
|
OpBranchConditional %219 %214 %215
|
|
%214 = OpLabel
|
|
%221 = OpLoad %int %tileRow
|
|
%222 = OpLoad %int %innerRow_0
|
|
%223 = OpIAdd %int %221 %222
|
|
OpStore %inputRow %223
|
|
%225 = OpLoad %int %tileColA
|
|
%226 = OpLoad %int %innerCol_0
|
|
%227 = OpIAdd %int %225 %226
|
|
OpStore %inputCol %227
|
|
%233 = OpLoad %int %inputRow
|
|
%234 = OpLoad %int %inputCol
|
|
%235 = OpLoad %int %globalRow
|
|
%236 = OpLoad %int %innerRow_0
|
|
%237 = OpIAdd %int %235 %236
|
|
%238 = OpLoad %int %t
|
|
%239 = OpIMul %int %238 %int_64
|
|
%240 = OpLoad %int %inputCol
|
|
%241 = OpIAdd %int %239 %240
|
|
OpStore %param_2 %237
|
|
OpStore %param_3 %241
|
|
%244 = OpFunctionCall %float %mm_readA_i1_i1_ %param_2 %param_3
|
|
%246 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %233 %234
|
|
OpStore %246 %244
|
|
OpBranch %216
|
|
%216 = OpLabel
|
|
%247 = OpLoad %int %innerCol_0
|
|
%248 = OpIAdd %int %247 %int_1
|
|
OpStore %innerCol_0 %248
|
|
OpBranch %213
|
|
%215 = OpLabel
|
|
OpBranch %208
|
|
%208 = OpLabel
|
|
%249 = OpLoad %int %innerRow_0
|
|
%250 = OpIAdd %int %249 %int_1
|
|
OpStore %innerRow_0 %250
|
|
OpBranch %205
|
|
%207 = OpLabel
|
|
OpStore %innerRow_1 %int_0
|
|
OpBranch %252
|
|
%252 = OpLabel
|
|
OpLoopMerge %254 %255 None
|
|
OpBranch %256
|
|
%256 = OpLabel
|
|
%257 = OpLoad %int %innerRow_1
|
|
%258 = OpSLessThan %bool %257 %int_1
|
|
OpBranchConditional %258 %253 %254
|
|
%253 = OpLabel
|
|
OpStore %innerCol_1 %int_0
|
|
OpBranch %260
|
|
%260 = OpLabel
|
|
OpLoopMerge %262 %263 None
|
|
OpBranch %264
|
|
%264 = OpLabel
|
|
%265 = OpLoad %int %innerCol_1
|
|
%266 = OpSLessThan %bool %265 %int_1
|
|
OpBranchConditional %266 %261 %262
|
|
%261 = OpLabel
|
|
%268 = OpLoad %int %tileRowB
|
|
%269 = OpLoad %int %innerRow_1
|
|
%270 = OpIAdd %int %268 %269
|
|
OpStore %inputRow_0 %270
|
|
%272 = OpLoad %int %tileCol
|
|
%273 = OpLoad %int %innerCol_1
|
|
%274 = OpIAdd %int %272 %273
|
|
OpStore %inputCol_0 %274
|
|
%278 = OpLoad %int %inputRow_0
|
|
%279 = OpLoad %int %inputCol_0
|
|
%280 = OpLoad %int %t
|
|
%281 = OpIMul %int %280 %int_64
|
|
%282 = OpLoad %int %inputRow_0
|
|
%283 = OpIAdd %int %281 %282
|
|
%284 = OpLoad %int %globalCol
|
|
%285 = OpLoad %int %innerCol_1
|
|
%286 = OpIAdd %int %284 %285
|
|
OpStore %param_4 %283
|
|
OpStore %param_5 %286
|
|
%289 = OpFunctionCall %float %mm_readB_i1_i1_ %param_4 %param_5
|
|
%290 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %278 %279
|
|
OpStore %290 %289
|
|
OpBranch %263
|
|
%263 = OpLabel
|
|
%291 = OpLoad %int %innerCol_1
|
|
%292 = OpIAdd %int %291 %int_1
|
|
OpStore %innerCol_1 %292
|
|
OpBranch %260
|
|
%262 = OpLabel
|
|
OpBranch %255
|
|
%255 = OpLabel
|
|
%293 = OpLoad %int %innerRow_1
|
|
%294 = OpIAdd %int %293 %int_1
|
|
OpStore %innerRow_1 %294
|
|
OpBranch %252
|
|
%254 = OpLabel
|
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
|
OpStore %k %int_0
|
|
OpBranch %297
|
|
%297 = OpLabel
|
|
OpLoopMerge %299 %300 None
|
|
OpBranch %301
|
|
%301 = OpLabel
|
|
%302 = OpLoad %int %k
|
|
%303 = OpSLessThan %bool %302 %int_64
|
|
OpBranchConditional %303 %298 %299
|
|
%298 = OpLabel
|
|
OpStore %inner %int_0
|
|
OpBranch %305
|
|
%305 = OpLabel
|
|
OpLoopMerge %307 %308 None
|
|
OpBranch %309
|
|
%309 = OpLabel
|
|
%310 = OpLoad %int %inner
|
|
%311 = OpSLessThan %bool %310 %int_1
|
|
OpBranchConditional %311 %306 %307
|
|
%306 = OpLabel
|
|
%314 = OpLoad %int %inner
|
|
%315 = OpLoad %int %k
|
|
%316 = OpLoad %int %tileCol
|
|
%317 = OpLoad %int %inner
|
|
%318 = OpIAdd %int %316 %317
|
|
%319 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %315 %318
|
|
%320 = OpLoad %float %319
|
|
%321 = OpAccessChain %_ptr_Function_float %BCached %314
|
|
OpStore %321 %320
|
|
OpBranch %308
|
|
%308 = OpLabel
|
|
%322 = OpLoad %int %inner
|
|
%323 = OpIAdd %int %322 %int_1
|
|
OpStore %inner %323
|
|
OpBranch %305
|
|
%307 = OpLabel
|
|
OpStore %innerRow_2 %int_0
|
|
OpBranch %325
|
|
%325 = OpLabel
|
|
OpLoopMerge %327 %328 None
|
|
OpBranch %329
|
|
%329 = OpLabel
|
|
%330 = OpLoad %int %innerRow_2
|
|
%331 = OpSLessThan %bool %330 %int_1
|
|
OpBranchConditional %331 %326 %327
|
|
%326 = OpLabel
|
|
%333 = OpLoad %int %tileRow
|
|
%334 = OpLoad %int %innerRow_2
|
|
%335 = OpIAdd %int %333 %334
|
|
%336 = OpLoad %int %k
|
|
%337 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %335 %336
|
|
%338 = OpLoad %float %337
|
|
OpStore %ACached %338
|
|
OpStore %innerCol_2 %int_0
|
|
OpBranch %340
|
|
%340 = OpLabel
|
|
OpLoopMerge %342 %343 None
|
|
OpBranch %344
|
|
%344 = OpLabel
|
|
%345 = OpLoad %int %innerCol_2
|
|
%346 = OpSLessThan %bool %345 %int_1
|
|
OpBranchConditional %346 %341 %342
|
|
%341 = OpLabel
|
|
%347 = OpLoad %int %innerRow_2
|
|
%348 = OpLoad %int %innerCol_2
|
|
%349 = OpLoad %float %ACached
|
|
%350 = OpLoad %int %innerCol_2
|
|
%351 = OpAccessChain %_ptr_Function_float %BCached %350
|
|
%352 = OpLoad %float %351
|
|
%353 = OpFMul %float %349 %352
|
|
%354 = OpAccessChain %_ptr_Function_float %acc %347 %348
|
|
%355 = OpLoad %float %354
|
|
%356 = OpFAdd %float %355 %353
|
|
%357 = OpAccessChain %_ptr_Function_float %acc %347 %348
|
|
OpStore %357 %356
|
|
OpBranch %343
|
|
%343 = OpLabel
|
|
%358 = OpLoad %int %innerCol_2
|
|
%359 = OpIAdd %int %358 %int_1
|
|
OpStore %innerCol_2 %359
|
|
OpBranch %340
|
|
%342 = OpLabel
|
|
OpBranch %328
|
|
%328 = OpLabel
|
|
%360 = OpLoad %int %innerRow_2
|
|
%361 = OpIAdd %int %360 %int_1
|
|
OpStore %innerRow_2 %361
|
|
OpBranch %325
|
|
%327 = OpLabel
|
|
OpBranch %300
|
|
%300 = OpLabel
|
|
%362 = OpLoad %int %k
|
|
%363 = OpIAdd %int %362 %int_1
|
|
OpStore %k %363
|
|
OpBranch %297
|
|
%299 = OpLabel
|
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
|
OpBranch %199
|
|
%199 = OpLabel
|
|
%364 = OpLoad %int %t
|
|
%365 = OpIAdd %int %364 %int_1
|
|
OpStore %t %365
|
|
OpBranch %196
|
|
%198 = OpLabel
|
|
OpStore %innerRow_3 %int_0
|
|
OpBranch %367
|
|
%367 = OpLabel
|
|
OpLoopMerge %369 %370 None
|
|
OpBranch %371
|
|
%371 = OpLabel
|
|
%372 = OpLoad %int %innerRow_3
|
|
%373 = OpSLessThan %bool %372 %int_1
|
|
OpBranchConditional %373 %368 %369
|
|
%368 = OpLabel
|
|
OpStore %innerCol_3 %int_0
|
|
OpBranch %375
|
|
%375 = OpLabel
|
|
OpLoopMerge %377 %378 None
|
|
OpBranch %379
|
|
%379 = OpLabel
|
|
%380 = OpLoad %int %innerCol_3
|
|
%381 = OpSLessThan %bool %380 %int_1
|
|
OpBranchConditional %381 %376 %377
|
|
%376 = OpLabel
|
|
%382 = OpLoad %int %globalCol
|
|
%383 = OpLoad %int %innerCol_3
|
|
%384 = OpIAdd %int %382 %383
|
|
%385 = OpLoad %int %dimBOuter
|
|
%386 = OpSLessThan %bool %384 %385
|
|
OpSelectionMerge %388 None
|
|
OpBranchConditional %386 %387 %388
|
|
%387 = OpLabel
|
|
%389 = OpLoad %int %globalRow
|
|
%390 = OpLoad %int %innerRow_3
|
|
%391 = OpIAdd %int %389 %390
|
|
%392 = OpLoad %int %dimAOuter
|
|
%393 = OpSLessThan %bool %391 %392
|
|
OpBranch %388
|
|
%388 = OpLabel
|
|
%394 = OpPhi %bool %386 %376 %393 %387
|
|
OpSelectionMerge %396 None
|
|
OpBranchConditional %394 %395 %396
|
|
%395 = OpLabel
|
|
%397 = OpLoad %int %globalRow
|
|
%398 = OpLoad %int %innerRow_3
|
|
%399 = OpIAdd %int %397 %398
|
|
%400 = OpLoad %int %globalCol
|
|
%401 = OpLoad %int %innerCol_3
|
|
%402 = OpIAdd %int %400 %401
|
|
%403 = OpLoad %int %innerRow_3
|
|
%404 = OpLoad %int %innerCol_3
|
|
OpStore %param_6 %399
|
|
OpStore %param_7 %402
|
|
%408 = OpAccessChain %_ptr_Function_float %acc %403 %404
|
|
%409 = OpLoad %float %408
|
|
OpStore %param_8 %409
|
|
%410 = OpFunctionCall %void %mm_write_i1_i1_f1_ %param_6 %param_7 %param_8
|
|
OpBranch %396
|
|
%396 = OpLabel
|
|
OpBranch %378
|
|
%378 = OpLabel
|
|
%411 = OpLoad %int %innerCol_3
|
|
%412 = OpIAdd %int %411 %int_1
|
|
OpStore %innerCol_3 %412
|
|
OpBranch %375
|
|
%377 = OpLabel
|
|
OpBranch %370
|
|
%370 = OpLabel
|
|
%413 = OpLoad %int %innerRow_3
|
|
%414 = OpIAdd %int %413 %int_1
|
|
OpStore %innerRow_3 %414
|
|
OpBranch %367
|
|
%369 = OpLabel
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%mm_readA_i1_i1_ = OpFunction %float None %42
|
|
%row = OpFunctionParameter %_ptr_Function_int
|
|
%col = OpFunctionParameter %_ptr_Function_int
|
|
%46 = OpLabel
|
|
%batchASize = OpVariable %_ptr_Function_int Function
|
|
%param_9 = OpVariable %_ptr_Function_v2int Function
|
|
%param_10 = OpVariable %_ptr_Function_v2int Function
|
|
%430 = OpVariable %_ptr_Function_float Function
|
|
%416 = OpAccessChain %_ptr_Uniform_int %_ %int_1 %uint_1
|
|
%417 = OpLoad %int %416
|
|
%418 = OpAccessChain %_ptr_Uniform_int %_ %int_1 %uint_2
|
|
%419 = OpLoad %int %418
|
|
%420 = OpIMul %int %417 %419
|
|
OpStore %batchASize %420
|
|
%421 = OpLoad %int %row
|
|
%422 = OpLoad %int %col
|
|
%423 = OpCompositeConstruct %v2int %421 %422
|
|
%424 = OpLoad %int %dimAOuter_0
|
|
%425 = OpLoad %int %dimInner_0
|
|
%426 = OpCompositeConstruct %v2int %424 %425
|
|
OpStore %param_9 %423
|
|
OpStore %param_10 %426
|
|
%429 = OpFunctionCall %bool %coordsInBounds_vi2_vi2_ %param_9 %param_10
|
|
OpSelectionMerge %432 None
|
|
OpBranchConditional %429 %431 %449
|
|
%431 = OpLabel
|
|
%438 = OpLoad %int %batch
|
|
%439 = OpLoad %int %batchASize
|
|
%440 = OpIMul %int %438 %439
|
|
%441 = OpLoad %int %row
|
|
%442 = OpLoad %int %dimInner_0
|
|
%443 = OpIMul %int %441 %442
|
|
%444 = OpIAdd %int %440 %443
|
|
%445 = OpLoad %int %col
|
|
%446 = OpIAdd %int %444 %445
|
|
%447 = OpAccessChain %_ptr_Uniform_float %__1 %int_0 %446
|
|
%448 = OpLoad %float %447
|
|
OpStore %430 %448
|
|
OpBranch %432
|
|
%449 = OpLabel
|
|
OpStore %430 %float_0
|
|
OpBranch %432
|
|
%432 = OpLabel
|
|
%450 = OpLoad %float %430
|
|
OpReturnValue %450
|
|
OpFunctionEnd
|
|
%mm_readB_i1_i1_ = OpFunction %float None %42
|
|
%row_0 = OpFunctionParameter %_ptr_Function_int
|
|
%col_0 = OpFunctionParameter %_ptr_Function_int
|
|
%50 = OpLabel
|
|
%batchBSize = OpVariable %_ptr_Function_int Function
|
|
%param_11 = OpVariable %_ptr_Function_v2int Function
|
|
%param_12 = OpVariable %_ptr_Function_v2int Function
|
|
%468 = OpVariable %_ptr_Function_float Function
|
|
%454 = OpAccessChain %_ptr_Uniform_int %_ %int_2 %uint_1
|
|
%455 = OpLoad %int %454
|
|
%456 = OpAccessChain %_ptr_Uniform_int %_ %int_2 %uint_2
|
|
%457 = OpLoad %int %456
|
|
%458 = OpIMul %int %455 %457
|
|
OpStore %batchBSize %458
|
|
%459 = OpLoad %int %row_0
|
|
%460 = OpLoad %int %col_0
|
|
%461 = OpCompositeConstruct %v2int %459 %460
|
|
%462 = OpLoad %int %dimInner_0
|
|
%463 = OpLoad %int %dimBOuter_0
|
|
%464 = OpCompositeConstruct %v2int %462 %463
|
|
OpStore %param_11 %461
|
|
OpStore %param_12 %464
|
|
%467 = OpFunctionCall %bool %coordsInBounds_vi2_vi2_ %param_11 %param_12
|
|
OpSelectionMerge %470 None
|
|
OpBranchConditional %467 %469 %486
|
|
%469 = OpLabel
|
|
%475 = OpLoad %int %batch
|
|
%476 = OpLoad %int %batchBSize
|
|
%477 = OpIMul %int %475 %476
|
|
%478 = OpLoad %int %row_0
|
|
%479 = OpLoad %int %dimBOuter_0
|
|
%480 = OpIMul %int %478 %479
|
|
%481 = OpIAdd %int %477 %480
|
|
%482 = OpLoad %int %col_0
|
|
%483 = OpIAdd %int %481 %482
|
|
%484 = OpAccessChain %_ptr_Uniform_float %__2 %int_0 %483
|
|
%485 = OpLoad %float %484
|
|
OpStore %468 %485
|
|
OpBranch %470
|
|
%486 = OpLabel
|
|
OpStore %468 %float_0
|
|
OpBranch %470
|
|
%470 = OpLabel
|
|
%487 = OpLoad %float %468
|
|
OpReturnValue %487
|
|
OpFunctionEnd
|
|
%mm_write_i1_i1_f1_ = OpFunction %void None %51
|
|
%row_1 = OpFunctionParameter %_ptr_Function_int
|
|
%col_1 = OpFunctionParameter %_ptr_Function_int
|
|
%value_1 = OpFunctionParameter %_ptr_Function_float
|
|
%56 = OpLabel
|
|
%outCoord = OpVariable %_ptr_Function_v3int Function
|
|
%param_13 = OpVariable %_ptr_Function_int Function
|
|
%param_14 = OpVariable %_ptr_Function_int Function
|
|
%param_15 = OpVariable %_ptr_Function_int Function
|
|
%param_16 = OpVariable %_ptr_Function_float Function
|
|
%491 = OpLoad %int %batch
|
|
%492 = OpLoad %int %row_1
|
|
%493 = OpLoad %int %col_1
|
|
%494 = OpCompositeConstruct %v3int %491 %492 %493
|
|
OpStore %outCoord %494
|
|
%496 = OpLoad %int %batch
|
|
OpStore %param_13 %496
|
|
%498 = OpLoad %int %row_1
|
|
OpStore %param_14 %498
|
|
%500 = OpLoad %int %col_1
|
|
OpStore %param_15 %500
|
|
%502 = OpLoad %float %value_1
|
|
OpStore %param_16 %502
|
|
%503 = OpFunctionCall %void %setOutput_i1_i1_i1_f1_ %param_13 %param_14 %param_15 %param_16
|
|
OpReturn
|
|
OpFunctionEnd
|