xref: /aosp_15_r20/external/skia/tests/sksl/compute/MatrixMultiply.asm.comp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker               OpCapability Shader
2*c8dee2aaSAndroid Build Coastguard Worker          %1 = OpExtInstImport "GLSL.std.450"
3*c8dee2aaSAndroid Build Coastguard Worker               OpMemoryModel Logical GLSL450
4*c8dee2aaSAndroid Build Coastguard Worker               OpEntryPoint GLCompute %main "main" %sk_GlobalInvocationID
5*c8dee2aaSAndroid Build Coastguard Worker               OpExecutionMode %main LocalSize 16 16 1
6*c8dee2aaSAndroid Build Coastguard Worker               OpName %sizeBuffer "sizeBuffer"
7*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %sizeBuffer 0 "sizes"
8*c8dee2aaSAndroid Build Coastguard Worker               OpName %inputs1 "inputs1"
9*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %inputs1 0 "data1"
10*c8dee2aaSAndroid Build Coastguard Worker               OpName %inputs2 "inputs2"
11*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %inputs2 0 "data2"
12*c8dee2aaSAndroid Build Coastguard Worker               OpName %result "result"
13*c8dee2aaSAndroid Build Coastguard Worker               OpMemberName %result 0 "resultData"
14*c8dee2aaSAndroid Build Coastguard Worker               OpName %sk_GlobalInvocationID "sk_GlobalInvocationID"
15*c8dee2aaSAndroid Build Coastguard Worker               OpName %main "main"
16*c8dee2aaSAndroid Build Coastguard Worker               OpName %resultCell "resultCell"
17*c8dee2aaSAndroid Build Coastguard Worker               OpName %result_0 "result"
18*c8dee2aaSAndroid Build Coastguard Worker               OpName %i "i"
19*c8dee2aaSAndroid Build Coastguard Worker               OpName %a "a"
20*c8dee2aaSAndroid Build Coastguard Worker               OpName %b "b"
21*c8dee2aaSAndroid Build Coastguard Worker               OpName %index "index"
22*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %_runtimearr_v2int ArrayStride 8
23*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %sizeBuffer 0 Offset 0
24*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %sizeBuffer BufferBlock
25*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %3 Binding 0
26*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %3 DescriptorSet 0
27*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %_runtimearr_float ArrayStride 4
28*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %inputs1 0 Offset 0
29*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %inputs1 BufferBlock
30*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %9 Binding 1
31*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %9 DescriptorSet 0
32*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %inputs2 0 Offset 0
33*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %inputs2 BufferBlock
34*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %14 Binding 2
35*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %14 DescriptorSet 0
36*c8dee2aaSAndroid Build Coastguard Worker               OpMemberDecorate %result 0 Offset 0
37*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %result BufferBlock
38*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %17 Binding 3
39*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %17 DescriptorSet 0
40*c8dee2aaSAndroid Build Coastguard Worker               OpDecorate %sk_GlobalInvocationID BuiltIn GlobalInvocationId
41*c8dee2aaSAndroid Build Coastguard Worker        %int = OpTypeInt 32 1
42*c8dee2aaSAndroid Build Coastguard Worker      %v2int = OpTypeVector %int 2
43*c8dee2aaSAndroid Build Coastguard Worker%_runtimearr_v2int = OpTypeRuntimeArray %v2int
44*c8dee2aaSAndroid Build Coastguard Worker %sizeBuffer = OpTypeStruct %_runtimearr_v2int
45*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Uniform_sizeBuffer = OpTypePointer Uniform %sizeBuffer
46*c8dee2aaSAndroid Build Coastguard Worker          %3 = OpVariable %_ptr_Uniform_sizeBuffer Uniform
47*c8dee2aaSAndroid Build Coastguard Worker      %float = OpTypeFloat 32
48*c8dee2aaSAndroid Build Coastguard Worker%_runtimearr_float = OpTypeRuntimeArray %float
49*c8dee2aaSAndroid Build Coastguard Worker    %inputs1 = OpTypeStruct %_runtimearr_float
50*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Uniform_inputs1 = OpTypePointer Uniform %inputs1
51*c8dee2aaSAndroid Build Coastguard Worker          %9 = OpVariable %_ptr_Uniform_inputs1 Uniform
52*c8dee2aaSAndroid Build Coastguard Worker    %inputs2 = OpTypeStruct %_runtimearr_float
53*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Uniform_inputs2 = OpTypePointer Uniform %inputs2
54*c8dee2aaSAndroid Build Coastguard Worker         %14 = OpVariable %_ptr_Uniform_inputs2 Uniform
55*c8dee2aaSAndroid Build Coastguard Worker     %result = OpTypeStruct %_runtimearr_float
56*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Uniform_result = OpTypePointer Uniform %result
57*c8dee2aaSAndroid Build Coastguard Worker         %17 = OpVariable %_ptr_Uniform_result Uniform
58*c8dee2aaSAndroid Build Coastguard Worker       %uint = OpTypeInt 32 0
59*c8dee2aaSAndroid Build Coastguard Worker     %v3uint = OpTypeVector %uint 3
60*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Input_v3uint = OpTypePointer Input %v3uint
61*c8dee2aaSAndroid Build Coastguard Worker%sk_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
62*c8dee2aaSAndroid Build Coastguard Worker       %void = OpTypeVoid
63*c8dee2aaSAndroid Build Coastguard Worker         %25 = OpTypeFunction %void
64*c8dee2aaSAndroid Build Coastguard Worker      %int_0 = OpConstant %int 0
65*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Uniform_v2int = OpTypePointer Uniform %v2int
66*c8dee2aaSAndroid Build Coastguard Worker      %int_1 = OpConstant %int 1
67*c8dee2aaSAndroid Build Coastguard Worker      %int_2 = OpConstant %int 2
68*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_v2int = OpTypePointer Function %v2int
69*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_float = OpTypePointer Function %float
70*c8dee2aaSAndroid Build Coastguard Worker    %float_0 = OpConstant %float 0
71*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Function_int = OpTypePointer Function %int
72*c8dee2aaSAndroid Build Coastguard Worker       %bool = OpTypeBool
73*c8dee2aaSAndroid Build Coastguard Worker%_ptr_Uniform_float = OpTypePointer Uniform %float
74*c8dee2aaSAndroid Build Coastguard Worker       %main = OpFunction %void None %25
75*c8dee2aaSAndroid Build Coastguard Worker         %26 = OpLabel
76*c8dee2aaSAndroid Build Coastguard Worker %resultCell = OpVariable %_ptr_Function_v2int Function
77*c8dee2aaSAndroid Build Coastguard Worker   %result_0 = OpVariable %_ptr_Function_float Function
78*c8dee2aaSAndroid Build Coastguard Worker          %i = OpVariable %_ptr_Function_int Function
79*c8dee2aaSAndroid Build Coastguard Worker          %a = OpVariable %_ptr_Function_int Function
80*c8dee2aaSAndroid Build Coastguard Worker          %b = OpVariable %_ptr_Function_int Function
81*c8dee2aaSAndroid Build Coastguard Worker      %index = OpVariable %_ptr_Function_int Function
82*c8dee2aaSAndroid Build Coastguard Worker         %28 = OpAccessChain %_ptr_Uniform_v2int %3 %int_0 %int_0
83*c8dee2aaSAndroid Build Coastguard Worker         %30 = OpLoad %v2int %28
84*c8dee2aaSAndroid Build Coastguard Worker         %31 = OpCompositeExtract %int %30 0
85*c8dee2aaSAndroid Build Coastguard Worker         %33 = OpAccessChain %_ptr_Uniform_v2int %3 %int_0 %int_1
86*c8dee2aaSAndroid Build Coastguard Worker         %34 = OpLoad %v2int %33
87*c8dee2aaSAndroid Build Coastguard Worker         %35 = OpCompositeExtract %int %34 1
88*c8dee2aaSAndroid Build Coastguard Worker         %36 = OpCompositeConstruct %v2int %31 %35
89*c8dee2aaSAndroid Build Coastguard Worker         %38 = OpAccessChain %_ptr_Uniform_v2int %3 %int_0 %int_2
90*c8dee2aaSAndroid Build Coastguard Worker               OpStore %38 %36
91*c8dee2aaSAndroid Build Coastguard Worker         %41 = OpLoad %v3uint %sk_GlobalInvocationID
92*c8dee2aaSAndroid Build Coastguard Worker         %42 = OpCompositeExtract %uint %41 0
93*c8dee2aaSAndroid Build Coastguard Worker         %43 = OpBitcast %int %42
94*c8dee2aaSAndroid Build Coastguard Worker         %44 = OpLoad %v3uint %sk_GlobalInvocationID
95*c8dee2aaSAndroid Build Coastguard Worker         %45 = OpCompositeExtract %uint %44 1
96*c8dee2aaSAndroid Build Coastguard Worker         %46 = OpBitcast %int %45
97*c8dee2aaSAndroid Build Coastguard Worker         %47 = OpCompositeConstruct %v2int %43 %46
98*c8dee2aaSAndroid Build Coastguard Worker               OpStore %resultCell %47
99*c8dee2aaSAndroid Build Coastguard Worker               OpStore %result_0 %float_0
100*c8dee2aaSAndroid Build Coastguard Worker               OpStore %i %int_0
101*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %53
102*c8dee2aaSAndroid Build Coastguard Worker         %53 = OpLabel
103*c8dee2aaSAndroid Build Coastguard Worker               OpLoopMerge %57 %56 None
104*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %54
105*c8dee2aaSAndroid Build Coastguard Worker         %54 = OpLabel
106*c8dee2aaSAndroid Build Coastguard Worker         %58 = OpLoad %int %i
107*c8dee2aaSAndroid Build Coastguard Worker         %59 = OpAccessChain %_ptr_Uniform_v2int %3 %int_0 %int_0
108*c8dee2aaSAndroid Build Coastguard Worker         %60 = OpLoad %v2int %59
109*c8dee2aaSAndroid Build Coastguard Worker         %61 = OpCompositeExtract %int %60 1
110*c8dee2aaSAndroid Build Coastguard Worker         %62 = OpSLessThan %bool %58 %61
111*c8dee2aaSAndroid Build Coastguard Worker               OpBranchConditional %62 %55 %57
112*c8dee2aaSAndroid Build Coastguard Worker         %55 = OpLabel
113*c8dee2aaSAndroid Build Coastguard Worker         %65 = OpLoad %int %i
114*c8dee2aaSAndroid Build Coastguard Worker         %66 = OpLoad %v2int %resultCell
115*c8dee2aaSAndroid Build Coastguard Worker         %67 = OpCompositeExtract %int %66 0
116*c8dee2aaSAndroid Build Coastguard Worker         %68 = OpAccessChain %_ptr_Uniform_v2int %3 %int_0 %int_0
117*c8dee2aaSAndroid Build Coastguard Worker         %69 = OpLoad %v2int %68
118*c8dee2aaSAndroid Build Coastguard Worker         %70 = OpCompositeExtract %int %69 1
119*c8dee2aaSAndroid Build Coastguard Worker         %71 = OpIMul %int %67 %70
120*c8dee2aaSAndroid Build Coastguard Worker         %72 = OpIAdd %int %65 %71
121*c8dee2aaSAndroid Build Coastguard Worker               OpStore %a %72
122*c8dee2aaSAndroid Build Coastguard Worker         %74 = OpLoad %v2int %resultCell
123*c8dee2aaSAndroid Build Coastguard Worker         %75 = OpCompositeExtract %int %74 1
124*c8dee2aaSAndroid Build Coastguard Worker         %76 = OpLoad %int %i
125*c8dee2aaSAndroid Build Coastguard Worker         %77 = OpAccessChain %_ptr_Uniform_v2int %3 %int_0 %int_1
126*c8dee2aaSAndroid Build Coastguard Worker         %78 = OpLoad %v2int %77
127*c8dee2aaSAndroid Build Coastguard Worker         %79 = OpCompositeExtract %int %78 1
128*c8dee2aaSAndroid Build Coastguard Worker         %80 = OpIMul %int %76 %79
129*c8dee2aaSAndroid Build Coastguard Worker         %81 = OpIAdd %int %75 %80
130*c8dee2aaSAndroid Build Coastguard Worker               OpStore %b %81
131*c8dee2aaSAndroid Build Coastguard Worker         %82 = OpLoad %float %result_0
132*c8dee2aaSAndroid Build Coastguard Worker         %83 = OpAccessChain %_ptr_Uniform_float %9 %int_0 %72
133*c8dee2aaSAndroid Build Coastguard Worker         %85 = OpLoad %float %83
134*c8dee2aaSAndroid Build Coastguard Worker         %86 = OpAccessChain %_ptr_Uniform_float %14 %int_0 %81
135*c8dee2aaSAndroid Build Coastguard Worker         %87 = OpLoad %float %86
136*c8dee2aaSAndroid Build Coastguard Worker         %88 = OpFMul %float %85 %87
137*c8dee2aaSAndroid Build Coastguard Worker         %89 = OpFAdd %float %82 %88
138*c8dee2aaSAndroid Build Coastguard Worker               OpStore %result_0 %89
139*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %56
140*c8dee2aaSAndroid Build Coastguard Worker         %56 = OpLabel
141*c8dee2aaSAndroid Build Coastguard Worker         %90 = OpLoad %int %i
142*c8dee2aaSAndroid Build Coastguard Worker         %91 = OpIAdd %int %90 %int_1
143*c8dee2aaSAndroid Build Coastguard Worker               OpStore %i %91
144*c8dee2aaSAndroid Build Coastguard Worker               OpBranch %53
145*c8dee2aaSAndroid Build Coastguard Worker         %57 = OpLabel
146*c8dee2aaSAndroid Build Coastguard Worker         %93 = OpLoad %v2int %resultCell
147*c8dee2aaSAndroid Build Coastguard Worker         %94 = OpCompositeExtract %int %93 1
148*c8dee2aaSAndroid Build Coastguard Worker         %95 = OpLoad %v2int %resultCell
149*c8dee2aaSAndroid Build Coastguard Worker         %96 = OpCompositeExtract %int %95 0
150*c8dee2aaSAndroid Build Coastguard Worker         %97 = OpAccessChain %_ptr_Uniform_v2int %3 %int_0 %int_1
151*c8dee2aaSAndroid Build Coastguard Worker         %98 = OpLoad %v2int %97
152*c8dee2aaSAndroid Build Coastguard Worker         %99 = OpCompositeExtract %int %98 1
153*c8dee2aaSAndroid Build Coastguard Worker        %100 = OpIMul %int %96 %99
154*c8dee2aaSAndroid Build Coastguard Worker        %101 = OpIAdd %int %94 %100
155*c8dee2aaSAndroid Build Coastguard Worker               OpStore %index %101
156*c8dee2aaSAndroid Build Coastguard Worker        %102 = OpLoad %float %result_0
157*c8dee2aaSAndroid Build Coastguard Worker        %103 = OpAccessChain %_ptr_Uniform_float %17 %int_0 %101
158*c8dee2aaSAndroid Build Coastguard Worker               OpStore %103 %102
159*c8dee2aaSAndroid Build Coastguard Worker               OpReturn
160*c8dee2aaSAndroid Build Coastguard Worker               OpFunctionEnd
161