xref: /aosp_15_r20/external/skia/tests/sksl/shared/TernarySideEffects.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 %x "x"
13               OpName %y "y"
14               OpName %b "b"
15               OpName %c "c"
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               OpDecorate %_UniformBuffer Block
24               OpDecorate %7 Binding 0
25               OpDecorate %7 DescriptorSet 0
26               OpDecorate %x RelaxedPrecision
27               OpDecorate %y RelaxedPrecision
28               OpDecorate %33 RelaxedPrecision
29               OpDecorate %34 RelaxedPrecision
30               OpDecorate %35 RelaxedPrecision
31               OpDecorate %36 RelaxedPrecision
32               OpDecorate %37 RelaxedPrecision
33               OpDecorate %43 RelaxedPrecision
34               OpDecorate %45 RelaxedPrecision
35               OpDecorate %46 RelaxedPrecision
36               OpDecorate %47 RelaxedPrecision
37               OpDecorate %48 RelaxedPrecision
38               OpDecorate %49 RelaxedPrecision
39               OpDecorate %50 RelaxedPrecision
40               OpDecorate %56 RelaxedPrecision
41               OpDecorate %58 RelaxedPrecision
42               OpDecorate %59 RelaxedPrecision
43               OpDecorate %60 RelaxedPrecision
44               OpDecorate %61 RelaxedPrecision
45               OpDecorate %62 RelaxedPrecision
46               OpDecorate %63 RelaxedPrecision
47               OpDecorate %69 RelaxedPrecision
48               OpDecorate %71 RelaxedPrecision
49               OpDecorate %72 RelaxedPrecision
50               OpDecorate %73 RelaxedPrecision
51               OpDecorate %74 RelaxedPrecision
52               OpDecorate %75 RelaxedPrecision
53               OpDecorate %76 RelaxedPrecision
54               OpDecorate %82 RelaxedPrecision
55               OpDecorate %83 RelaxedPrecision
56               OpDecorate %84 RelaxedPrecision
57               OpDecorate %85 RelaxedPrecision
58               OpDecorate %86 RelaxedPrecision
59               OpDecorate %87 RelaxedPrecision
60               OpDecorate %93 RelaxedPrecision
61               OpDecorate %95 RelaxedPrecision
62               OpDecorate %96 RelaxedPrecision
63               OpDecorate %97 RelaxedPrecision
64               OpDecorate %98 RelaxedPrecision
65               OpDecorate %99 RelaxedPrecision
66               OpDecorate %105 RelaxedPrecision
67               OpDecorate %106 RelaxedPrecision
68               OpDecorate %107 RelaxedPrecision
69               OpDecorate %108 RelaxedPrecision
70               OpDecorate %109 RelaxedPrecision
71               OpDecorate %110 RelaxedPrecision
72               OpDecorate %116 RelaxedPrecision
73               OpDecorate %117 RelaxedPrecision
74               OpDecorate %119 RelaxedPrecision
75               OpDecorate %120 RelaxedPrecision
76               OpDecorate %139 RelaxedPrecision
77               OpDecorate %140 RelaxedPrecision
78               OpDecorate %145 RelaxedPrecision
79               OpDecorate %155 RelaxedPrecision
80               OpDecorate %157 RelaxedPrecision
81               OpDecorate %158 RelaxedPrecision
82               OpDecorate %159 RelaxedPrecision
83      %float = OpTypeFloat 32
84    %v4float = OpTypeVector %float 4
85%_ptr_Output_v4float = OpTypePointer Output %v4float
86%sk_FragColor = OpVariable %_ptr_Output_v4float Output
87%_UniformBuffer = OpTypeStruct %v4float %v4float
88%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
89          %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
90       %void = OpTypeVoid
91         %12 = OpTypeFunction %void
92    %float_0 = OpConstant %float 0
93    %v2float = OpTypeVector %float 2
94         %16 = OpConstantComposite %v2float %float_0 %float_0
95%_ptr_Function_v2float = OpTypePointer Function %v2float
96         %20 = OpTypeFunction %v4float %_ptr_Function_v2float
97%_ptr_Function_float = OpTypePointer Function %float
98    %float_1 = OpConstant %float 1
99       %bool = OpTypeBool
100       %true = OpConstantTrue %bool
101    %float_3 = OpConstant %float 3
102    %float_5 = OpConstant %float 5
103    %float_9 = OpConstant %float 9
104    %float_2 = OpConstant %float 2
105    %float_4 = OpConstant %float 4
106%_ptr_Function_bool = OpTypePointer Function %bool
107      %false = OpConstantFalse %bool
108%_ptr_Function_v4float = OpTypePointer Function %v4float
109%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
110        %int = OpTypeInt 32 1
111      %int_1 = OpConstant %int 1
112    %float_8 = OpConstant %float 8
113   %float_17 = OpConstant %float 17
114      %int_0 = OpConstant %int 0
115%_entrypoint_v = OpFunction %void None %12
116         %13 = OpLabel
117         %17 = OpVariable %_ptr_Function_v2float Function
118               OpStore %17 %16
119         %19 = OpFunctionCall %v4float %main %17
120               OpStore %sk_FragColor %19
121               OpReturn
122               OpFunctionEnd
123       %main = OpFunction %v4float None %20
124         %21 = OpFunctionParameter %_ptr_Function_v2float
125         %22 = OpLabel
126          %x = OpVariable %_ptr_Function_float Function
127          %y = OpVariable %_ptr_Function_float Function
128         %29 = OpVariable %_ptr_Function_float Function
129         %39 = OpVariable %_ptr_Function_float Function
130         %52 = OpVariable %_ptr_Function_float Function
131         %65 = OpVariable %_ptr_Function_float Function
132         %78 = OpVariable %_ptr_Function_float Function
133         %89 = OpVariable %_ptr_Function_float Function
134        %101 = OpVariable %_ptr_Function_float Function
135        %112 = OpVariable %_ptr_Function_float Function
136          %b = OpVariable %_ptr_Function_bool Function
137          %c = OpVariable %_ptr_Function_bool Function
138        %125 = OpVariable %_ptr_Function_bool Function
139        %130 = OpVariable %_ptr_Function_v4float Function
140        %149 = OpVariable %_ptr_Function_v4float Function
141               OpStore %x %float_1
142               OpStore %y %float_1
143               OpSelectionMerge %32 None
144               OpBranchConditional %true %30 %31
145         %30 = OpLabel
146         %33 = OpFAdd %float %float_1 %float_1
147               OpStore %x %33
148               OpStore %29 %33
149               OpBranch %32
150         %31 = OpLabel
151         %34 = OpFAdd %float %float_1 %float_1
152               OpStore %y %34
153               OpStore %29 %34
154               OpBranch %32
155         %32 = OpLabel
156         %35 = OpLoad %float %29
157         %36 = OpLoad %float %x
158         %37 = OpLoad %float %y
159         %38 = OpFOrdEqual %bool %36 %37
160               OpSelectionMerge %42 None
161               OpBranchConditional %38 %40 %41
162         %40 = OpLabel
163         %43 = OpLoad %float %x
164         %45 = OpFAdd %float %43 %float_3
165               OpStore %x %45
166               OpStore %39 %45
167               OpBranch %42
168         %41 = OpLabel
169         %46 = OpLoad %float %y
170         %47 = OpFAdd %float %46 %float_3
171               OpStore %y %47
172               OpStore %39 %47
173               OpBranch %42
174         %42 = OpLabel
175         %48 = OpLoad %float %39
176         %49 = OpLoad %float %x
177         %50 = OpLoad %float %y
178         %51 = OpFOrdLessThan %bool %49 %50
179               OpSelectionMerge %55 None
180               OpBranchConditional %51 %53 %54
181         %53 = OpLabel
182         %56 = OpLoad %float %x
183         %58 = OpFAdd %float %56 %float_5
184               OpStore %x %58
185               OpStore %52 %58
186               OpBranch %55
187         %54 = OpLabel
188         %59 = OpLoad %float %y
189         %60 = OpFAdd %float %59 %float_5
190               OpStore %y %60
191               OpStore %52 %60
192               OpBranch %55
193         %55 = OpLabel
194         %61 = OpLoad %float %52
195         %62 = OpLoad %float %y
196         %63 = OpLoad %float %x
197         %64 = OpFOrdGreaterThanEqual %bool %62 %63
198               OpSelectionMerge %68 None
199               OpBranchConditional %64 %66 %67
200         %66 = OpLabel
201         %69 = OpLoad %float %x
202         %71 = OpFAdd %float %69 %float_9
203               OpStore %x %71
204               OpStore %65 %71
205               OpBranch %68
206         %67 = OpLabel
207         %72 = OpLoad %float %y
208         %73 = OpFAdd %float %72 %float_9
209               OpStore %y %73
210               OpStore %65 %73
211               OpBranch %68
212         %68 = OpLabel
213         %74 = OpLoad %float %65
214         %75 = OpLoad %float %x
215         %76 = OpLoad %float %y
216         %77 = OpFUnordNotEqual %bool %75 %76
217               OpSelectionMerge %81 None
218               OpBranchConditional %77 %79 %80
219         %79 = OpLabel
220         %82 = OpLoad %float %x
221         %83 = OpFAdd %float %82 %float_1
222               OpStore %x %83
223               OpStore %78 %83
224               OpBranch %81
225         %80 = OpLabel
226         %84 = OpLoad %float %y
227               OpStore %78 %84
228               OpBranch %81
229         %81 = OpLabel
230         %85 = OpLoad %float %78
231         %86 = OpLoad %float %x
232         %87 = OpLoad %float %y
233         %88 = OpFOrdEqual %bool %86 %87
234               OpSelectionMerge %92 None
235               OpBranchConditional %88 %90 %91
236         %90 = OpLabel
237         %93 = OpLoad %float %x
238         %95 = OpFAdd %float %93 %float_2
239               OpStore %x %95
240               OpStore %89 %95
241               OpBranch %92
242         %91 = OpLabel
243         %96 = OpLoad %float %y
244               OpStore %89 %96
245               OpBranch %92
246         %92 = OpLabel
247         %97 = OpLoad %float %89
248         %98 = OpLoad %float %x
249         %99 = OpLoad %float %y
250        %100 = OpFUnordNotEqual %bool %98 %99
251               OpSelectionMerge %104 None
252               OpBranchConditional %100 %102 %103
253        %102 = OpLabel
254        %105 = OpLoad %float %x
255               OpStore %101 %105
256               OpBranch %104
257        %103 = OpLabel
258        %106 = OpLoad %float %y
259        %107 = OpFAdd %float %106 %float_3
260               OpStore %y %107
261               OpStore %101 %107
262               OpBranch %104
263        %104 = OpLabel
264        %108 = OpLoad %float %101
265        %109 = OpLoad %float %x
266        %110 = OpLoad %float %y
267        %111 = OpFOrdEqual %bool %109 %110
268               OpSelectionMerge %115 None
269               OpBranchConditional %111 %113 %114
270        %113 = OpLabel
271        %116 = OpLoad %float %x
272               OpStore %112 %116
273               OpBranch %115
274        %114 = OpLabel
275        %117 = OpLoad %float %y
276        %119 = OpFAdd %float %117 %float_4
277               OpStore %y %119
278               OpStore %112 %119
279               OpBranch %115
280        %115 = OpLabel
281        %120 = OpLoad %float %112
282               OpStore %b %true
283               OpStore %b %false
284               OpSelectionMerge %128 None
285               OpBranchConditional %false %126 %127
286        %126 = OpLabel
287               OpStore %125 %false
288               OpBranch %128
289        %127 = OpLabel
290               OpStore %125 %false
291               OpBranch %128
292        %128 = OpLabel
293        %129 = OpLoad %bool %125
294               OpStore %c %129
295               OpSelectionMerge %134 None
296               OpBranchConditional %129 %132 %133
297        %132 = OpLabel
298        %135 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
299        %139 = OpLoad %v4float %135
300               OpStore %130 %139
301               OpBranch %134
302        %133 = OpLabel
303        %140 = OpLoad %float %x
304        %142 = OpFOrdEqual %bool %140 %float_8
305               OpSelectionMerge %144 None
306               OpBranchConditional %142 %143 %144
307        %143 = OpLabel
308        %145 = OpLoad %float %y
309        %147 = OpFOrdEqual %bool %145 %float_17
310               OpBranch %144
311        %144 = OpLabel
312        %148 = OpPhi %bool %false %133 %147 %143
313               OpSelectionMerge %152 None
314               OpBranchConditional %148 %150 %151
315        %150 = OpLabel
316        %153 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
317        %155 = OpLoad %v4float %153
318               OpStore %149 %155
319               OpBranch %152
320        %151 = OpLabel
321        %156 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
322        %157 = OpLoad %v4float %156
323               OpStore %149 %157
324               OpBranch %152
325        %152 = OpLabel
326        %158 = OpLoad %v4float %149
327               OpStore %130 %158
328               OpBranch %134
329        %134 = OpLabel
330        %159 = OpLoad %v4float %130
331               OpReturnValue %159
332               OpFunctionEnd
333