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