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