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