xref: /aosp_15_r20/external/skia/tests/sksl/intrinsics/Step.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 "testInputs"
9               OpMemberName %_UniformBuffer 1 "colorGreen"
10               OpMemberName %_UniformBuffer 2 "colorRed"
11               OpName %_entrypoint_v "_entrypoint_v"
12               OpName %main "main"
13               OpName %expectedA "expectedA"
14               OpName %expectedB "expectedB"
15               OpName %expectedC "expectedC"
16               OpDecorate %sk_FragColor RelaxedPrecision
17               OpDecorate %sk_FragColor Location 0
18               OpDecorate %sk_FragColor Index 0
19               OpMemberDecorate %_UniformBuffer 0 Offset 0
20               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
21               OpMemberDecorate %_UniformBuffer 1 Offset 16
22               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
23               OpMemberDecorate %_UniformBuffer 2 Offset 32
24               OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision
25               OpDecorate %_UniformBuffer Block
26               OpDecorate %7 Binding 0
27               OpDecorate %7 DescriptorSet 0
28               OpDecorate %expectedA RelaxedPrecision
29               OpDecorate %expectedB RelaxedPrecision
30               OpDecorate %expectedC RelaxedPrecision
31               OpDecorate %39 RelaxedPrecision
32               OpDecorate %40 RelaxedPrecision
33               OpDecorate %47 RelaxedPrecision
34               OpDecorate %48 RelaxedPrecision
35               OpDecorate %49 RelaxedPrecision
36               OpDecorate %60 RelaxedPrecision
37               OpDecorate %61 RelaxedPrecision
38               OpDecorate %62 RelaxedPrecision
39               OpDecorate %72 RelaxedPrecision
40               OpDecorate %83 RelaxedPrecision
41               OpDecorate %90 RelaxedPrecision
42               OpDecorate %101 RelaxedPrecision
43               OpDecorate %102 RelaxedPrecision
44               OpDecorate %109 RelaxedPrecision
45               OpDecorate %110 RelaxedPrecision
46               OpDecorate %112 RelaxedPrecision
47               OpDecorate %120 RelaxedPrecision
48               OpDecorate %121 RelaxedPrecision
49               OpDecorate %123 RelaxedPrecision
50               OpDecorate %131 RelaxedPrecision
51               OpDecorate %142 RelaxedPrecision
52               OpDecorate %149 RelaxedPrecision
53               OpDecorate %161 RelaxedPrecision
54               OpDecorate %162 RelaxedPrecision
55               OpDecorate %165 RelaxedPrecision
56               OpDecorate %166 RelaxedPrecision
57               OpDecorate %173 RelaxedPrecision
58               OpDecorate %174 RelaxedPrecision
59               OpDecorate %176 RelaxedPrecision
60               OpDecorate %177 RelaxedPrecision
61               OpDecorate %178 RelaxedPrecision
62               OpDecorate %186 RelaxedPrecision
63               OpDecorate %187 RelaxedPrecision
64               OpDecorate %189 RelaxedPrecision
65               OpDecorate %190 RelaxedPrecision
66               OpDecorate %191 RelaxedPrecision
67               OpDecorate %199 RelaxedPrecision
68               OpDecorate %201 RelaxedPrecision
69               OpDecorate %210 RelaxedPrecision
70               OpDecorate %217 RelaxedPrecision
71               OpDecorate %229 RelaxedPrecision
72               OpDecorate %231 RelaxedPrecision
73               OpDecorate %232 RelaxedPrecision
74      %float = OpTypeFloat 32
75    %v4float = OpTypeVector %float 4
76%_ptr_Output_v4float = OpTypePointer Output %v4float
77%sk_FragColor = OpVariable %_ptr_Output_v4float Output
78%_UniformBuffer = OpTypeStruct %v4float %v4float %v4float
79%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
80          %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
81       %void = OpTypeVoid
82         %12 = OpTypeFunction %void
83    %float_0 = OpConstant %float 0
84    %v2float = OpTypeVector %float 2
85         %16 = OpConstantComposite %v2float %float_0 %float_0
86%_ptr_Function_v2float = OpTypePointer Function %v2float
87         %20 = OpTypeFunction %v4float %_ptr_Function_v2float
88%_ptr_Function_v4float = OpTypePointer Function %v4float
89    %float_1 = OpConstant %float 1
90         %26 = OpConstantComposite %v4float %float_0 %float_0 %float_1 %float_1
91         %28 = OpConstantComposite %v4float %float_1 %float_1 %float_0 %float_0
92         %30 = OpConstantComposite %v4float %float_0 %float_1 %float_1 %float_1
93       %bool = OpTypeBool
94      %false = OpConstantFalse %bool
95  %float_0_5 = OpConstant %float 0.5
96%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
97        %int = OpTypeInt 32 1
98      %int_0 = OpConstant %int 0
99         %45 = OpConstantComposite %v2float %float_0_5 %float_0_5
100     %v2bool = OpTypeVector %bool 2
101    %v3float = OpTypeVector %float 3
102         %58 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5
103     %v3bool = OpTypeVector %bool 3
104         %70 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_0_5
105     %v4bool = OpTypeVector %bool 4
106       %true = OpConstantTrue %bool
107         %89 = OpConstantComposite %v3float %float_0 %float_0 %float_1
108        %111 = OpConstantComposite %v2float %float_0 %float_1
109        %122 = OpConstantComposite %v3float %float_0 %float_1 %float_0
110        %132 = OpConstantComposite %v4float %float_0 %float_1 %float_0 %float_1
111        %141 = OpConstantComposite %v2float %float_1 %float_1
112        %148 = OpConstantComposite %v3float %float_1 %float_1 %float_0
113      %int_2 = OpConstant %int 2
114      %int_1 = OpConstant %int 1
115        %216 = OpConstantComposite %v3float %float_0 %float_1 %float_1
116%_entrypoint_v = OpFunction %void None %12
117         %13 = OpLabel
118         %17 = OpVariable %_ptr_Function_v2float Function
119               OpStore %17 %16
120         %19 = OpFunctionCall %v4float %main %17
121               OpStore %sk_FragColor %19
122               OpReturn
123               OpFunctionEnd
124       %main = OpFunction %v4float None %20
125         %21 = OpFunctionParameter %_ptr_Function_v2float
126         %22 = OpLabel
127  %expectedA = OpVariable %_ptr_Function_v4float Function
128  %expectedB = OpVariable %_ptr_Function_v4float Function
129  %expectedC = OpVariable %_ptr_Function_v4float Function
130        %224 = OpVariable %_ptr_Function_v4float Function
131               OpStore %expectedA %26
132               OpStore %expectedB %28
133               OpStore %expectedC %30
134         %35 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
135         %39 = OpLoad %v4float %35
136         %40 = OpCompositeExtract %float %39 0
137         %33 = OpExtInst %float %1 Step %float_0_5 %40
138         %41 = OpFOrdEqual %bool %33 %float_0
139               OpSelectionMerge %43 None
140               OpBranchConditional %41 %42 %43
141         %42 = OpLabel
142         %46 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
143         %47 = OpLoad %v4float %46
144         %48 = OpVectorShuffle %v2float %47 %47 0 1
145         %44 = OpExtInst %v2float %1 Step %45 %48
146         %49 = OpVectorShuffle %v2float %26 %26 0 1
147         %50 = OpFOrdEqual %v2bool %44 %49
148         %52 = OpAll %bool %50
149               OpBranch %43
150         %43 = OpLabel
151         %53 = OpPhi %bool %false %22 %52 %42
152               OpSelectionMerge %55 None
153               OpBranchConditional %53 %54 %55
154         %54 = OpLabel
155         %59 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
156         %60 = OpLoad %v4float %59
157         %61 = OpVectorShuffle %v3float %60 %60 0 1 2
158         %56 = OpExtInst %v3float %1 Step %58 %61
159         %62 = OpVectorShuffle %v3float %26 %26 0 1 2
160         %63 = OpFOrdEqual %v3bool %56 %62
161         %65 = OpAll %bool %63
162               OpBranch %55
163         %55 = OpLabel
164         %66 = OpPhi %bool %false %43 %65 %54
165               OpSelectionMerge %68 None
166               OpBranchConditional %66 %67 %68
167         %67 = OpLabel
168         %71 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
169         %72 = OpLoad %v4float %71
170         %69 = OpExtInst %v4float %1 Step %70 %72
171         %73 = OpFOrdEqual %v4bool %69 %26
172         %75 = OpAll %bool %73
173               OpBranch %68
174         %68 = OpLabel
175         %76 = OpPhi %bool %false %55 %75 %67
176               OpSelectionMerge %78 None
177               OpBranchConditional %76 %77 %78
178         %77 = OpLabel
179               OpBranch %78
180         %78 = OpLabel
181         %80 = OpPhi %bool %false %68 %true %77
182               OpSelectionMerge %82 None
183               OpBranchConditional %80 %81 %82
184         %81 = OpLabel
185         %83 = OpVectorShuffle %v2float %26 %26 0 1
186         %84 = OpFOrdEqual %v2bool %16 %83
187         %85 = OpAll %bool %84
188               OpBranch %82
189         %82 = OpLabel
190         %86 = OpPhi %bool %false %78 %85 %81
191               OpSelectionMerge %88 None
192               OpBranchConditional %86 %87 %88
193         %87 = OpLabel
194         %90 = OpVectorShuffle %v3float %26 %26 0 1 2
195         %91 = OpFOrdEqual %v3bool %89 %90
196         %92 = OpAll %bool %91
197               OpBranch %88
198         %88 = OpLabel
199         %93 = OpPhi %bool %false %82 %92 %87
200               OpSelectionMerge %95 None
201               OpBranchConditional %93 %94 %95
202         %94 = OpLabel
203               OpBranch %95
204         %95 = OpLabel
205         %96 = OpPhi %bool %false %88 %true %94
206               OpSelectionMerge %98 None
207               OpBranchConditional %96 %97 %98
208         %97 = OpLabel
209        %100 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
210        %101 = OpLoad %v4float %100
211        %102 = OpCompositeExtract %float %101 0
212         %99 = OpExtInst %float %1 Step %102 %float_0
213        %103 = OpFOrdEqual %bool %99 %float_1
214               OpBranch %98
215         %98 = OpLabel
216        %104 = OpPhi %bool %false %95 %103 %97
217               OpSelectionMerge %106 None
218               OpBranchConditional %104 %105 %106
219        %105 = OpLabel
220        %108 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
221        %109 = OpLoad %v4float %108
222        %110 = OpVectorShuffle %v2float %109 %109 0 1
223        %107 = OpExtInst %v2float %1 Step %110 %111
224        %112 = OpVectorShuffle %v2float %28 %28 0 1
225        %113 = OpFOrdEqual %v2bool %107 %112
226        %114 = OpAll %bool %113
227               OpBranch %106
228        %106 = OpLabel
229        %115 = OpPhi %bool %false %98 %114 %105
230               OpSelectionMerge %117 None
231               OpBranchConditional %115 %116 %117
232        %116 = OpLabel
233        %119 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
234        %120 = OpLoad %v4float %119
235        %121 = OpVectorShuffle %v3float %120 %120 0 1 2
236        %118 = OpExtInst %v3float %1 Step %121 %122
237        %123 = OpVectorShuffle %v3float %28 %28 0 1 2
238        %124 = OpFOrdEqual %v3bool %118 %123
239        %125 = OpAll %bool %124
240               OpBranch %117
241        %117 = OpLabel
242        %126 = OpPhi %bool %false %106 %125 %116
243               OpSelectionMerge %128 None
244               OpBranchConditional %126 %127 %128
245        %127 = OpLabel
246        %130 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
247        %131 = OpLoad %v4float %130
248        %129 = OpExtInst %v4float %1 Step %131 %132
249        %133 = OpFOrdEqual %v4bool %129 %28
250        %134 = OpAll %bool %133
251               OpBranch %128
252        %128 = OpLabel
253        %135 = OpPhi %bool %false %117 %134 %127
254               OpSelectionMerge %137 None
255               OpBranchConditional %135 %136 %137
256        %136 = OpLabel
257               OpBranch %137
258        %137 = OpLabel
259        %138 = OpPhi %bool %false %128 %true %136
260               OpSelectionMerge %140 None
261               OpBranchConditional %138 %139 %140
262        %139 = OpLabel
263        %142 = OpVectorShuffle %v2float %28 %28 0 1
264        %143 = OpFOrdEqual %v2bool %141 %142
265        %144 = OpAll %bool %143
266               OpBranch %140
267        %140 = OpLabel
268        %145 = OpPhi %bool %false %137 %144 %139
269               OpSelectionMerge %147 None
270               OpBranchConditional %145 %146 %147
271        %146 = OpLabel
272        %149 = OpVectorShuffle %v3float %28 %28 0 1 2
273        %150 = OpFOrdEqual %v3bool %148 %149
274        %151 = OpAll %bool %150
275               OpBranch %147
276        %147 = OpLabel
277        %152 = OpPhi %bool %false %140 %151 %146
278               OpSelectionMerge %154 None
279               OpBranchConditional %152 %153 %154
280        %153 = OpLabel
281               OpBranch %154
282        %154 = OpLabel
283        %155 = OpPhi %bool %false %147 %true %153
284               OpSelectionMerge %157 None
285               OpBranchConditional %155 %156 %157
286        %156 = OpLabel
287        %159 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2
288        %161 = OpLoad %v4float %159
289        %162 = OpCompositeExtract %float %161 0
290        %163 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
291        %165 = OpLoad %v4float %163
292        %166 = OpCompositeExtract %float %165 0
293        %158 = OpExtInst %float %1 Step %162 %166
294        %167 = OpFOrdEqual %bool %158 %float_0
295               OpBranch %157
296        %157 = OpLabel
297        %168 = OpPhi %bool %false %154 %167 %156
298               OpSelectionMerge %170 None
299               OpBranchConditional %168 %169 %170
300        %169 = OpLabel
301        %172 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2
302        %173 = OpLoad %v4float %172
303        %174 = OpVectorShuffle %v2float %173 %173 0 1
304        %175 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
305        %176 = OpLoad %v4float %175
306        %177 = OpVectorShuffle %v2float %176 %176 0 1
307        %171 = OpExtInst %v2float %1 Step %174 %177
308        %178 = OpVectorShuffle %v2float %30 %30 0 1
309        %179 = OpFOrdEqual %v2bool %171 %178
310        %180 = OpAll %bool %179
311               OpBranch %170
312        %170 = OpLabel
313        %181 = OpPhi %bool %false %157 %180 %169
314               OpSelectionMerge %183 None
315               OpBranchConditional %181 %182 %183
316        %182 = OpLabel
317        %185 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2
318        %186 = OpLoad %v4float %185
319        %187 = OpVectorShuffle %v3float %186 %186 0 1 2
320        %188 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
321        %189 = OpLoad %v4float %188
322        %190 = OpVectorShuffle %v3float %189 %189 0 1 2
323        %184 = OpExtInst %v3float %1 Step %187 %190
324        %191 = OpVectorShuffle %v3float %30 %30 0 1 2
325        %192 = OpFOrdEqual %v3bool %184 %191
326        %193 = OpAll %bool %192
327               OpBranch %183
328        %183 = OpLabel
329        %194 = OpPhi %bool %false %170 %193 %182
330               OpSelectionMerge %196 None
331               OpBranchConditional %194 %195 %196
332        %195 = OpLabel
333        %198 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2
334        %199 = OpLoad %v4float %198
335        %200 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
336        %201 = OpLoad %v4float %200
337        %197 = OpExtInst %v4float %1 Step %199 %201
338        %202 = OpFOrdEqual %v4bool %197 %30
339        %203 = OpAll %bool %202
340               OpBranch %196
341        %196 = OpLabel
342        %204 = OpPhi %bool %false %183 %203 %195
343               OpSelectionMerge %206 None
344               OpBranchConditional %204 %205 %206
345        %205 = OpLabel
346               OpBranch %206
347        %206 = OpLabel
348        %207 = OpPhi %bool %false %196 %true %205
349               OpSelectionMerge %209 None
350               OpBranchConditional %207 %208 %209
351        %208 = OpLabel
352        %210 = OpVectorShuffle %v2float %30 %30 0 1
353        %211 = OpFOrdEqual %v2bool %111 %210
354        %212 = OpAll %bool %211
355               OpBranch %209
356        %209 = OpLabel
357        %213 = OpPhi %bool %false %206 %212 %208
358               OpSelectionMerge %215 None
359               OpBranchConditional %213 %214 %215
360        %214 = OpLabel
361        %217 = OpVectorShuffle %v3float %30 %30 0 1 2
362        %218 = OpFOrdEqual %v3bool %216 %217
363        %219 = OpAll %bool %218
364               OpBranch %215
365        %215 = OpLabel
366        %220 = OpPhi %bool %false %209 %219 %214
367               OpSelectionMerge %222 None
368               OpBranchConditional %220 %221 %222
369        %221 = OpLabel
370               OpBranch %222
371        %222 = OpLabel
372        %223 = OpPhi %bool %false %215 %true %221
373               OpSelectionMerge %227 None
374               OpBranchConditional %223 %225 %226
375        %225 = OpLabel
376        %228 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
377        %229 = OpLoad %v4float %228
378               OpStore %224 %229
379               OpBranch %227
380        %226 = OpLabel
381        %230 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2
382        %231 = OpLoad %v4float %230
383               OpStore %224 %231
384               OpBranch %227
385        %227 = OpLabel
386        %232 = OpLoad %v4float %224
387               OpReturnValue %232
388               OpFunctionEnd
389