xref: /aosp_15_r20/external/skia/tests/sksl/shared/StructIndexLookup.asm.frag (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1               OpCapability Shader
2          %1 = OpExtInstImport "GLSL.std.450"
3               OpMemoryModel Logical GLSL450
4               OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor
5               OpExecutionMode %_entrypoint_v OriginUpperLeft
6               OpName %sk_FragColor "sk_FragColor"
7               OpName %_UniformBuffer "_UniformBuffer"
8               OpMemberName %_UniformBuffer 0 "colorGreen"
9               OpMemberName %_UniformBuffer 1 "colorRed"
10               OpName %_entrypoint_v "_entrypoint_v"
11               OpName %main "main"
12               OpName %InnerLUT "InnerLUT"
13               OpMemberName %InnerLUT 0 "values"
14               OpName %OuterLUT "OuterLUT"
15               OpMemberName %OuterLUT 0 "inner"
16               OpName %Root "Root"
17               OpMemberName %Root 0 "outer"
18               OpName %data "data"
19               OpName %expected "expected"
20               OpName %i "i"
21               OpName %j "j"
22               OpName %k "k"
23               OpDecorate %sk_FragColor RelaxedPrecision
24               OpDecorate %sk_FragColor Location 0
25               OpDecorate %sk_FragColor Index 0
26               OpMemberDecorate %_UniformBuffer 0 Offset 0
27               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
28               OpMemberDecorate %_UniformBuffer 1 Offset 16
29               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
30               OpDecorate %_UniformBuffer Block
31               OpDecorate %7 Binding 0
32               OpDecorate %7 DescriptorSet 0
33               OpMemberDecorate %InnerLUT 0 Offset 0
34               OpDecorate %_arr_InnerLUT_int_3 ArrayStride 16
35               OpMemberDecorate %OuterLUT 0 Offset 0
36               OpMemberDecorate %OuterLUT 0 RelaxedPrecision
37               OpDecorate %_arr_OuterLUT_int_3 ArrayStride 48
38               OpMemberDecorate %Root 0 Offset 0
39               OpMemberDecorate %Root 0 RelaxedPrecision
40               OpDecorate %115 RelaxedPrecision
41               OpDecorate %137 RelaxedPrecision
42               OpDecorate %145 RelaxedPrecision
43      %float = OpTypeFloat 32
44    %v4float = OpTypeVector %float 4
45%_ptr_Output_v4float = OpTypePointer Output %v4float
46%sk_FragColor = OpVariable %_ptr_Output_v4float Output
47%_UniformBuffer = OpTypeStruct %v4float %v4float
48%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
49          %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
50       %void = OpTypeVoid
51         %12 = OpTypeFunction %void
52    %float_0 = OpConstant %float 0
53    %v2float = OpTypeVector %float 2
54         %16 = OpConstantComposite %v2float %float_0 %float_0
55%_ptr_Function_v2float = OpTypePointer Function %v2float
56         %20 = OpTypeFunction %v4float %_ptr_Function_v2float
57    %v3float = OpTypeVector %float 3
58   %InnerLUT = OpTypeStruct %v3float
59        %int = OpTypeInt 32 1
60      %int_3 = OpConstant %int 3
61%_arr_InnerLUT_int_3 = OpTypeArray %InnerLUT %int_3
62   %OuterLUT = OpTypeStruct %_arr_InnerLUT_int_3
63%_arr_OuterLUT_int_3 = OpTypeArray %OuterLUT %int_3
64       %Root = OpTypeStruct %_arr_OuterLUT_int_3
65%_ptr_Function_Root = OpTypePointer Function %Root
66    %float_1 = OpConstant %float 1
67   %float_10 = OpConstant %float 10
68  %float_100 = OpConstant %float 100
69         %36 = OpConstantComposite %v3float %float_1 %float_10 %float_100
70      %int_0 = OpConstant %int 0
71%_ptr_Function_v3float = OpTypePointer Function %v3float
72    %float_2 = OpConstant %float 2
73   %float_20 = OpConstant %float 20
74  %float_200 = OpConstant %float 200
75         %43 = OpConstantComposite %v3float %float_2 %float_20 %float_200
76      %int_1 = OpConstant %int 1
77    %float_3 = OpConstant %float 3
78   %float_30 = OpConstant %float 30
79  %float_300 = OpConstant %float 300
80         %49 = OpConstantComposite %v3float %float_3 %float_30 %float_300
81      %int_2 = OpConstant %int 2
82    %float_4 = OpConstant %float 4
83   %float_40 = OpConstant %float 40
84  %float_400 = OpConstant %float 400
85         %55 = OpConstantComposite %v3float %float_4 %float_40 %float_400
86    %float_5 = OpConstant %float 5
87   %float_50 = OpConstant %float 50
88  %float_500 = OpConstant %float 500
89         %60 = OpConstantComposite %v3float %float_5 %float_50 %float_500
90    %float_6 = OpConstant %float 6
91   %float_60 = OpConstant %float 60
92  %float_600 = OpConstant %float 600
93         %65 = OpConstantComposite %v3float %float_6 %float_60 %float_600
94    %float_7 = OpConstant %float 7
95   %float_70 = OpConstant %float 70
96  %float_700 = OpConstant %float 700
97         %70 = OpConstantComposite %v3float %float_7 %float_70 %float_700
98    %float_8 = OpConstant %float 8
99   %float_80 = OpConstant %float 80
100  %float_800 = OpConstant %float 800
101         %75 = OpConstantComposite %v3float %float_8 %float_80 %float_800
102    %float_9 = OpConstant %float 9
103   %float_90 = OpConstant %float 90
104  %float_900 = OpConstant %float 900
105         %80 = OpConstantComposite %v3float %float_9 %float_90 %float_900
106         %83 = OpConstantComposite %v3float %float_0 %float_0 %float_0
107%_ptr_Function_int = OpTypePointer Function %int
108       %bool = OpTypeBool
109     %v3bool = OpTypeVector %bool 3
110%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
111%_entrypoint_v = OpFunction %void None %12
112         %13 = OpLabel
113         %17 = OpVariable %_ptr_Function_v2float Function
114               OpStore %17 %16
115         %19 = OpFunctionCall %v4float %main %17
116               OpStore %sk_FragColor %19
117               OpReturn
118               OpFunctionEnd
119       %main = OpFunction %v4float None %20
120         %21 = OpFunctionParameter %_ptr_Function_v2float
121         %22 = OpLabel
122       %data = OpVariable %_ptr_Function_Root Function
123   %expected = OpVariable %_ptr_Function_v3float Function
124          %i = OpVariable %_ptr_Function_int Function
125          %j = OpVariable %_ptr_Function_int Function
126          %k = OpVariable %_ptr_Function_int Function
127         %38 = OpAccessChain %_ptr_Function_v3float %data %int_0 %int_0 %int_0 %int_0 %int_0
128               OpStore %38 %36
129         %45 = OpAccessChain %_ptr_Function_v3float %data %int_0 %int_0 %int_0 %int_1 %int_0
130               OpStore %45 %43
131         %51 = OpAccessChain %_ptr_Function_v3float %data %int_0 %int_0 %int_0 %int_2 %int_0
132               OpStore %51 %49
133         %56 = OpAccessChain %_ptr_Function_v3float %data %int_0 %int_1 %int_0 %int_0 %int_0
134               OpStore %56 %55
135         %61 = OpAccessChain %_ptr_Function_v3float %data %int_0 %int_1 %int_0 %int_1 %int_0
136               OpStore %61 %60
137         %66 = OpAccessChain %_ptr_Function_v3float %data %int_0 %int_1 %int_0 %int_2 %int_0
138               OpStore %66 %65
139         %71 = OpAccessChain %_ptr_Function_v3float %data %int_0 %int_2 %int_0 %int_0 %int_0
140               OpStore %71 %70
141         %76 = OpAccessChain %_ptr_Function_v3float %data %int_0 %int_2 %int_0 %int_1 %int_0
142               OpStore %76 %75
143         %81 = OpAccessChain %_ptr_Function_v3float %data %int_0 %int_2 %int_0 %int_2 %int_0
144               OpStore %81 %80
145               OpStore %expected %83
146               OpStore %i %int_0
147               OpBranch %86
148         %86 = OpLabel
149               OpLoopMerge %90 %89 None
150               OpBranch %87
151         %87 = OpLabel
152         %91 = OpLoad %int %i
153         %92 = OpSLessThan %bool %91 %int_3
154               OpBranchConditional %92 %88 %90
155         %88 = OpLabel
156               OpStore %j %int_0
157               OpBranch %95
158         %95 = OpLabel
159               OpLoopMerge %99 %98 None
160               OpBranch %96
161         %96 = OpLabel
162        %100 = OpLoad %int %j
163        %101 = OpSLessThan %bool %100 %int_3
164               OpBranchConditional %101 %97 %99
165         %97 = OpLabel
166        %102 = OpLoad %v3float %expected
167        %103 = OpFAdd %v3float %102 %36
168               OpStore %expected %103
169        %104 = OpLoad %int %i
170        %105 = OpLoad %int %j
171        %106 = OpAccessChain %_ptr_Function_v3float %data %int_0 %104 %int_0 %105 %int_0
172        %107 = OpLoad %v3float %106
173        %108 = OpFUnordNotEqual %v3bool %107 %103
174        %110 = OpAny %bool %108
175               OpSelectionMerge %112 None
176               OpBranchConditional %110 %111 %112
177        %111 = OpLabel
178        %113 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
179        %115 = OpLoad %v4float %113
180               OpReturnValue %115
181        %112 = OpLabel
182               OpStore %k %int_0
183               OpBranch %117
184        %117 = OpLabel
185               OpLoopMerge %121 %120 None
186               OpBranch %118
187        %118 = OpLabel
188        %122 = OpLoad %int %k
189        %123 = OpSLessThan %bool %122 %int_3
190               OpBranchConditional %123 %119 %121
191        %119 = OpLabel
192        %124 = OpLoad %int %i
193        %125 = OpLoad %int %j
194        %126 = OpAccessChain %_ptr_Function_v3float %data %int_0 %124 %int_0 %125 %int_0
195        %127 = OpLoad %v3float %126
196        %128 = OpLoad %int %k
197        %129 = OpVectorExtractDynamic %float %127 %128
198        %130 = OpLoad %v3float %expected
199        %131 = OpLoad %int %k
200        %132 = OpVectorExtractDynamic %float %130 %131
201        %133 = OpFUnordNotEqual %bool %129 %132
202               OpSelectionMerge %135 None
203               OpBranchConditional %133 %134 %135
204        %134 = OpLabel
205        %136 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
206        %137 = OpLoad %v4float %136
207               OpReturnValue %137
208        %135 = OpLabel
209               OpBranch %120
210        %120 = OpLabel
211        %138 = OpLoad %int %k
212        %139 = OpIAdd %int %138 %int_1
213               OpStore %k %139
214               OpBranch %117
215        %121 = OpLabel
216               OpBranch %98
217         %98 = OpLabel
218        %140 = OpLoad %int %j
219        %141 = OpIAdd %int %140 %int_1
220               OpStore %j %141
221               OpBranch %95
222         %99 = OpLabel
223               OpBranch %89
224         %89 = OpLabel
225        %142 = OpLoad %int %i
226        %143 = OpIAdd %int %142 %int_1
227               OpStore %i %143
228               OpBranch %86
229         %90 = OpLabel
230        %144 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
231        %145 = OpLoad %v4float %144
232               OpReturnValue %145
233               OpFunctionEnd
234