961 lines
39 KiB
Plaintext
961 lines
39 KiB
Plaintext
|
; SPIR-V
|
||
|
; Version: 1.3
|
||
|
; Generator: Google Tint Compiler; 0
|
||
|
; Bound: 609
|
||
|
; Schema: 0
|
||
|
OpCapability Shader
|
||
|
OpMemoryModel Logical GLSL450
|
||
|
OpEntryPoint GLCompute %main "main" %tint_symbol_2 %tint_symbol %tint_symbol_1
|
||
|
OpExecutionMode %main LocalSize 1 64 1
|
||
|
OpName %dimAOuter_1 "dimAOuter_1"
|
||
|
OpName %Uniforms "Uniforms"
|
||
|
OpMemberName %Uniforms 0 "NAN"
|
||
|
OpMemberName %Uniforms 1 "aShape"
|
||
|
OpMemberName %Uniforms 2 "bShape"
|
||
|
OpMemberName %Uniforms 3 "outShape"
|
||
|
OpMemberName %Uniforms 4 "outShapeStrides"
|
||
|
OpName %x_48 "x_48"
|
||
|
OpName %dimInner_1 "dimInner_1"
|
||
|
OpName %dimBOuter_1 "dimBOuter_1"
|
||
|
OpName %ssbOut "ssbOut"
|
||
|
OpMemberName %ssbOut 0 "result"
|
||
|
OpName %x_54 "x_54"
|
||
|
OpName %gl_LocalInvocationID "gl_LocalInvocationID"
|
||
|
OpName %gl_GlobalInvocationID "gl_GlobalInvocationID"
|
||
|
OpName %mm_Asub "mm_Asub"
|
||
|
OpName %mm_Bsub "mm_Bsub"
|
||
|
OpName %ssbA "ssbA"
|
||
|
OpMemberName %ssbA 0 "A"
|
||
|
OpName %x_165 "x_165"
|
||
|
OpName %batch "batch"
|
||
|
OpName %ssbB "ssbB"
|
||
|
OpMemberName %ssbB 0 "B"
|
||
|
OpName %x_185 "x_185"
|
||
|
OpName %tint_symbol "tint_symbol"
|
||
|
OpName %tint_symbol_1 "tint_symbol_1"
|
||
|
OpName %tint_symbol_2 "tint_symbol_2"
|
||
|
OpName %coordsInBounds_vi2_vi2_ "coordsInBounds_vi2_vi2_"
|
||
|
OpName %coord "coord"
|
||
|
OpName %shape "shape"
|
||
|
OpName %x_87 "x_87"
|
||
|
OpName %x_88_phi "x_88_phi"
|
||
|
OpName %mm_readA_i1_i1_ "mm_readA_i1_i1_"
|
||
|
OpName %row "row"
|
||
|
OpName %col "col"
|
||
|
OpName %batchASize "batchASize"
|
||
|
OpName %param_10 "param_10"
|
||
|
OpName %param_11 "param_11"
|
||
|
OpName %x_430 "x_430"
|
||
|
OpName %mm_readB_i1_i1_ "mm_readB_i1_i1_"
|
||
|
OpName %row_1 "row_1"
|
||
|
OpName %col_1 "col_1"
|
||
|
OpName %batchBSize "batchBSize"
|
||
|
OpName %param_12 "param_12"
|
||
|
OpName %param_13 "param_13"
|
||
|
OpName %x_468 "x_468"
|
||
|
OpName %getOutputFlatIndex_vi3_ "getOutputFlatIndex_vi3_"
|
||
|
OpName %coords "coords"
|
||
|
OpName %setOutput_i1_f1_ "setOutput_i1_f1_"
|
||
|
OpName %flatIndex "flatIndex"
|
||
|
OpName %value "value"
|
||
|
OpName %setOutput_i1_i1_i1_f1_ "setOutput_i1_i1_i1_f1_"
|
||
|
OpName %d0 "d0"
|
||
|
OpName %d1 "d1"
|
||
|
OpName %d2 "d2"
|
||
|
OpName %value_1 "value_1"
|
||
|
OpName %flatIndex_1 "flatIndex_1"
|
||
|
OpName %param "param"
|
||
|
OpName %param_1 "param_1"
|
||
|
OpName %param_2 "param_2"
|
||
|
OpName %mm_write_i1_i1_f1_ "mm_write_i1_i1_f1_"
|
||
|
OpName %row_2 "row_2"
|
||
|
OpName %col_2 "col_2"
|
||
|
OpName %value_2 "value_2"
|
||
|
OpName %outCoord "outCoord"
|
||
|
OpName %param_14 "param_14"
|
||
|
OpName %param_15 "param_15"
|
||
|
OpName %param_16 "param_16"
|
||
|
OpName %param_17 "param_17"
|
||
|
OpName %mm_matMul_i1_i1_i1_ "mm_matMul_i1_i1_i1_"
|
||
|
OpName %dimAOuter "dimAOuter"
|
||
|
OpName %dimInner "dimInner"
|
||
|
OpName %dimBOuter "dimBOuter"
|
||
|
OpName %tileRow "tileRow"
|
||
|
OpName %tileCol "tileCol"
|
||
|
OpName %globalRow "globalRow"
|
||
|
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_1 "innerRow_1"
|
||
|
OpName %innerCol_1 "innerCol_1"
|
||
|
OpName %inputRow "inputRow"
|
||
|
OpName %inputCol "inputCol"
|
||
|
OpName %param_3 "param_3"
|
||
|
OpName %param_4 "param_4"
|
||
|
OpName %innerRow_2 "innerRow_2"
|
||
|
OpName %innerCol_2 "innerCol_2"
|
||
|
OpName %inputRow_1 "inputRow_1"
|
||
|
OpName %inputCol_1 "inputCol_1"
|
||
|
OpName %param_5 "param_5"
|
||
|
OpName %param_6 "param_6"
|
||
|
OpName %k "k"
|
||
|
OpName %inner "inner"
|
||
|
OpName %BCached "BCached"
|
||
|
OpName %innerRow_3 "innerRow_3"
|
||
|
OpName %ACached "ACached"
|
||
|
OpName %innerCol_3 "innerCol_3"
|
||
|
OpName %innerRow_4 "innerRow_4"
|
||
|
OpName %innerCol_4 "innerCol_4"
|
||
|
OpName %param_7 "param_7"
|
||
|
OpName %param_8 "param_8"
|
||
|
OpName %param_9 "param_9"
|
||
|
OpName %x_393 "x_393"
|
||
|
OpName %x_394_phi "x_394_phi"
|
||
|
OpName %main_1 "main_1"
|
||
|
OpName %param_18 "param_18"
|
||
|
OpName %param_19 "param_19"
|
||
|
OpName %param_20 "param_20"
|
||
|
OpName %main "main"
|
||
|
OpDecorate %Uniforms Block
|
||
|
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 %x_48 NonWritable
|
||
|
OpDecorate %x_48 DescriptorSet 0
|
||
|
OpDecorate %x_48 Binding 3
|
||
|
OpDecorate %ssbOut Block
|
||
|
OpMemberDecorate %ssbOut 0 Offset 0
|
||
|
OpDecorate %_runtimearr_float ArrayStride 4
|
||
|
OpDecorate %x_54 DescriptorSet 0
|
||
|
OpDecorate %x_54 Binding 0
|
||
|
OpDecorate %_arr_float_uint_64 ArrayStride 4
|
||
|
OpDecorate %_arr__arr_float_uint_64_uint_64 ArrayStride 256
|
||
|
OpDecorate %_arr_float_uint_1 ArrayStride 4
|
||
|
OpDecorate %_arr__arr_float_uint_1_uint_64 ArrayStride 4
|
||
|
OpDecorate %ssbA Block
|
||
|
OpMemberDecorate %ssbA 0 Offset 0
|
||
|
OpDecorate %x_165 NonWritable
|
||
|
OpDecorate %x_165 DescriptorSet 0
|
||
|
OpDecorate %x_165 Binding 1
|
||
|
OpDecorate %ssbB Block
|
||
|
OpMemberDecorate %ssbB 0 Offset 0
|
||
|
OpDecorate %x_185 NonWritable
|
||
|
OpDecorate %x_185 DescriptorSet 0
|
||
|
OpDecorate %x_185 Binding 2
|
||
|
OpDecorate %tint_symbol BuiltIn LocalInvocationId
|
||
|
OpDecorate %tint_symbol_1 BuiltIn GlobalInvocationId
|
||
|
OpDecorate %tint_symbol_2 BuiltIn LocalInvocationIndex
|
||
|
OpDecorate %_arr__arr_float_uint_1_uint_1 ArrayStride 4
|
||
|
%int = OpTypeInt 32 1
|
||
|
%_ptr_Private_int = OpTypePointer Private %int
|
||
|
%4 = OpConstantNull %int
|
||
|
%dimAOuter_1 = OpVariable %_ptr_Private_int Private %4
|
||
|
%float = OpTypeFloat 32
|
||
|
%v3int = OpTypeVector %int 3
|
||
|
%v2int = OpTypeVector %int 2
|
||
|
%Uniforms = OpTypeStruct %float %v3int %v3int %v3int %v2int
|
||
|
%_ptr_Uniform_Uniforms = OpTypePointer Uniform %Uniforms
|
||
|
%x_48 = OpVariable %_ptr_Uniform_Uniforms Uniform
|
||
|
%dimInner_1 = OpVariable %_ptr_Private_int Private %4
|
||
|
%dimBOuter_1 = OpVariable %_ptr_Private_int Private %4
|
||
|
%_runtimearr_float = OpTypeRuntimeArray %float
|
||
|
%ssbOut = OpTypeStruct %_runtimearr_float
|
||
|
%_ptr_StorageBuffer_ssbOut = OpTypePointer StorageBuffer %ssbOut
|
||
|
%x_54 = OpVariable %_ptr_StorageBuffer_ssbOut StorageBuffer
|
||
|
%uint = OpTypeInt 32 0
|
||
|
%v3uint = OpTypeVector %uint 3
|
||
|
%_ptr_Private_v3uint = OpTypePointer Private %v3uint
|
||
|
%21 = OpConstantNull %v3uint
|
||
|
%gl_LocalInvocationID = OpVariable %_ptr_Private_v3uint Private %21
|
||
|
%gl_GlobalInvocationID = OpVariable %_ptr_Private_v3uint Private %21
|
||
|
%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
|
||
|
%uint_1 = OpConstant %uint 1
|
||
|
%_arr_float_uint_1 = OpTypeArray %float %uint_1
|
||
|
%_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
|
||
|
%ssbA = OpTypeStruct %_runtimearr_float
|
||
|
%_ptr_StorageBuffer_ssbA = OpTypePointer StorageBuffer %ssbA
|
||
|
%x_165 = OpVariable %_ptr_StorageBuffer_ssbA StorageBuffer
|
||
|
%batch = OpVariable %_ptr_Private_int Private %4
|
||
|
%ssbB = OpTypeStruct %_runtimearr_float
|
||
|
%_ptr_StorageBuffer_ssbB = OpTypePointer StorageBuffer %ssbB
|
||
|
%x_185 = OpVariable %_ptr_StorageBuffer_ssbB StorageBuffer
|
||
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
||
|
%tint_symbol = OpVariable %_ptr_Input_v3uint Input
|
||
|
%tint_symbol_1 = OpVariable %_ptr_Input_v3uint Input
|
||
|
%_ptr_Input_uint = OpTypePointer Input %uint
|
||
|
%tint_symbol_2 = OpVariable %_ptr_Input_uint Input
|
||
|
%bool = OpTypeBool
|
||
|
%_ptr_Function_v2int = OpTypePointer Function %v2int
|
||
|
%45 = OpTypeFunction %bool %_ptr_Function_v2int %_ptr_Function_v2int
|
||
|
%_ptr_Function_bool = OpTypePointer Function %bool
|
||
|
%54 = OpConstantNull %bool
|
||
|
%int_0 = OpConstant %int 0
|
||
|
%60 = OpConstantComposite %v2int %int_0 %int_0
|
||
|
%v2bool = OpTypeVector %bool 2
|
||
|
%_ptr_Function_int = OpTypePointer Function %int
|
||
|
%73 = OpTypeFunction %float %_ptr_Function_int %_ptr_Function_int
|
||
|
%81 = OpConstantNull %v2int
|
||
|
%_ptr_Function_float = OpTypePointer Function %float
|
||
|
%85 = OpConstantNull %float
|
||
|
%_ptr_Uniform_int = OpTypePointer Uniform %int
|
||
|
%uint_2 = OpConstant %uint 2
|
||
|
%uint_0 = OpConstant %uint 0
|
||
|
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
|
||
|
%float_0 = OpConstant %float 0
|
||
|
%_ptr_Function_v3int = OpTypePointer Function %v3int
|
||
|
%165 = OpTypeFunction %int %_ptr_Function_v3int
|
||
|
%uint_4 = OpConstant %uint 4
|
||
|
%v3float = OpTypeVector %float 3
|
||
|
%int_1 = OpConstant %int 1
|
||
|
%void = OpTypeVoid
|
||
|
%184 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_float
|
||
|
%195 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int %_ptr_Function_float
|
||
|
%204 = OpConstantNull %v3int
|
||
|
%222 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_float
|
||
|
%251 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %_ptr_Function_int
|
||
|
%_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
|
||
|
%267 = OpConstantNull %_arr__arr_float_uint_1_uint_1
|
||
|
%_ptr_Function__arr_float_uint_1 = OpTypePointer Function %_arr_float_uint_1
|
||
|
%287 = OpConstantNull %_arr_float_uint_1
|
||
|
%_ptr_Private_uint = OpTypePointer Private %uint
|
||
|
%int_64 = OpConstant %int 64
|
||
|
%_ptr_Workgroup_float = OpTypePointer Workgroup %float
|
||
|
%uint_264 = OpConstant %uint 264
|
||
|
%575 = OpTypeFunction %void
|
||
|
%603 = OpConstantNull %_arr__arr_float_uint_64_uint_64
|
||
|
%604 = OpConstantNull %_arr__arr_float_uint_1_uint_64
|
||
|
%coordsInBounds_vi2_vi2_ = OpFunction %bool None %45
|
||
|
%coord = OpFunctionParameter %_ptr_Function_v2int
|
||
|
%shape = OpFunctionParameter %_ptr_Function_v2int
|
||
|
%51 = OpLabel
|
||
|
%x_87 = OpVariable %_ptr_Function_bool Function %54
|
||
|
%x_88_phi = OpVariable %_ptr_Function_bool Function %54
|
||
|
%57 = OpLoad %v2int %coord
|
||
|
%61 = OpSGreaterThanEqual %v2bool %57 %60
|
||
|
%58 = OpAll %bool %61
|
||
|
OpStore %x_88_phi %58
|
||
|
OpSelectionMerge %63 None
|
||
|
OpBranchConditional %58 %64 %63
|
||
|
%64 = OpLabel
|
||
|
%66 = OpLoad %v2int %coord
|
||
|
%68 = OpLoad %v2int %shape
|
||
|
%70 = OpSLessThan %v2bool %66 %68
|
||
|
%69 = OpAll %bool %70
|
||
|
OpStore %x_87 %69
|
||
|
%71 = OpLoad %bool %x_87
|
||
|
OpStore %x_88_phi %71
|
||
|
OpBranch %63
|
||
|
%63 = OpLabel
|
||
|
%72 = OpLoad %bool %x_88_phi
|
||
|
OpReturnValue %72
|
||
|
OpFunctionEnd
|
||
|
%mm_readA_i1_i1_ = OpFunction %float None %73
|
||
|
%row = OpFunctionParameter %_ptr_Function_int
|
||
|
%col = OpFunctionParameter %_ptr_Function_int
|
||
|
%78 = OpLabel
|
||
|
%batchASize = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_10 = OpVariable %_ptr_Function_v2int Function %81
|
||
|
%param_11 = OpVariable %_ptr_Function_v2int Function %81
|
||
|
%x_430 = OpVariable %_ptr_Function_float Function %85
|
||
|
%87 = OpAccessChain %_ptr_Uniform_int %x_48 %uint_1 %uint_1
|
||
|
%88 = OpLoad %int %87
|
||
|
%90 = OpAccessChain %_ptr_Uniform_int %x_48 %uint_1 %uint_2
|
||
|
%91 = OpLoad %int %90
|
||
|
%92 = OpIMul %int %88 %91
|
||
|
OpStore %batchASize %92
|
||
|
%94 = OpLoad %int %row
|
||
|
%96 = OpLoad %int %col
|
||
|
%97 = OpLoad %int %dimAOuter_1
|
||
|
%98 = OpLoad %int %dimInner_1
|
||
|
%99 = OpCompositeConstruct %v2int %94 %96
|
||
|
OpStore %param_10 %99
|
||
|
%100 = OpCompositeConstruct %v2int %97 %98
|
||
|
OpStore %param_11 %100
|
||
|
%101 = OpFunctionCall %bool %coordsInBounds_vi2_vi2_ %param_10 %param_11
|
||
|
OpSelectionMerge %104 None
|
||
|
OpBranchConditional %101 %105 %106
|
||
|
%105 = OpLabel
|
||
|
%107 = OpLoad %int %batch
|
||
|
%108 = OpLoad %int %batchASize
|
||
|
%110 = OpLoad %int %row
|
||
|
%111 = OpLoad %int %dimInner_1
|
||
|
%113 = OpLoad %int %col
|
||
|
%115 = OpIMul %int %107 %108
|
||
|
%116 = OpIMul %int %110 %111
|
||
|
%117 = OpIAdd %int %115 %116
|
||
|
%118 = OpIAdd %int %117 %113
|
||
|
%120 = OpAccessChain %_ptr_StorageBuffer_float %x_165 %uint_0 %118
|
||
|
%121 = OpLoad %float %120
|
||
|
OpStore %x_430 %121
|
||
|
OpBranch %104
|
||
|
%106 = OpLabel
|
||
|
OpStore %x_430 %float_0
|
||
|
OpBranch %104
|
||
|
%104 = OpLabel
|
||
|
%123 = OpLoad %float %x_430
|
||
|
OpReturnValue %123
|
||
|
OpFunctionEnd
|
||
|
%mm_readB_i1_i1_ = OpFunction %float None %73
|
||
|
%row_1 = OpFunctionParameter %_ptr_Function_int
|
||
|
%col_1 = OpFunctionParameter %_ptr_Function_int
|
||
|
%127 = OpLabel
|
||
|
%batchBSize = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_12 = OpVariable %_ptr_Function_v2int Function %81
|
||
|
%param_13 = OpVariable %_ptr_Function_v2int Function %81
|
||
|
%x_468 = OpVariable %_ptr_Function_float Function %85
|
||
|
%132 = OpAccessChain %_ptr_Uniform_int %x_48 %uint_2 %uint_1
|
||
|
%133 = OpLoad %int %132
|
||
|
%134 = OpAccessChain %_ptr_Uniform_int %x_48 %uint_2 %uint_2
|
||
|
%135 = OpLoad %int %134
|
||
|
%136 = OpIMul %int %133 %135
|
||
|
OpStore %batchBSize %136
|
||
|
%138 = OpLoad %int %row_1
|
||
|
%140 = OpLoad %int %col_1
|
||
|
%141 = OpLoad %int %dimInner_1
|
||
|
%142 = OpLoad %int %dimBOuter_1
|
||
|
%143 = OpCompositeConstruct %v2int %138 %140
|
||
|
OpStore %param_12 %143
|
||
|
%144 = OpCompositeConstruct %v2int %141 %142
|
||
|
OpStore %param_13 %144
|
||
|
%145 = OpFunctionCall %bool %coordsInBounds_vi2_vi2_ %param_12 %param_13
|
||
|
OpSelectionMerge %148 None
|
||
|
OpBranchConditional %145 %149 %150
|
||
|
%149 = OpLabel
|
||
|
%151 = OpLoad %int %batch
|
||
|
%152 = OpLoad %int %batchBSize
|
||
|
%154 = OpLoad %int %row_1
|
||
|
%155 = OpLoad %int %dimBOuter_1
|
||
|
%157 = OpLoad %int %col_1
|
||
|
%158 = OpIMul %int %151 %152
|
||
|
%159 = OpIMul %int %154 %155
|
||
|
%160 = OpIAdd %int %158 %159
|
||
|
%161 = OpIAdd %int %160 %157
|
||
|
%162 = OpAccessChain %_ptr_StorageBuffer_float %x_185 %uint_0 %161
|
||
|
%163 = OpLoad %float %162
|
||
|
OpStore %x_468 %163
|
||
|
OpBranch %148
|
||
|
%150 = OpLabel
|
||
|
OpStore %x_468 %float_0
|
||
|
OpBranch %148
|
||
|
%148 = OpLabel
|
||
|
%164 = OpLoad %float %x_468
|
||
|
OpReturnValue %164
|
||
|
OpFunctionEnd
|
||
|
%getOutputFlatIndex_vi3_ = OpFunction %int None %165
|
||
|
%coords = OpFunctionParameter %_ptr_Function_v3int
|
||
|
%169 = OpLabel
|
||
|
%171 = OpLoad %v3int %coords
|
||
|
%173 = OpAccessChain %_ptr_Uniform_int %x_48 %uint_4 %uint_0
|
||
|
%174 = OpLoad %int %173
|
||
|
%175 = OpAccessChain %_ptr_Uniform_int %x_48 %uint_4 %uint_1
|
||
|
%176 = OpLoad %int %175
|
||
|
%179 = OpConvertSToF %v3float %171
|
||
|
%183 = OpCompositeConstruct %v3int %174 %176 %int_1
|
||
|
%181 = OpConvertSToF %v3float %183
|
||
|
%178 = OpDot %float %179 %181
|
||
|
%177 = OpConvertFToS %int %178
|
||
|
OpReturnValue %177
|
||
|
OpFunctionEnd
|
||
|
%setOutput_i1_f1_ = OpFunction %void None %184
|
||
|
%flatIndex = OpFunctionParameter %_ptr_Function_int
|
||
|
%value = OpFunctionParameter %_ptr_Function_float
|
||
|
%189 = OpLabel
|
||
|
%191 = OpLoad %int %flatIndex
|
||
|
%193 = OpLoad %float %value
|
||
|
%194 = OpAccessChain %_ptr_StorageBuffer_float %x_54 %uint_0 %191
|
||
|
OpStore %194 %193
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|
||
|
%setOutput_i1_i1_i1_f1_ = OpFunction %void None %195
|
||
|
%d0 = OpFunctionParameter %_ptr_Function_int
|
||
|
%d1 = OpFunctionParameter %_ptr_Function_int
|
||
|
%d2 = OpFunctionParameter %_ptr_Function_int
|
||
|
%value_1 = OpFunctionParameter %_ptr_Function_float
|
||
|
%201 = OpLabel
|
||
|
%flatIndex_1 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param = OpVariable %_ptr_Function_v3int Function %204
|
||
|
%param_1 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_2 = OpVariable %_ptr_Function_float Function %85
|
||
|
%208 = OpLoad %int %d0
|
||
|
%210 = OpLoad %int %d1
|
||
|
%212 = OpLoad %int %d2
|
||
|
%213 = OpCompositeConstruct %v3int %208 %210 %212
|
||
|
OpStore %param %213
|
||
|
%214 = OpFunctionCall %int %getOutputFlatIndex_vi3_ %param
|
||
|
OpStore %flatIndex_1 %214
|
||
|
%216 = OpLoad %int %flatIndex_1
|
||
|
OpStore %param_1 %216
|
||
|
%218 = OpLoad %float %value_1
|
||
|
OpStore %param_2 %218
|
||
|
%219 = OpFunctionCall %void %setOutput_i1_f1_ %param_1 %param_2
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|
||
|
%mm_write_i1_i1_f1_ = OpFunction %void None %222
|
||
|
%row_2 = OpFunctionParameter %_ptr_Function_int
|
||
|
%col_2 = OpFunctionParameter %_ptr_Function_int
|
||
|
%value_2 = OpFunctionParameter %_ptr_Function_float
|
||
|
%227 = OpLabel
|
||
|
%outCoord = OpVariable %_ptr_Function_v3int Function %204
|
||
|
%param_14 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_15 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_16 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_17 = OpVariable %_ptr_Function_float Function %85
|
||
|
%233 = OpLoad %int %batch
|
||
|
%235 = OpLoad %int %row_2
|
||
|
%237 = OpLoad %int %col_2
|
||
|
%238 = OpCompositeConstruct %v3int %233 %235 %237
|
||
|
OpStore %outCoord %238
|
||
|
%239 = OpLoad %int %batch
|
||
|
OpStore %param_14 %239
|
||
|
%241 = OpLoad %int %row_2
|
||
|
OpStore %param_15 %241
|
||
|
%243 = OpLoad %int %col_2
|
||
|
OpStore %param_16 %243
|
||
|
%245 = OpLoad %float %value_2
|
||
|
OpStore %param_17 %245
|
||
|
%246 = OpFunctionCall %void %setOutput_i1_i1_i1_f1_ %param_14 %param_15 %param_16 %param_17
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|
||
|
%mm_matMul_i1_i1_i1_ = OpFunction %void None %251
|
||
|
%dimAOuter = OpFunctionParameter %_ptr_Function_int
|
||
|
%dimInner = OpFunctionParameter %_ptr_Function_int
|
||
|
%dimBOuter = OpFunctionParameter %_ptr_Function_int
|
||
|
%256 = OpLabel
|
||
|
%tileRow = OpVariable %_ptr_Function_int Function %4
|
||
|
%tileCol = OpVariable %_ptr_Function_int Function %4
|
||
|
%globalRow = OpVariable %_ptr_Function_int Function %4
|
||
|
%globalCol = OpVariable %_ptr_Function_int Function %4
|
||
|
%numTiles = OpVariable %_ptr_Function_int Function %4
|
||
|
%innerRow = OpVariable %_ptr_Function_int Function %4
|
||
|
%innerCol = OpVariable %_ptr_Function_int Function %4
|
||
|
%acc = OpVariable %_ptr_Function__arr__arr_float_uint_1_uint_1 Function %267
|
||
|
%tileColA = OpVariable %_ptr_Function_int Function %4
|
||
|
%tileRowB = OpVariable %_ptr_Function_int Function %4
|
||
|
%t = OpVariable %_ptr_Function_int Function %4
|
||
|
%innerRow_1 = OpVariable %_ptr_Function_int Function %4
|
||
|
%innerCol_1 = OpVariable %_ptr_Function_int Function %4
|
||
|
%inputRow = OpVariable %_ptr_Function_int Function %4
|
||
|
%inputCol = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_3 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_4 = OpVariable %_ptr_Function_int Function %4
|
||
|
%innerRow_2 = OpVariable %_ptr_Function_int Function %4
|
||
|
%innerCol_2 = OpVariable %_ptr_Function_int Function %4
|
||
|
%inputRow_1 = OpVariable %_ptr_Function_int Function %4
|
||
|
%inputCol_1 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_5 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_6 = OpVariable %_ptr_Function_int Function %4
|
||
|
%k = OpVariable %_ptr_Function_int Function %4
|
||
|
%inner = OpVariable %_ptr_Function_int Function %4
|
||
|
%BCached = OpVariable %_ptr_Function__arr_float_uint_1 Function %287
|
||
|
%innerRow_3 = OpVariable %_ptr_Function_int Function %4
|
||
|
%ACached = OpVariable %_ptr_Function_float Function %85
|
||
|
%innerCol_3 = OpVariable %_ptr_Function_int Function %4
|
||
|
%innerRow_4 = OpVariable %_ptr_Function_int Function %4
|
||
|
%innerCol_4 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_7 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_8 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_9 = OpVariable %_ptr_Function_float Function %85
|
||
|
%x_393 = OpVariable %_ptr_Function_bool Function %54
|
||
|
%x_394_phi = OpVariable %_ptr_Function_bool Function %54
|
||
|
%297 = OpAccessChain %_ptr_Private_uint %gl_LocalInvocationID %uint_1
|
||
|
%298 = OpLoad %uint %297
|
||
|
%299 = OpBitcast %int %298
|
||
|
%300 = OpIMul %int %299 %int_1
|
||
|
OpStore %tileRow %300
|
||
|
%301 = OpAccessChain %_ptr_Private_uint %gl_LocalInvocationID %uint_0
|
||
|
%302 = OpLoad %uint %301
|
||
|
%303 = OpBitcast %int %302
|
||
|
%304 = OpIMul %int %303 %int_1
|
||
|
OpStore %tileCol %304
|
||
|
%305 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_1
|
||
|
%306 = OpLoad %uint %305
|
||
|
%307 = OpBitcast %int %306
|
||
|
%308 = OpIMul %int %307 %int_1
|
||
|
OpStore %globalRow %308
|
||
|
%309 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_0
|
||
|
%310 = OpLoad %uint %309
|
||
|
%311 = OpBitcast %int %310
|
||
|
%312 = OpIMul %int %311 %int_1
|
||
|
OpStore %globalCol %312
|
||
|
%314 = OpLoad %int %dimInner
|
||
|
%315 = OpISub %int %314 %int_1
|
||
|
%317 = OpSDiv %int %315 %int_64
|
||
|
%318 = OpIAdd %int %317 %int_1
|
||
|
OpStore %numTiles %318
|
||
|
OpStore %innerRow %int_0
|
||
|
OpBranch %319
|
||
|
%319 = OpLabel
|
||
|
OpLoopMerge %320 %321 None
|
||
|
OpBranch %322
|
||
|
%322 = OpLabel
|
||
|
%323 = OpLoad %int %innerRow
|
||
|
%324 = OpSLessThan %bool %323 %int_1
|
||
|
OpSelectionMerge %325 None
|
||
|
OpBranchConditional %324 %326 %327
|
||
|
%326 = OpLabel
|
||
|
OpBranch %325
|
||
|
%327 = OpLabel
|
||
|
OpBranch %320
|
||
|
%325 = OpLabel
|
||
|
OpStore %innerCol %int_0
|
||
|
OpBranch %328
|
||
|
%328 = OpLabel
|
||
|
OpLoopMerge %329 %330 None
|
||
|
OpBranch %331
|
||
|
%331 = OpLabel
|
||
|
%332 = OpLoad %int %innerCol
|
||
|
%333 = OpSLessThan %bool %332 %int_1
|
||
|
OpSelectionMerge %334 None
|
||
|
OpBranchConditional %333 %335 %336
|
||
|
%335 = OpLabel
|
||
|
OpBranch %334
|
||
|
%336 = OpLabel
|
||
|
OpBranch %329
|
||
|
%334 = OpLabel
|
||
|
%337 = OpLoad %int %innerRow
|
||
|
%338 = OpLoad %int %innerCol
|
||
|
%339 = OpAccessChain %_ptr_Function_float %acc %337 %338
|
||
|
OpStore %339 %float_0
|
||
|
OpBranch %330
|
||
|
%330 = OpLabel
|
||
|
%340 = OpLoad %int %innerCol
|
||
|
%341 = OpIAdd %int %340 %int_1
|
||
|
OpStore %innerCol %341
|
||
|
OpBranch %328
|
||
|
%329 = OpLabel
|
||
|
OpBranch %321
|
||
|
%321 = OpLabel
|
||
|
%342 = OpLoad %int %innerRow
|
||
|
%343 = OpIAdd %int %342 %int_1
|
||
|
OpStore %innerRow %343
|
||
|
OpBranch %319
|
||
|
%320 = OpLabel
|
||
|
%344 = OpAccessChain %_ptr_Private_uint %gl_LocalInvocationID %uint_0
|
||
|
%345 = OpLoad %uint %344
|
||
|
%346 = OpBitcast %int %345
|
||
|
%347 = OpIMul %int %346 %int_64
|
||
|
OpStore %tileColA %347
|
||
|
%348 = OpAccessChain %_ptr_Private_uint %gl_LocalInvocationID %uint_1
|
||
|
%349 = OpLoad %uint %348
|
||
|
%350 = OpBitcast %int %349
|
||
|
%351 = OpIMul %int %350 %int_1
|
||
|
OpStore %tileRowB %351
|
||
|
OpStore %t %int_0
|
||
|
OpBranch %352
|
||
|
%352 = OpLabel
|
||
|
OpLoopMerge %353 %354 None
|
||
|
OpBranch %355
|
||
|
%355 = OpLabel
|
||
|
%356 = OpLoad %int %t
|
||
|
%357 = OpLoad %int %numTiles
|
||
|
%358 = OpSLessThan %bool %356 %357
|
||
|
OpSelectionMerge %359 None
|
||
|
OpBranchConditional %358 %360 %361
|
||
|
%360 = OpLabel
|
||
|
OpBranch %359
|
||
|
%361 = OpLabel
|
||
|
OpBranch %353
|
||
|
%359 = OpLabel
|
||
|
OpStore %innerRow_1 %int_0
|
||
|
OpBranch %362
|
||
|
%362 = OpLabel
|
||
|
OpLoopMerge %363 %364 None
|
||
|
OpBranch %365
|
||
|
%365 = OpLabel
|
||
|
%366 = OpLoad %int %innerRow_1
|
||
|
%367 = OpSLessThan %bool %366 %int_1
|
||
|
OpSelectionMerge %368 None
|
||
|
OpBranchConditional %367 %369 %370
|
||
|
%369 = OpLabel
|
||
|
OpBranch %368
|
||
|
%370 = OpLabel
|
||
|
OpBranch %363
|
||
|
%368 = OpLabel
|
||
|
OpStore %innerCol_1 %int_0
|
||
|
OpBranch %371
|
||
|
%371 = OpLabel
|
||
|
OpLoopMerge %372 %373 None
|
||
|
OpBranch %374
|
||
|
%374 = OpLabel
|
||
|
%375 = OpLoad %int %innerCol_1
|
||
|
%376 = OpSLessThan %bool %375 %int_64
|
||
|
OpSelectionMerge %377 None
|
||
|
OpBranchConditional %376 %378 %379
|
||
|
%378 = OpLabel
|
||
|
OpBranch %377
|
||
|
%379 = OpLabel
|
||
|
OpBranch %372
|
||
|
%377 = OpLabel
|
||
|
%380 = OpLoad %int %tileRow
|
||
|
%381 = OpLoad %int %innerRow_1
|
||
|
%382 = OpIAdd %int %380 %381
|
||
|
OpStore %inputRow %382
|
||
|
%383 = OpLoad %int %tileColA
|
||
|
%384 = OpLoad %int %innerCol_1
|
||
|
%385 = OpIAdd %int %383 %384
|
||
|
OpStore %inputCol %385
|
||
|
%386 = OpLoad %int %inputRow
|
||
|
%387 = OpLoad %int %inputCol
|
||
|
%388 = OpLoad %int %globalRow
|
||
|
%389 = OpLoad %int %innerRow_1
|
||
|
%390 = OpLoad %int %t
|
||
|
%391 = OpLoad %int %inputCol
|
||
|
%392 = OpIAdd %int %388 %389
|
||
|
OpStore %param_3 %392
|
||
|
%393 = OpIMul %int %390 %int_64
|
||
|
%394 = OpIAdd %int %393 %391
|
||
|
OpStore %param_4 %394
|
||
|
%395 = OpFunctionCall %float %mm_readA_i1_i1_ %param_3 %param_4
|
||
|
%399 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %386 %387
|
||
|
OpStore %399 %395
|
||
|
OpBranch %373
|
||
|
%373 = OpLabel
|
||
|
%400 = OpLoad %int %innerCol_1
|
||
|
%401 = OpIAdd %int %400 %int_1
|
||
|
OpStore %innerCol_1 %401
|
||
|
OpBranch %371
|
||
|
%372 = OpLabel
|
||
|
OpBranch %364
|
||
|
%364 = OpLabel
|
||
|
%402 = OpLoad %int %innerRow_1
|
||
|
%403 = OpIAdd %int %402 %int_1
|
||
|
OpStore %innerRow_1 %403
|
||
|
OpBranch %362
|
||
|
%363 = OpLabel
|
||
|
OpStore %innerRow_2 %int_0
|
||
|
OpBranch %404
|
||
|
%404 = OpLabel
|
||
|
OpLoopMerge %405 %406 None
|
||
|
OpBranch %407
|
||
|
%407 = OpLabel
|
||
|
%408 = OpLoad %int %innerRow_2
|
||
|
%409 = OpSLessThan %bool %408 %int_1
|
||
|
OpSelectionMerge %410 None
|
||
|
OpBranchConditional %409 %411 %412
|
||
|
%411 = OpLabel
|
||
|
OpBranch %410
|
||
|
%412 = OpLabel
|
||
|
OpBranch %405
|
||
|
%410 = OpLabel
|
||
|
OpStore %innerCol_2 %int_0
|
||
|
OpBranch %413
|
||
|
%413 = OpLabel
|
||
|
OpLoopMerge %414 %415 None
|
||
|
OpBranch %416
|
||
|
%416 = OpLabel
|
||
|
%417 = OpLoad %int %innerCol_2
|
||
|
%418 = OpSLessThan %bool %417 %int_1
|
||
|
OpSelectionMerge %419 None
|
||
|
OpBranchConditional %418 %420 %421
|
||
|
%420 = OpLabel
|
||
|
OpBranch %419
|
||
|
%421 = OpLabel
|
||
|
OpBranch %414
|
||
|
%419 = OpLabel
|
||
|
%422 = OpLoad %int %tileRowB
|
||
|
%423 = OpLoad %int %innerRow_2
|
||
|
%424 = OpIAdd %int %422 %423
|
||
|
OpStore %inputRow_1 %424
|
||
|
%425 = OpLoad %int %tileCol
|
||
|
%426 = OpLoad %int %innerCol_2
|
||
|
%427 = OpIAdd %int %425 %426
|
||
|
OpStore %inputCol_1 %427
|
||
|
%428 = OpLoad %int %inputRow_1
|
||
|
%429 = OpLoad %int %inputCol_1
|
||
|
%430 = OpLoad %int %t
|
||
|
%431 = OpLoad %int %inputRow_1
|
||
|
%432 = OpLoad %int %globalCol
|
||
|
%433 = OpLoad %int %innerCol_2
|
||
|
%434 = OpIMul %int %430 %int_64
|
||
|
%435 = OpIAdd %int %434 %431
|
||
|
OpStore %param_5 %435
|
||
|
%436 = OpIAdd %int %432 %433
|
||
|
OpStore %param_6 %436
|
||
|
%437 = OpFunctionCall %float %mm_readB_i1_i1_ %param_5 %param_6
|
||
|
%440 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %428 %429
|
||
|
OpStore %440 %437
|
||
|
OpBranch %415
|
||
|
%415 = OpLabel
|
||
|
%441 = OpLoad %int %innerCol_2
|
||
|
%442 = OpIAdd %int %441 %int_1
|
||
|
OpStore %innerCol_2 %442
|
||
|
OpBranch %413
|
||
|
%414 = OpLabel
|
||
|
OpBranch %406
|
||
|
%406 = OpLabel
|
||
|
%443 = OpLoad %int %innerRow_2
|
||
|
%444 = OpIAdd %int %443 %int_1
|
||
|
OpStore %innerRow_2 %444
|
||
|
OpBranch %404
|
||
|
%405 = OpLabel
|
||
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
||
|
OpStore %k %int_0
|
||
|
OpBranch %447
|
||
|
%447 = OpLabel
|
||
|
OpLoopMerge %448 %449 None
|
||
|
OpBranch %450
|
||
|
%450 = OpLabel
|
||
|
%451 = OpLoad %int %k
|
||
|
%452 = OpSLessThan %bool %451 %int_64
|
||
|
OpSelectionMerge %453 None
|
||
|
OpBranchConditional %452 %454 %455
|
||
|
%454 = OpLabel
|
||
|
OpBranch %453
|
||
|
%455 = OpLabel
|
||
|
OpBranch %448
|
||
|
%453 = OpLabel
|
||
|
OpStore %inner %int_0
|
||
|
OpBranch %456
|
||
|
%456 = OpLabel
|
||
|
OpLoopMerge %457 %458 None
|
||
|
OpBranch %459
|
||
|
%459 = OpLabel
|
||
|
%460 = OpLoad %int %inner
|
||
|
%461 = OpSLessThan %bool %460 %int_1
|
||
|
OpSelectionMerge %462 None
|
||
|
OpBranchConditional %461 %463 %464
|
||
|
%463 = OpLabel
|
||
|
OpBranch %462
|
||
|
%464 = OpLabel
|
||
|
OpBranch %457
|
||
|
%462 = OpLabel
|
||
|
%465 = OpLoad %int %inner
|
||
|
%466 = OpLoad %int %k
|
||
|
%467 = OpLoad %int %tileCol
|
||
|
%468 = OpLoad %int %inner
|
||
|
%469 = OpIAdd %int %467 %468
|
||
|
%470 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %466 %469
|
||
|
%471 = OpLoad %float %470
|
||
|
%472 = OpAccessChain %_ptr_Function_float %BCached %465
|
||
|
OpStore %472 %471
|
||
|
OpBranch %458
|
||
|
%458 = OpLabel
|
||
|
%473 = OpLoad %int %inner
|
||
|
%474 = OpIAdd %int %473 %int_1
|
||
|
OpStore %inner %474
|
||
|
OpBranch %456
|
||
|
%457 = OpLabel
|
||
|
OpStore %innerRow_3 %int_0
|
||
|
OpBranch %475
|
||
|
%475 = OpLabel
|
||
|
OpLoopMerge %476 %477 None
|
||
|
OpBranch %478
|
||
|
%478 = OpLabel
|
||
|
%479 = OpLoad %int %innerRow_3
|
||
|
%480 = OpSLessThan %bool %479 %int_1
|
||
|
OpSelectionMerge %481 None
|
||
|
OpBranchConditional %480 %482 %483
|
||
|
%482 = OpLabel
|
||
|
OpBranch %481
|
||
|
%483 = OpLabel
|
||
|
OpBranch %476
|
||
|
%481 = OpLabel
|
||
|
%484 = OpLoad %int %tileRow
|
||
|
%485 = OpLoad %int %innerRow_3
|
||
|
%486 = OpLoad %int %k
|
||
|
%487 = OpIAdd %int %484 %485
|
||
|
%488 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %487 %486
|
||
|
%489 = OpLoad %float %488
|
||
|
OpStore %ACached %489
|
||
|
OpStore %innerCol_3 %int_0
|
||
|
OpBranch %490
|
||
|
%490 = OpLabel
|
||
|
OpLoopMerge %491 %492 None
|
||
|
OpBranch %493
|
||
|
%493 = OpLabel
|
||
|
%494 = OpLoad %int %innerCol_3
|
||
|
%495 = OpSLessThan %bool %494 %int_1
|
||
|
OpSelectionMerge %496 None
|
||
|
OpBranchConditional %495 %497 %498
|
||
|
%497 = OpLabel
|
||
|
OpBranch %496
|
||
|
%498 = OpLabel
|
||
|
OpBranch %491
|
||
|
%496 = OpLabel
|
||
|
%499 = OpLoad %int %innerRow_3
|
||
|
%500 = OpLoad %int %innerCol_3
|
||
|
%501 = OpLoad %float %ACached
|
||
|
%502 = OpLoad %int %innerCol_3
|
||
|
%503 = OpAccessChain %_ptr_Function_float %BCached %502
|
||
|
%504 = OpLoad %float %503
|
||
|
%505 = OpAccessChain %_ptr_Function_float %acc %499 %500
|
||
|
%506 = OpLoad %float %505
|
||
|
%507 = OpAccessChain %_ptr_Function_float %acc %499 %500
|
||
|
%508 = OpFMul %float %501 %504
|
||
|
%509 = OpFAdd %float %506 %508
|
||
|
OpStore %507 %509
|
||
|
OpBranch %492
|
||
|
%492 = OpLabel
|
||
|
%510 = OpLoad %int %innerCol_3
|
||
|
%511 = OpIAdd %int %510 %int_1
|
||
|
OpStore %innerCol_3 %511
|
||
|
OpBranch %490
|
||
|
%491 = OpLabel
|
||
|
OpBranch %477
|
||
|
%477 = OpLabel
|
||
|
%512 = OpLoad %int %innerRow_3
|
||
|
%513 = OpIAdd %int %512 %int_1
|
||
|
OpStore %innerRow_3 %513
|
||
|
OpBranch %475
|
||
|
%476 = OpLabel
|
||
|
OpBranch %449
|
||
|
%449 = OpLabel
|
||
|
%514 = OpLoad %int %k
|
||
|
%515 = OpIAdd %int %514 %int_1
|
||
|
OpStore %k %515
|
||
|
OpBranch %447
|
||
|
%448 = OpLabel
|
||
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
||
|
OpBranch %354
|
||
|
%354 = OpLabel
|
||
|
%517 = OpLoad %int %t
|
||
|
%518 = OpIAdd %int %517 %int_1
|
||
|
OpStore %t %518
|
||
|
OpBranch %352
|
||
|
%353 = OpLabel
|
||
|
OpStore %innerRow_4 %int_0
|
||
|
OpBranch %519
|
||
|
%519 = OpLabel
|
||
|
OpLoopMerge %520 %521 None
|
||
|
OpBranch %522
|
||
|
%522 = OpLabel
|
||
|
%523 = OpLoad %int %innerRow_4
|
||
|
%524 = OpSLessThan %bool %523 %int_1
|
||
|
OpSelectionMerge %525 None
|
||
|
OpBranchConditional %524 %526 %527
|
||
|
%526 = OpLabel
|
||
|
OpBranch %525
|
||
|
%527 = OpLabel
|
||
|
OpBranch %520
|
||
|
%525 = OpLabel
|
||
|
OpStore %innerCol_4 %int_0
|
||
|
OpBranch %528
|
||
|
%528 = OpLabel
|
||
|
OpLoopMerge %529 %530 None
|
||
|
OpBranch %531
|
||
|
%531 = OpLabel
|
||
|
%534 = OpLoad %int %innerCol_4
|
||
|
%535 = OpSLessThan %bool %534 %int_1
|
||
|
OpSelectionMerge %536 None
|
||
|
OpBranchConditional %535 %537 %538
|
||
|
%537 = OpLabel
|
||
|
OpBranch %536
|
||
|
%538 = OpLabel
|
||
|
OpBranch %529
|
||
|
%536 = OpLabel
|
||
|
%539 = OpLoad %int %globalCol
|
||
|
%540 = OpLoad %int %innerCol_4
|
||
|
%542 = OpLoad %int %dimBOuter
|
||
|
%543 = OpIAdd %int %539 %540
|
||
|
%544 = OpSLessThan %bool %543 %542
|
||
|
OpStore %x_394_phi %544
|
||
|
OpSelectionMerge %545 None
|
||
|
OpBranchConditional %544 %546 %545
|
||
|
%546 = OpLabel
|
||
|
%547 = OpLoad %int %globalRow
|
||
|
%548 = OpLoad %int %innerRow_4
|
||
|
%550 = OpLoad %int %dimAOuter
|
||
|
%551 = OpIAdd %int %547 %548
|
||
|
%552 = OpSLessThan %bool %551 %550
|
||
|
OpStore %x_393 %552
|
||
|
%553 = OpLoad %bool %x_393
|
||
|
OpStore %x_394_phi %553
|
||
|
OpBranch %545
|
||
|
%545 = OpLabel
|
||
|
%554 = OpLoad %bool %x_394_phi
|
||
|
OpSelectionMerge %555 None
|
||
|
OpBranchConditional %554 %556 %555
|
||
|
%556 = OpLabel
|
||
|
%557 = OpLoad %int %globalRow
|
||
|
%558 = OpLoad %int %innerRow_4
|
||
|
%559 = OpLoad %int %globalCol
|
||
|
%560 = OpLoad %int %innerCol_4
|
||
|
%561 = OpLoad %int %innerRow_4
|
||
|
%562 = OpLoad %int %innerCol_4
|
||
|
%563 = OpIAdd %int %557 %558
|
||
|
OpStore %param_7 %563
|
||
|
%564 = OpIAdd %int %559 %560
|
||
|
OpStore %param_8 %564
|
||
|
%565 = OpAccessChain %_ptr_Function_float %acc %561 %562
|
||
|
%566 = OpLoad %float %565
|
||
|
OpStore %param_9 %566
|
||
|
%567 = OpFunctionCall %void %mm_write_i1_i1_f1_ %param_7 %param_8 %param_9
|
||
|
OpBranch %555
|
||
|
%555 = OpLabel
|
||
|
OpBranch %530
|
||
|
%530 = OpLabel
|
||
|
%571 = OpLoad %int %innerCol_4
|
||
|
%572 = OpIAdd %int %571 %int_1
|
||
|
OpStore %innerCol_4 %572
|
||
|
OpBranch %528
|
||
|
%529 = OpLabel
|
||
|
OpBranch %521
|
||
|
%521 = OpLabel
|
||
|
%573 = OpLoad %int %innerRow_4
|
||
|
%574 = OpIAdd %int %573 %int_1
|
||
|
OpStore %innerRow_4 %574
|
||
|
OpBranch %519
|
||
|
%520 = OpLabel
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|
||
|
%main_1 = OpFunction %void None %575
|
||
|
%577 = OpLabel
|
||
|
%param_18 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_19 = OpVariable %_ptr_Function_int Function %4
|
||
|
%param_20 = OpVariable %_ptr_Function_int Function %4
|
||
|
%581 = OpAccessChain %_ptr_Uniform_int %x_48 %uint_1 %uint_1
|
||
|
%582 = OpLoad %int %581
|
||
|
OpStore %dimAOuter_1 %582
|
||
|
%583 = OpAccessChain %_ptr_Uniform_int %x_48 %uint_1 %uint_2
|
||
|
%584 = OpLoad %int %583
|
||
|
OpStore %dimInner_1 %584
|
||
|
%585 = OpAccessChain %_ptr_Uniform_int %x_48 %uint_2 %uint_2
|
||
|
%586 = OpLoad %int %585
|
||
|
OpStore %dimBOuter_1 %586
|
||
|
%587 = OpAccessChain %_ptr_Private_uint %gl_GlobalInvocationID %uint_2
|
||
|
%588 = OpLoad %uint %587
|
||
|
%589 = OpBitcast %int %588
|
||
|
OpStore %batch %589
|
||
|
%590 = OpLoad %int %dimAOuter_1
|
||
|
OpStore %param_18 %590
|
||
|
%591 = OpLoad %int %dimInner_1
|
||
|
OpStore %param_19 %591
|
||
|
%592 = OpLoad %int %dimBOuter_1
|
||
|
OpStore %param_20 %592
|
||
|
%593 = OpFunctionCall %void %mm_matMul_i1_i1_i1_ %param_18 %param_19 %param_20
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|
||
|
%main = OpFunction %void None %575
|
||
|
%598 = OpLabel
|
||
|
%599 = OpLoad %uint %tint_symbol_2
|
||
|
%600 = OpIEqual %bool %599 %uint_0
|
||
|
OpSelectionMerge %601 None
|
||
|
OpBranchConditional %600 %602 %601
|
||
|
%602 = OpLabel
|
||
|
OpStore %mm_Asub %603
|
||
|
OpStore %mm_Bsub %604
|
||
|
OpBranch %601
|
||
|
%601 = OpLabel
|
||
|
OpControlBarrier %uint_2 %uint_2 %uint_264
|
||
|
%606 = OpLoad %v3uint %tint_symbol
|
||
|
OpStore %gl_LocalInvocationID %606
|
||
|
%607 = OpLoad %v3uint %tint_symbol_1
|
||
|
OpStore %gl_GlobalInvocationID %607
|
||
|
%608 = OpFunctionCall %void %main_1
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|