xref: /aosp_15_r20/external/skia/tests/sksl/shared/VectorScalarMath.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 "colorRed"
9               OpMemberName %_UniformBuffer 1 "colorGreen"
10               OpMemberName %_UniformBuffer 2 "unknownInput"
11               OpName %_entrypoint_v "_entrypoint_v"
12               OpName %test_int_b "test_int_b"
13               OpName %ok "ok"
14               OpName %inputRed "inputRed"
15               OpName %inputGreen "inputGreen"
16               OpName %x "x"
17               OpName %main "main"
18               OpName %_0_ok "_0_ok"
19               OpName %_1_inputRed "_1_inputRed"
20               OpName %_2_inputGreen "_2_inputGreen"
21               OpName %_3_x "_3_x"
22               OpDecorate %sk_FragColor RelaxedPrecision
23               OpDecorate %sk_FragColor Location 0
24               OpDecorate %sk_FragColor Index 0
25               OpMemberDecorate %_UniformBuffer 0 Offset 0
26               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
27               OpMemberDecorate %_UniformBuffer 1 Offset 16
28               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
29               OpMemberDecorate %_UniformBuffer 2 Offset 32
30               OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision
31               OpDecorate %_UniformBuffer Block
32               OpDecorate %8 Binding 0
33               OpDecorate %8 DescriptorSet 0
34               OpDecorate %34 RelaxedPrecision
35               OpDecorate %35 RelaxedPrecision
36               OpDecorate %37 RelaxedPrecision
37               OpDecorate %39 RelaxedPrecision
38               OpDecorate %41 RelaxedPrecision
39               OpDecorate %47 RelaxedPrecision
40               OpDecorate %48 RelaxedPrecision
41               OpDecorate %50 RelaxedPrecision
42               OpDecorate %52 RelaxedPrecision
43               OpDecorate %54 RelaxedPrecision
44               OpDecorate %_1_inputRed RelaxedPrecision
45               OpDecorate %211 RelaxedPrecision
46               OpDecorate %_2_inputGreen RelaxedPrecision
47               OpDecorate %214 RelaxedPrecision
48               OpDecorate %_3_x RelaxedPrecision
49               OpDecorate %218 RelaxedPrecision
50               OpDecorate %226 RelaxedPrecision
51               OpDecorate %227 RelaxedPrecision
52               OpDecorate %236 RelaxedPrecision
53               OpDecorate %237 RelaxedPrecision
54               OpDecorate %238 RelaxedPrecision
55               OpDecorate %246 RelaxedPrecision
56               OpDecorate %249 RelaxedPrecision
57               OpDecorate %250 RelaxedPrecision
58               OpDecorate %251 RelaxedPrecision
59               OpDecorate %258 RelaxedPrecision
60               OpDecorate %259 RelaxedPrecision
61               OpDecorate %260 RelaxedPrecision
62               OpDecorate %261 RelaxedPrecision
63               OpDecorate %271 RelaxedPrecision
64               OpDecorate %272 RelaxedPrecision
65               OpDecorate %279 RelaxedPrecision
66               OpDecorate %286 RelaxedPrecision
67               OpDecorate %288 RelaxedPrecision
68               OpDecorate %295 RelaxedPrecision
69               OpDecorate %296 RelaxedPrecision
70               OpDecorate %297 RelaxedPrecision
71               OpDecorate %305 RelaxedPrecision
72               OpDecorate %306 RelaxedPrecision
73               OpDecorate %307 RelaxedPrecision
74               OpDecorate %308 RelaxedPrecision
75               OpDecorate %316 RelaxedPrecision
76               OpDecorate %318 RelaxedPrecision
77               OpDecorate %319 RelaxedPrecision
78               OpDecorate %320 RelaxedPrecision
79               OpDecorate %329 RelaxedPrecision
80               OpDecorate %330 RelaxedPrecision
81               OpDecorate %337 RelaxedPrecision
82               OpDecorate %338 RelaxedPrecision
83               OpDecorate %340 RelaxedPrecision
84               OpDecorate %342 RelaxedPrecision
85               OpDecorate %348 RelaxedPrecision
86               OpDecorate %349 RelaxedPrecision
87               OpDecorate %350 RelaxedPrecision
88               OpDecorate %351 RelaxedPrecision
89               OpDecorate %366 RelaxedPrecision
90               OpDecorate %368 RelaxedPrecision
91               OpDecorate %369 RelaxedPrecision
92      %float = OpTypeFloat 32
93    %v4float = OpTypeVector %float 4
94%_ptr_Output_v4float = OpTypePointer Output %v4float
95%sk_FragColor = OpVariable %_ptr_Output_v4float Output
96%_UniformBuffer = OpTypeStruct %v4float %v4float %float
97%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
98          %8 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
99       %void = OpTypeVoid
100         %13 = OpTypeFunction %void
101    %float_0 = OpConstant %float 0
102    %v2float = OpTypeVector %float 2
103         %17 = OpConstantComposite %v2float %float_0 %float_0
104%_ptr_Function_v2float = OpTypePointer Function %v2float
105       %bool = OpTypeBool
106         %22 = OpTypeFunction %bool
107%_ptr_Function_bool = OpTypePointer Function %bool
108       %true = OpConstantTrue %bool
109        %int = OpTypeInt 32 1
110      %v4int = OpTypeVector %int 4
111%_ptr_Function_v4int = OpTypePointer Function %v4int
112%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
113      %int_0 = OpConstant %int 0
114      %int_1 = OpConstant %int 1
115      %int_2 = OpConstant %int 2
116         %59 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2
117      %false = OpConstantFalse %bool
118      %int_3 = OpConstant %int 3
119         %65 = OpConstantComposite %v4int %int_3 %int_2 %int_2 %int_3
120     %v4bool = OpTypeVector %bool 4
121     %int_n1 = OpConstant %int -1
122     %int_n2 = OpConstant %int -2
123         %76 = OpConstantComposite %v4int %int_n1 %int_n1 %int_n2 %int_n2
124         %85 = OpConstantComposite %v4int %int_2 %int_1 %int_1 %int_2
125      %v3int = OpTypeVector %int 3
126      %int_9 = OpConstant %int 9
127         %92 = OpConstantComposite %v3int %int_9 %int_9 %int_9
128         %98 = OpConstantComposite %v4int %int_9 %int_9 %int_9 %int_2
129      %v2int = OpTypeVector %int 2
130      %int_4 = OpConstant %int 4
131        %105 = OpConstantComposite %v2int %int_4 %int_4
132        %111 = OpConstantComposite %v4int %int_2 %int_0 %int_9 %int_2
133      %int_5 = OpConstant %int 5
134        %116 = OpConstantComposite %v4int %int_5 %int_5 %int_5 %int_5
135        %121 = OpConstantComposite %v4int %int_0 %int_5 %int_5 %int_0
136     %int_10 = OpConstant %int 10
137        %133 = OpConstantComposite %v4int %int_10 %int_10 %int_10 %int_10
138        %137 = OpConstantComposite %v4int %int_9 %int_9 %int_10 %int_10
139        %146 = OpConstantComposite %v4int %int_1 %int_2 %int_1 %int_2
140      %int_8 = OpConstant %int 8
141        %152 = OpConstantComposite %v3int %int_8 %int_8 %int_8
142        %158 = OpConstantComposite %v4int %int_8 %int_8 %int_8 %int_2
143     %int_36 = OpConstant %int 36
144        %164 = OpConstantComposite %v2int %int_36 %int_36
145     %int_18 = OpConstant %int 18
146        %171 = OpConstantComposite %v4int %int_4 %int_18 %int_8 %int_2
147     %int_37 = OpConstant %int 37
148        %176 = OpConstantComposite %v4int %int_37 %int_37 %int_37 %int_37
149        %181 = OpConstantComposite %v4int %int_2 %int_9 %int_18 %int_4
150        %187 = OpConstantComposite %v4int %int_4 %int_4 %int_4 %int_4
151        %204 = OpTypeFunction %v4float %_ptr_Function_v2float
152%_ptr_Function_v4float = OpTypePointer Function %v4float
153    %float_2 = OpConstant %float 2
154        %217 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
155    %float_3 = OpConstant %float 3
156        %222 = OpConstantComposite %v4float %float_3 %float_2 %float_2 %float_3
157   %float_n1 = OpConstant %float -1
158   %float_n2 = OpConstant %float -2
159        %232 = OpConstantComposite %v4float %float_n1 %float_n1 %float_n2 %float_n2
160    %float_1 = OpConstant %float 1
161        %242 = OpConstantComposite %v4float %float_2 %float_1 %float_1 %float_2
162    %v3float = OpTypeVector %float 3
163    %float_9 = OpConstant %float 9
164        %254 = OpConstantComposite %v4float %float_9 %float_9 %float_9 %float_2
165   %float_18 = OpConstant %float 18
166    %float_4 = OpConstant %float 4
167        %266 = OpConstantComposite %v4float %float_18 %float_4 %float_9 %float_2
168    %float_5 = OpConstant %float 5
169        %275 = OpConstantComposite %v4float %float_0 %float_5 %float_5 %float_0
170   %float_10 = OpConstant %float 10
171        %287 = OpConstantComposite %v4float %float_10 %float_10 %float_10 %float_10
172        %291 = OpConstantComposite %v4float %float_9 %float_9 %float_10 %float_10
173        %300 = OpConstantComposite %v4float %float_1 %float_2 %float_1 %float_2
174    %float_8 = OpConstant %float 8
175        %311 = OpConstantComposite %v4float %float_8 %float_8 %float_8 %float_2
176   %float_32 = OpConstant %float 32
177        %317 = OpConstantComposite %v2float %float_32 %float_32
178   %float_16 = OpConstant %float 16
179        %324 = OpConstantComposite %v4float %float_4 %float_16 %float_8 %float_2
180        %328 = OpConstantComposite %v4float %float_32 %float_32 %float_32 %float_32
181        %333 = OpConstantComposite %v4float %float_2 %float_8 %float_16 %float_4
182        %339 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_4
183  %float_0_5 = OpConstant %float 0.5
184%_entrypoint_v = OpFunction %void None %13
185         %14 = OpLabel
186         %18 = OpVariable %_ptr_Function_v2float Function
187               OpStore %18 %17
188         %20 = OpFunctionCall %v4float %main %18
189               OpStore %sk_FragColor %20
190               OpReturn
191               OpFunctionEnd
192 %test_int_b = OpFunction %bool None %22
193         %23 = OpLabel
194         %ok = OpVariable %_ptr_Function_bool Function
195   %inputRed = OpVariable %_ptr_Function_v4int Function
196 %inputGreen = OpVariable %_ptr_Function_v4int Function
197          %x = OpVariable %_ptr_Function_v4int Function
198               OpStore %ok %true
199         %31 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
200         %34 = OpLoad %v4float %31
201         %35 = OpCompositeExtract %float %34 0
202         %36 = OpConvertFToS %int %35
203         %37 = OpCompositeExtract %float %34 1
204         %38 = OpConvertFToS %int %37
205         %39 = OpCompositeExtract %float %34 2
206         %40 = OpConvertFToS %int %39
207         %41 = OpCompositeExtract %float %34 3
208         %42 = OpConvertFToS %int %41
209         %43 = OpCompositeConstruct %v4int %36 %38 %40 %42
210               OpStore %inputRed %43
211         %45 = OpAccessChain %_ptr_Uniform_v4float %8 %int_1
212         %47 = OpLoad %v4float %45
213         %48 = OpCompositeExtract %float %47 0
214         %49 = OpConvertFToS %int %48
215         %50 = OpCompositeExtract %float %47 1
216         %51 = OpConvertFToS %int %50
217         %52 = OpCompositeExtract %float %47 2
218         %53 = OpConvertFToS %int %52
219         %54 = OpCompositeExtract %float %47 3
220         %55 = OpConvertFToS %int %54
221         %56 = OpCompositeConstruct %v4int %49 %51 %53 %55
222               OpStore %inputGreen %56
223         %60 = OpIAdd %v4int %43 %59
224               OpStore %x %60
225               OpSelectionMerge %63 None
226               OpBranchConditional %true %62 %63
227         %62 = OpLabel
228         %66 = OpIEqual %v4bool %60 %65
229         %68 = OpAll %bool %66
230               OpBranch %63
231         %63 = OpLabel
232         %69 = OpPhi %bool %false %23 %68 %62
233               OpStore %ok %69
234         %70 = OpVectorShuffle %v4int %56 %56 1 3 0 2
235         %71 = OpISub %v4int %70 %59
236               OpStore %x %71
237               OpSelectionMerge %73 None
238               OpBranchConditional %69 %72 %73
239         %72 = OpLabel
240         %77 = OpIEqual %v4bool %71 %76
241         %78 = OpAll %bool %77
242               OpBranch %73
243         %73 = OpLabel
244         %79 = OpPhi %bool %false %63 %78 %72
245               OpStore %ok %79
246         %80 = OpCompositeExtract %int %56 1
247         %81 = OpCompositeConstruct %v4int %80 %80 %80 %80
248         %82 = OpIAdd %v4int %43 %81
249               OpStore %x %82
250               OpSelectionMerge %84 None
251               OpBranchConditional %79 %83 %84
252         %83 = OpLabel
253         %86 = OpIEqual %v4bool %82 %85
254         %87 = OpAll %bool %86
255               OpBranch %84
256         %84 = OpLabel
257         %88 = OpPhi %bool %false %73 %87 %83
258               OpStore %ok %88
259         %89 = OpVectorShuffle %v3int %56 %56 3 1 3
260         %93 = OpIMul %v3int %89 %92
261         %94 = OpLoad %v4int %x
262         %95 = OpVectorShuffle %v4int %94 %93 4 5 6 3
263               OpStore %x %95
264               OpSelectionMerge %97 None
265               OpBranchConditional %88 %96 %97
266         %96 = OpLabel
267         %99 = OpIEqual %v4bool %95 %98
268        %100 = OpAll %bool %99
269               OpBranch %97
270         %97 = OpLabel
271        %101 = OpPhi %bool %false %84 %100 %96
272               OpStore %ok %101
273        %102 = OpVectorShuffle %v2int %95 %95 2 3
274        %106 = OpSDiv %v2int %102 %105
275        %107 = OpLoad %v4int %x
276        %108 = OpVectorShuffle %v4int %107 %106 4 5 2 3
277               OpStore %x %108
278               OpSelectionMerge %110 None
279               OpBranchConditional %101 %109 %110
280        %109 = OpLabel
281        %112 = OpIEqual %v4bool %108 %111
282        %113 = OpAll %bool %112
283               OpBranch %110
284        %110 = OpLabel
285        %114 = OpPhi %bool %false %97 %113 %109
286               OpStore %ok %114
287        %117 = OpIMul %v4int %43 %116
288        %118 = OpVectorShuffle %v4int %117 %117 1 0 3 2
289               OpStore %x %118
290               OpSelectionMerge %120 None
291               OpBranchConditional %114 %119 %120
292        %119 = OpLabel
293        %122 = OpIEqual %v4bool %118 %121
294        %123 = OpAll %bool %122
295               OpBranch %120
296        %120 = OpLabel
297        %124 = OpPhi %bool %false %110 %123 %119
298               OpStore %ok %124
299        %125 = OpIAdd %v4int %59 %43
300               OpStore %x %125
301               OpSelectionMerge %127 None
302               OpBranchConditional %124 %126 %127
303        %126 = OpLabel
304        %128 = OpIEqual %v4bool %125 %65
305        %129 = OpAll %bool %128
306               OpBranch %127
307        %127 = OpLabel
308        %130 = OpPhi %bool %false %120 %129 %126
309               OpStore %ok %130
310        %132 = OpVectorShuffle %v4int %56 %56 1 3 0 2
311        %134 = OpISub %v4int %133 %132
312               OpStore %x %134
313               OpSelectionMerge %136 None
314               OpBranchConditional %130 %135 %136
315        %135 = OpLabel
316        %138 = OpIEqual %v4bool %134 %137
317        %139 = OpAll %bool %138
318               OpBranch %136
319        %136 = OpLabel
320        %140 = OpPhi %bool %false %127 %139 %135
321               OpStore %ok %140
322        %141 = OpCompositeExtract %int %43 0
323        %142 = OpCompositeConstruct %v4int %141 %141 %141 %141
324        %143 = OpIAdd %v4int %142 %56
325               OpStore %x %143
326               OpSelectionMerge %145 None
327               OpBranchConditional %140 %144 %145
328        %144 = OpLabel
329        %147 = OpIEqual %v4bool %143 %146
330        %148 = OpAll %bool %147
331               OpBranch %145
332        %145 = OpLabel
333        %149 = OpPhi %bool %false %136 %148 %144
334               OpStore %ok %149
335        %151 = OpVectorShuffle %v3int %56 %56 3 1 3
336        %153 = OpIMul %v3int %152 %151
337        %154 = OpLoad %v4int %x
338        %155 = OpVectorShuffle %v4int %154 %153 4 5 6 3
339               OpStore %x %155
340               OpSelectionMerge %157 None
341               OpBranchConditional %149 %156 %157
342        %156 = OpLabel
343        %159 = OpIEqual %v4bool %155 %158
344        %160 = OpAll %bool %159
345               OpBranch %157
346        %157 = OpLabel
347        %161 = OpPhi %bool %false %145 %160 %156
348               OpStore %ok %161
349        %163 = OpVectorShuffle %v2int %155 %155 2 3
350        %165 = OpSDiv %v2int %164 %163
351        %166 = OpLoad %v4int %x
352        %167 = OpVectorShuffle %v4int %166 %165 4 5 2 3
353               OpStore %x %167
354               OpSelectionMerge %169 None
355               OpBranchConditional %161 %168 %169
356        %168 = OpLabel
357        %172 = OpIEqual %v4bool %167 %171
358        %173 = OpAll %bool %172
359               OpBranch %169
360        %169 = OpLabel
361        %174 = OpPhi %bool %false %157 %173 %168
362               OpStore %ok %174
363        %177 = OpSDiv %v4int %176 %167
364        %178 = OpVectorShuffle %v4int %177 %177 1 0 3 2
365               OpStore %x %178
366               OpSelectionMerge %180 None
367               OpBranchConditional %174 %179 %180
368        %179 = OpLabel
369        %182 = OpIEqual %v4bool %178 %181
370        %183 = OpAll %bool %182
371               OpBranch %180
372        %180 = OpLabel
373        %184 = OpPhi %bool %false %169 %183 %179
374               OpStore %ok %184
375        %185 = OpIAdd %v4int %178 %59
376               OpStore %x %185
377        %186 = OpIMul %v4int %185 %59
378               OpStore %x %186
379        %188 = OpISub %v4int %186 %187
380               OpStore %x %188
381        %189 = OpSDiv %v4int %188 %59
382               OpStore %x %189
383               OpSelectionMerge %191 None
384               OpBranchConditional %184 %190 %191
385        %190 = OpLabel
386        %192 = OpIEqual %v4bool %189 %181
387        %193 = OpAll %bool %192
388               OpBranch %191
389        %191 = OpLabel
390        %194 = OpPhi %bool %false %180 %193 %190
391               OpStore %ok %194
392        %195 = OpIAdd %v4int %189 %59
393               OpStore %x %195
394        %196 = OpIMul %v4int %195 %59
395               OpStore %x %196
396        %197 = OpISub %v4int %196 %187
397               OpStore %x %197
398        %198 = OpSDiv %v4int %197 %59
399               OpStore %x %198
400               OpSelectionMerge %200 None
401               OpBranchConditional %194 %199 %200
402        %199 = OpLabel
403        %201 = OpIEqual %v4bool %198 %181
404        %202 = OpAll %bool %201
405               OpBranch %200
406        %200 = OpLabel
407        %203 = OpPhi %bool %false %191 %202 %199
408               OpStore %ok %203
409               OpReturnValue %203
410               OpFunctionEnd
411       %main = OpFunction %v4float None %204
412        %205 = OpFunctionParameter %_ptr_Function_v2float
413        %206 = OpLabel
414      %_0_ok = OpVariable %_ptr_Function_bool Function
415%_1_inputRed = OpVariable %_ptr_Function_v4float Function
416%_2_inputGreen = OpVariable %_ptr_Function_v4float Function
417       %_3_x = OpVariable %_ptr_Function_v4float Function
418        %361 = OpVariable %_ptr_Function_v4float Function
419               OpStore %_0_ok %true
420        %210 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
421        %211 = OpLoad %v4float %210
422               OpStore %_1_inputRed %211
423        %213 = OpAccessChain %_ptr_Uniform_v4float %8 %int_1
424        %214 = OpLoad %v4float %213
425               OpStore %_2_inputGreen %214
426        %218 = OpFAdd %v4float %211 %217
427               OpStore %_3_x %218
428               OpSelectionMerge %220 None
429               OpBranchConditional %true %219 %220
430        %219 = OpLabel
431        %223 = OpFOrdEqual %v4bool %218 %222
432        %224 = OpAll %bool %223
433               OpBranch %220
434        %220 = OpLabel
435        %225 = OpPhi %bool %false %206 %224 %219
436               OpStore %_0_ok %225
437        %226 = OpVectorShuffle %v4float %214 %214 1 3 0 2
438        %227 = OpFSub %v4float %226 %217
439               OpStore %_3_x %227
440               OpSelectionMerge %229 None
441               OpBranchConditional %225 %228 %229
442        %228 = OpLabel
443        %233 = OpFOrdEqual %v4bool %227 %232
444        %234 = OpAll %bool %233
445               OpBranch %229
446        %229 = OpLabel
447        %235 = OpPhi %bool %false %220 %234 %228
448               OpStore %_0_ok %235
449        %236 = OpCompositeExtract %float %214 1
450        %237 = OpCompositeConstruct %v4float %236 %236 %236 %236
451        %238 = OpFAdd %v4float %211 %237
452               OpStore %_3_x %238
453               OpSelectionMerge %240 None
454               OpBranchConditional %235 %239 %240
455        %239 = OpLabel
456        %243 = OpFOrdEqual %v4bool %238 %242
457        %244 = OpAll %bool %243
458               OpBranch %240
459        %240 = OpLabel
460        %245 = OpPhi %bool %false %229 %244 %239
461               OpStore %_0_ok %245
462        %246 = OpVectorShuffle %v3float %214 %214 3 1 3
463        %249 = OpVectorTimesScalar %v3float %246 %float_9
464        %250 = OpLoad %v4float %_3_x
465        %251 = OpVectorShuffle %v4float %250 %249 4 5 6 3
466               OpStore %_3_x %251
467               OpSelectionMerge %253 None
468               OpBranchConditional %245 %252 %253
469        %252 = OpLabel
470        %255 = OpFOrdEqual %v4bool %251 %254
471        %256 = OpAll %bool %255
472               OpBranch %253
473        %253 = OpLabel
474        %257 = OpPhi %bool %false %240 %256 %252
475               OpStore %_0_ok %257
476        %258 = OpVectorShuffle %v2float %251 %251 2 3
477        %259 = OpVectorTimesScalar %v2float %258 %float_2
478        %260 = OpLoad %v4float %_3_x
479        %261 = OpVectorShuffle %v4float %260 %259 4 5 2 3
480               OpStore %_3_x %261
481               OpSelectionMerge %263 None
482               OpBranchConditional %257 %262 %263
483        %262 = OpLabel
484        %267 = OpFOrdEqual %v4bool %261 %266
485        %268 = OpAll %bool %267
486               OpBranch %263
487        %263 = OpLabel
488        %269 = OpPhi %bool %false %253 %268 %262
489               OpStore %_0_ok %269
490        %271 = OpVectorTimesScalar %v4float %211 %float_5
491        %272 = OpVectorShuffle %v4float %271 %271 1 0 3 2
492               OpStore %_3_x %272
493               OpSelectionMerge %274 None
494               OpBranchConditional %269 %273 %274
495        %273 = OpLabel
496        %276 = OpFOrdEqual %v4bool %272 %275
497        %277 = OpAll %bool %276
498               OpBranch %274
499        %274 = OpLabel
500        %278 = OpPhi %bool %false %263 %277 %273
501               OpStore %_0_ok %278
502        %279 = OpFAdd %v4float %217 %211
503               OpStore %_3_x %279
504               OpSelectionMerge %281 None
505               OpBranchConditional %278 %280 %281
506        %280 = OpLabel
507        %282 = OpFOrdEqual %v4bool %279 %222
508        %283 = OpAll %bool %282
509               OpBranch %281
510        %281 = OpLabel
511        %284 = OpPhi %bool %false %274 %283 %280
512               OpStore %_0_ok %284
513        %286 = OpVectorShuffle %v4float %214 %214 1 3 0 2
514        %288 = OpFSub %v4float %287 %286
515               OpStore %_3_x %288
516               OpSelectionMerge %290 None
517               OpBranchConditional %284 %289 %290
518        %289 = OpLabel
519        %292 = OpFOrdEqual %v4bool %288 %291
520        %293 = OpAll %bool %292
521               OpBranch %290
522        %290 = OpLabel
523        %294 = OpPhi %bool %false %281 %293 %289
524               OpStore %_0_ok %294
525        %295 = OpCompositeExtract %float %211 0
526        %296 = OpCompositeConstruct %v4float %295 %295 %295 %295
527        %297 = OpFAdd %v4float %296 %214
528               OpStore %_3_x %297
529               OpSelectionMerge %299 None
530               OpBranchConditional %294 %298 %299
531        %298 = OpLabel
532        %301 = OpFOrdEqual %v4bool %297 %300
533        %302 = OpAll %bool %301
534               OpBranch %299
535        %299 = OpLabel
536        %303 = OpPhi %bool %false %290 %302 %298
537               OpStore %_0_ok %303
538        %305 = OpVectorShuffle %v3float %214 %214 3 1 3
539        %306 = OpVectorTimesScalar %v3float %305 %float_8
540        %307 = OpLoad %v4float %_3_x
541        %308 = OpVectorShuffle %v4float %307 %306 4 5 6 3
542               OpStore %_3_x %308
543               OpSelectionMerge %310 None
544               OpBranchConditional %303 %309 %310
545        %309 = OpLabel
546        %312 = OpFOrdEqual %v4bool %308 %311
547        %313 = OpAll %bool %312
548               OpBranch %310
549        %310 = OpLabel
550        %314 = OpPhi %bool %false %299 %313 %309
551               OpStore %_0_ok %314
552        %316 = OpVectorShuffle %v2float %308 %308 2 3
553        %318 = OpFDiv %v2float %317 %316
554        %319 = OpLoad %v4float %_3_x
555        %320 = OpVectorShuffle %v4float %319 %318 4 5 2 3
556               OpStore %_3_x %320
557               OpSelectionMerge %322 None
558               OpBranchConditional %314 %321 %322
559        %321 = OpLabel
560        %325 = OpFOrdEqual %v4bool %320 %324
561        %326 = OpAll %bool %325
562               OpBranch %322
563        %322 = OpLabel
564        %327 = OpPhi %bool %false %310 %326 %321
565               OpStore %_0_ok %327
566        %329 = OpFDiv %v4float %328 %320
567        %330 = OpVectorShuffle %v4float %329 %329 1 0 3 2
568               OpStore %_3_x %330
569               OpSelectionMerge %332 None
570               OpBranchConditional %327 %331 %332
571        %331 = OpLabel
572        %334 = OpFOrdEqual %v4bool %330 %333
573        %335 = OpAll %bool %334
574               OpBranch %332
575        %332 = OpLabel
576        %336 = OpPhi %bool %false %322 %335 %331
577               OpStore %_0_ok %336
578        %337 = OpFAdd %v4float %330 %217
579               OpStore %_3_x %337
580        %338 = OpVectorTimesScalar %v4float %337 %float_2
581               OpStore %_3_x %338
582        %340 = OpFSub %v4float %338 %339
583               OpStore %_3_x %340
584        %342 = OpVectorTimesScalar %v4float %340 %float_0_5
585               OpStore %_3_x %342
586               OpSelectionMerge %344 None
587               OpBranchConditional %336 %343 %344
588        %343 = OpLabel
589        %345 = OpFOrdEqual %v4bool %342 %333
590        %346 = OpAll %bool %345
591               OpBranch %344
592        %344 = OpLabel
593        %347 = OpPhi %bool %false %332 %346 %343
594               OpStore %_0_ok %347
595        %348 = OpFAdd %v4float %342 %217
596               OpStore %_3_x %348
597        %349 = OpVectorTimesScalar %v4float %348 %float_2
598               OpStore %_3_x %349
599        %350 = OpFSub %v4float %349 %339
600               OpStore %_3_x %350
601        %351 = OpVectorTimesScalar %v4float %350 %float_0_5
602               OpStore %_3_x %351
603               OpSelectionMerge %353 None
604               OpBranchConditional %347 %352 %353
605        %352 = OpLabel
606        %354 = OpFOrdEqual %v4bool %351 %333
607        %355 = OpAll %bool %354
608               OpBranch %353
609        %353 = OpLabel
610        %356 = OpPhi %bool %false %344 %355 %352
611               OpStore %_0_ok %356
612               OpSelectionMerge %358 None
613               OpBranchConditional %356 %357 %358
614        %357 = OpLabel
615        %359 = OpFunctionCall %bool %test_int_b
616               OpBranch %358
617        %358 = OpLabel
618        %360 = OpPhi %bool %false %353 %359 %357
619               OpSelectionMerge %364 None
620               OpBranchConditional %360 %362 %363
621        %362 = OpLabel
622        %365 = OpAccessChain %_ptr_Uniform_v4float %8 %int_1
623        %366 = OpLoad %v4float %365
624               OpStore %361 %366
625               OpBranch %364
626        %363 = OpLabel
627        %367 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
628        %368 = OpLoad %v4float %367
629               OpStore %361 %368
630               OpBranch %364
631        %364 = OpLabel
632        %369 = OpLoad %v4float %361
633               OpReturnValue %369
634               OpFunctionEnd
635