xref: /aosp_15_r20/external/skia/tests/sksl/runtime/LoopInt.skrp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1673 instructions
2
3[immutable slots]
4i0 = 0x00000009 (1.261169e-44)
5i1 = 0x00000001 (1.401298e-45)
6i2 = 0x00000002 (2.802597e-45)
7i3 = 0x00000003 (4.203895e-45)
8i4 = 0x00000009 (1.261169e-44)
9i5 = 0x00000003 (4.203895e-45)
10i6 = 0x00000002 (2.802597e-45)
11i7 = 0x00000001 (1.401298e-45)
12i8 = 0x00000009 (1.261169e-44)
13i9 = 0x00000009 (1.261169e-44)
14i10 = 0x00000009 (1.261169e-44)
15i11 = 0x00000001 (1.401298e-45)
16
17store_device_xy01              $13..16 = DeviceCoords.xy01
18cmpeq_imm_float                $13 = equal($13, 0x3F000000 (0.5))
19cmpeq_imm_float                $14 = equal($14, 0x3F000000 (0.5))
20bitwise_and_int                $13 &= $14
21store_src_rg                   pos = src.rg
22init_lane_masks                CondMask = LoopMask = RetMask = true
23copy_4_uniforms                colorRed = colorRed
24trace_var                      TraceVar(colorRed) when $13 is true
25copy_4_uniforms                colorGreen = colorGreen
26trace_var                      TraceVar(colorGreen) when $13 is true
27copy_constant                  kZero = 0
28trace_var                      TraceVar(kZero) when $13 is true
29copy_constant                  kTen = 0x0000000A (1.401298e-44)
30trace_var                      TraceVar(kTen) when $13 is true
31trace_enter                    TraceEnter(half4 main(float2 pos)) when $13 is true
32trace_var                      TraceVar(pos) when $13 is true
33copy_constant                  $0 = 0
34copy_slot_unmasked             $1 = $13
35copy_slot_masked               $0 = Mask($1)
36trace_scope                    TraceScope(+1) when $0 is true
37trace_line                     TraceLine(130) when $13 is true
38copy_slot_unmasked             $1 = pos(0)
39copy_uniform                   $2 = colorGreen(1)
40max_float                      $1 = max($1, $2)
41copy_uniform                   $2 = colorGreen(3)
42min_float                      $1 = min($1, $2)
43cast_to_int_from_float         $1 = FloatToInt($1)
44mul_imm_int                    $1 *= 0x00000005
45copy_slot_unmasked             five = $1
46trace_var                      TraceVar(five) when $13 is true
47trace_line                     TraceLine(134) when $13 is true
48store_condition_mask           $17 = CondMask
49store_condition_mask           $28 = CondMask
50store_condition_mask           $41 = CondMask
51store_condition_mask           $54 = CondMask
52store_condition_mask           $67 = CondMask
53store_condition_mask           $80 = CondMask
54store_condition_mask           $90 = CondMask
55store_condition_mask           $100 = CondMask
56branch_if_no_lanes_active      branch_if_no_lanes_active +62 (label 9 at #102)
57trace_enter                    TraceEnter(int return_loop(int five)) when $13 is true
58store_return_mask              $101 = RetMask
59copy_constant                  $102 = 0
60copy_slot_unmasked             $103 = $13
61copy_slot_masked               $102 = Mask($103)
62trace_scope                    TraceScope(+1) when $102 is true
63copy_constant                  $103 = 0
64copy_slot_unmasked             $104 = $13
65copy_slot_masked               $103 = Mask($104)
66trace_scope                    TraceScope(+1) when $103 is true
67trace_line                     TraceLine(8) when $13 is true
68copy_constant                  i = 0
69trace_var                      TraceVar(i) when $13 is true
70store_loop_mask                $104 = LoopMask
71jump                           jump +29 (label 11 at #84)
72label                          label 0x0000000C
73copy_constant                  $105 = 0
74copy_slot_unmasked             $106 = $13
75copy_slot_masked               $105 = Mask($106)
76trace_scope                    TraceScope(+1) when $105 is true
77trace_line                     TraceLine(9) when $13 is true
78store_condition_mask           $106 = CondMask
79copy_slot_unmasked             $107 = i
80copy_slot_unmasked             $108 = five
81cmpeq_int                      $107 = equal($107, $108)
82merge_condition_mask           CondMask = $106 & $107
83copy_constant                  $108 = 0
84copy_slot_unmasked             $109 = $13
85copy_slot_masked               $108 = Mask($109)
86trace_scope                    TraceScope(+1) when $108 is true
87trace_line                     TraceLine(9) when $13 is true
88copy_slot_unmasked             $109 = i
89copy_slot_masked               [return_loop].result = Mask($109)
90trace_var                      TraceVar([return_loop].result) when $13 is true
91mask_off_return_mask           RetMask &= ~(CondMask & LoopMask & RetMask)
92trace_scope                    TraceScope(-1) when $108 is true
93load_condition_mask            CondMask = $106
94trace_scope                    TraceScope(-1) when $105 is true
95trace_line                     TraceLine(8) when $13 is true
96copy_slot_unmasked             $105 = i
97add_imm_int                    $105 += 0x00000001
98copy_slot_masked               i = Mask($105)
99trace_var                      TraceVar(i) when $13 is true
100label                          label 0x0000000B
101copy_slot_unmasked             $105 = i
102cmplt_imm_int                  $105 = lessThan($105, 0x0000000A)
103merge_loop_mask                LoopMask &= $105
104stack_rewind
105branch_if_any_lanes_active     branch_if_any_lanes_active -33 (label 12 at #56)
106label                          label 0x0000000A
107load_loop_mask                 LoopMask = $104
108trace_scope                    TraceScope(-1) when $103 is true
109trace_line                     TraceLine(11) when $13 is true
110copy_constant                  $103 = 0
111copy_slot_masked               [return_loop].result = Mask($103)
112trace_var                      TraceVar([return_loop].result) when $13 is true
113mask_off_return_mask           RetMask &= ~(CondMask & LoopMask & RetMask)
114trace_scope                    TraceScope(-1) when $102 is true
115load_return_mask               RetMask = $101
116trace_exit                     TraceExit(int return_loop(int five)) when $13 is true
117copy_slot_unmasked             $101 = [return_loop].result
118label                          label 0x00000009
119cmpeq_imm_int                  $101 = equal($101, 0x00000005)
120copy_constant                  $91 = 0
121merge_condition_mask           CondMask = $100 & $101
122branch_if_no_lanes_active      branch_if_no_lanes_active +69 (label 8 at #175)
123trace_enter                    TraceEnter(int continue_loop(int five)) when $13 is true
124copy_constant                  $92 = 0
125copy_slot_unmasked             $93 = $13
126copy_slot_masked               $92 = Mask($93)
127trace_scope                    TraceScope(+1) when $92 is true
128trace_line                     TraceLine(17) when $13 is true
129copy_constant                  sum = 0
130trace_var                      TraceVar(sum) when $13 is true
131copy_constant                  $93 = 0
132copy_slot_unmasked             $94 = $13
133copy_slot_masked               $93 = Mask($94)
134trace_scope                    TraceScope(+1) when $93 is true
135trace_line                     TraceLine(18) when $13 is true
136copy_constant                  i₁ = 0
137trace_var                      TraceVar(i₁) when $13 is true
138store_loop_mask                $94 = LoopMask
139jump                           jump +33 (label 15 at #156)
140label                          label 0x00000010
141copy_constant                  $110 = 0
142copy_constant                  $95 = 0
143copy_slot_unmasked             $96 = $13
144copy_slot_masked               $95 = Mask($96)
145trace_scope                    TraceScope(+1) when $95 is true
146trace_line                     TraceLine(19) when $13 is true
147store_condition_mask           $96 = CondMask
148copy_slot_unmasked             $97 = i₁
149copy_slot_unmasked             $98 = five
150cmplt_int                      $97 = lessThan($97, $98)
151merge_condition_mask           CondMask = $96 & $97
152copy_constant                  $98 = 0
153copy_slot_unmasked             $99 = $13
154copy_slot_masked               $98 = Mask($99)
155trace_scope                    TraceScope(+1) when $98 is true
156trace_line                     TraceLine(19) when $13 is true
157continue_op                    $110 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask)
158trace_scope                    TraceScope(-1) when $98 is true
159load_condition_mask            CondMask = $96
160trace_line                     TraceLine(20) when $13 is true
161copy_2_slots_unmasked          $96..97 = sum, i₁
162add_int                        $96 += $97
163copy_slot_masked               sum = Mask($96)
164trace_var                      TraceVar(sum) when $13 is true
165trace_scope                    TraceScope(-1) when $95 is true
166reenable_loop_mask             LoopMask |= $110
167trace_line                     TraceLine(18) when $13 is true
168copy_slot_unmasked             $95 = i₁
169add_imm_int                    $95 += 0x00000001
170copy_slot_masked               i₁ = Mask($95)
171trace_var                      TraceVar(i₁) when $13 is true
172label                          label 0x0000000F
173copy_slot_unmasked             $95 = i₁
174cmplt_imm_int                  $95 = lessThan($95, 0x0000000A)
175merge_loop_mask                LoopMask &= $95
176stack_rewind
177branch_if_any_lanes_active     branch_if_any_lanes_active -37 (label 16 at #124)
178label                          label 0x0000000E
179load_loop_mask                 LoopMask = $94
180trace_scope                    TraceScope(-1) when $93 is true
181trace_line                     TraceLine(22) when $13 is true
182copy_slot_unmasked             $93 = sum
183copy_slot_masked               [continue_loop].result = Mask($93)
184trace_var                      TraceVar([continue_loop].result) when $13 is true
185trace_scope                    TraceScope(-1) when $92 is true
186trace_exit                     TraceExit(int continue_loop(int five)) when $13 is true
187copy_slot_unmasked             $92 = [continue_loop].result
188label                          label 0x0000000D
189cmpeq_imm_int                  $92 = equal($92, 0x00000023)
190copy_slot_masked               $91 = Mask($92)
191label                          label 0x00000008
192load_condition_mask            CondMask = $100
193copy_constant                  $81 = 0
194merge_condition_mask           CondMask = $90 & $91
195branch_if_no_lanes_active      branch_if_no_lanes_active +74 (label 7 at #253)
196trace_enter                    TraceEnter(int break_loop(int five)) when $13 is true
197copy_constant                  five₁ = 0x00000005 (7.006492e-45)
198trace_var                      TraceVar(five₁) when $13 is true
199copy_constant                  $82 = 0
200copy_slot_unmasked             $83 = $13
201copy_slot_masked               $82 = Mask($83)
202trace_scope                    TraceScope(+1) when $82 is true
203trace_line                     TraceLine(27) when $13 is true
204copy_constant                  sum₁ = 0
205trace_var                      TraceVar(sum₁) when $13 is true
206trace_line                     TraceLine(28) when $13 is true
207copy_constant                  kOne = 0x00000001 (1.401298e-45)
208trace_var                      TraceVar(kOne) when $13 is true
209copy_constant                  $83 = 0
210copy_slot_unmasked             $84 = $13
211copy_slot_masked               $83 = Mask($84)
212trace_scope                    TraceScope(+1) when $83 is true
213trace_line                     TraceLine(29) when $13 is true
214copy_constant                  i₂ = 0
215trace_var                      TraceVar(i₂) when $13 is true
216store_loop_mask                $84 = LoopMask
217jump                           jump +33 (label 19 at #234)
218label                          label 0x00000014
219copy_constant                  $85 = 0
220copy_slot_unmasked             $86 = $13
221copy_slot_masked               $85 = Mask($86)
222trace_scope                    TraceScope(+1) when $85 is true
223trace_line                     TraceLine(30) when $13 is true
224store_condition_mask           $86 = CondMask
225copy_slot_unmasked             $87 = five₁
226copy_slot_unmasked             $88 = i₂
227cmplt_int                      $87 = lessThan($87, $88)
228merge_condition_mask           CondMask = $86 & $87
229copy_constant                  $88 = 0
230copy_slot_unmasked             $89 = $13
231copy_slot_masked               $88 = Mask($89)
232trace_scope                    TraceScope(+1) when $88 is true
233trace_line                     TraceLine(30) when $13 is true
234branch_if_all_lanes_active     branch_if_all_lanes_active +22 (label 18 at #240)
235mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
236trace_scope                    TraceScope(-1) when $88 is true
237load_condition_mask            CondMask = $86
238trace_line                     TraceLine(31) when $13 is true
239copy_slot_unmasked             $86 = sum₁
240copy_slot_unmasked             $87 = i₂
241add_int                        $86 += $87
242copy_slot_masked               sum₁ = Mask($86)
243trace_var                      TraceVar(sum₁) when $13 is true
244trace_scope                    TraceScope(-1) when $85 is true
245trace_line                     TraceLine(29) when $13 is true
246copy_slot_unmasked             $85 = i₂
247add_imm_int                    $85 += 0x00000001
248copy_slot_masked               i₂ = Mask($85)
249trace_var                      TraceVar(i₂) when $13 is true
250label                          label 0x00000013
251copy_slot_unmasked             $85 = i₂
252cmplt_imm_int                  $85 = lessThan($85, 0x0000000A)
253merge_loop_mask                LoopMask &= $85
254stack_rewind
255branch_if_any_lanes_active     branch_if_any_lanes_active -37 (label 20 at #202)
256label                          label 0x00000012
257load_loop_mask                 LoopMask = $84
258trace_scope                    TraceScope(-1) when $83 is true
259trace_line                     TraceLine(33) when $13 is true
260copy_slot_unmasked             $83 = sum₁
261copy_slot_masked               [break_loop].result = Mask($83)
262trace_var                      TraceVar([break_loop].result) when $13 is true
263trace_scope                    TraceScope(-1) when $82 is true
264trace_exit                     TraceExit(int break_loop(int five)) when $13 is true
265copy_slot_unmasked             $82 = [break_loop].result
266label                          label 0x00000011
267cmpeq_imm_int                  $82 = equal($82, 0x0000000F)
268copy_slot_masked               $81 = Mask($82)
269label                          label 0x00000007
270load_condition_mask            CondMask = $90
271copy_constant                  $68 = 0
272merge_condition_mask           CondMask = $80 & $81
273branch_if_no_lanes_active      branch_if_no_lanes_active +78 (label 6 at #335)
274trace_enter                    TraceEnter(bool loop_operator_le()) when $13 is true
275copy_constant                  $69 = 0
276copy_slot_unmasked             $70 = $13
277copy_slot_masked               $69 = Mask($70)
278trace_scope                    TraceScope(+1) when $69 is true
279trace_line                     TraceLine(38) when $13 is true
280trace_line                     TraceLine(39) when $13 is true
281trace_line                     TraceLine(40) when $13 is true
282trace_line                     TraceLine(43) when $13 is true
283splat_4_constants              result = 0x00000008 (1.121039e-44)
284trace_var                      TraceVar(result) when $13 is true
285copy_constant                  $70 = 0
286copy_slot_unmasked             $71 = $13
287copy_slot_masked               $70 = Mask($71)
288trace_scope                    TraceScope(+1) when $70 is true
289branch_if_no_lanes_active      branch_if_no_lanes_active +17 (label 22 at #290)
290trace_line                     TraceLine(44) when $13 is true
291copy_constant                  i₃ = 0
292trace_var                      TraceVar(i₃) when $13 is true
293label                          label 0x00000017
294copy_constant                  $71 = 0
295copy_slot_unmasked             $72 = $13
296copy_slot_masked               $71 = Mask($72)
297trace_scope                    TraceScope(+1) when $71 is true
298trace_line                     TraceLine(44) when $13 is true
299copy_4_slots_unmasked          $72..75 = result
300splat_4_constants              $76..79 = 0x00000001 (1.401298e-45)
301add_4_ints                     $72..75 += $76..79
302copy_4_slots_masked            result = Mask($72..75)
303trace_var                      TraceVar(result) when $13 is true
304trace_scope                    TraceScope(-1) when $71 is true
305trace_line                     TraceLine(44) when $13 is true
306label                          label 0x00000016
307trace_scope                    TraceScope(-1) when $70 is true
308copy_constant                  $70 = 0
309copy_slot_unmasked             $71 = $13
310copy_slot_masked               $70 = Mask($71)
311trace_scope                    TraceScope(+1) when $70 is true
312branch_if_no_lanes_active      branch_if_no_lanes_active +24 (label 24 at #320)
313trace_line                     TraceLine(47) when $13 is true
314copy_constant                  i₄ = 0x00000001 (1.401298e-45)
315trace_var                      TraceVar(i₄) when $13 is true
316label                          label 0x00000019
317copy_constant                  $71 = 0
318copy_slot_unmasked             $72 = $13
319copy_slot_masked               $71 = Mask($72)
320trace_scope                    TraceScope(+1) when $71 is true
321trace_line                     TraceLine(48) when $13 is true
322copy_3_slots_unmasked          $72..74 = result(1..3)
323copy_slot_unmasked             $75 = i₄
324copy_4_slots_masked            result = Mask($72..75)
325trace_var                      TraceVar(result) when $13 is true
326trace_scope                    TraceScope(-1) when $71 is true
327trace_line                     TraceLine(47) when $13 is true
328copy_slot_unmasked             $71 = i₄
329add_imm_int                    $71 += 0x00000001
330copy_slot_masked               i₄ = Mask($71)
331trace_var                      TraceVar(i₄) when $13 is true
332copy_slot_unmasked             $71 = i₄
333cmple_imm_int                  $71 = lessThanEqual($71, 0x00000003)
334stack_rewind
335branch_if_no_active_lanes_eq   branch -19 (label 25 at #300) if no lanes of $71 == 0
336label                          label 0x00000018
337trace_scope                    TraceScope(-1) when $70 is true
338trace_line                     TraceLine(50) when $13 is true
339copy_4_slots_unmasked          $70..73 = result
340copy_4_immutables_unmasked     $74..77 = i0..3 [0x00000009 (1.261169e-44), 0x00000001 (1.401298e-45), 0x00000002 (2.802597e-45), 0x00000003 (4.203895e-45)]
341cmpeq_4_ints                   $70..73 = equal($70..73, $74..77)
342bitwise_and_2_ints             $70..71 &= $72..73
343bitwise_and_int                $70 &= $71
344copy_slot_masked               [loop_operator_le].result = Mask($70)
345trace_var                      TraceVar([loop_operator_le].result) when $13 is true
346trace_scope                    TraceScope(-1) when $69 is true
347trace_exit                     TraceExit(bool loop_operator_le()) when $13 is true
348copy_slot_unmasked             $69 = [loop_operator_le].result
349label                          label 0x00000015
350copy_slot_masked               $68 = Mask($69)
351label                          label 0x00000006
352load_condition_mask            CondMask = $80
353copy_constant                  $55 = 0
354merge_condition_mask           CondMask = $67 & $68
355branch_if_no_lanes_active      branch_if_no_lanes_active +78 (label 5 at #417)
356trace_enter                    TraceEnter(bool loop_operator_lt()) when $13 is true
357copy_constant                  $56 = 0
358copy_slot_unmasked             $57 = $13
359copy_slot_masked               $56 = Mask($57)
360trace_scope                    TraceScope(+1) when $56 is true
361trace_line                     TraceLine(55) when $13 is true
362trace_line                     TraceLine(56) when $13 is true
363trace_line                     TraceLine(57) when $13 is true
364trace_line                     TraceLine(60) when $13 is true
365splat_4_constants              result₁ = 0x00000008 (1.121039e-44)
366trace_var                      TraceVar(result₁) when $13 is true
367copy_constant                  $57 = 0
368copy_slot_unmasked             $58 = $13
369copy_slot_masked               $57 = Mask($58)
370trace_scope                    TraceScope(+1) when $57 is true
371branch_if_no_lanes_active      branch_if_no_lanes_active +17 (label 27 at #372)
372trace_line                     TraceLine(61) when $13 is true
373copy_constant                  i₅ = 0
374trace_var                      TraceVar(i₅) when $13 is true
375label                          label 0x0000001C
376copy_constant                  $58 = 0
377copy_slot_unmasked             $59 = $13
378copy_slot_masked               $58 = Mask($59)
379trace_scope                    TraceScope(+1) when $58 is true
380trace_line                     TraceLine(61) when $13 is true
381copy_4_slots_unmasked          $59..62 = result₁
382splat_4_constants              $63..66 = 0x00000001 (1.401298e-45)
383add_4_ints                     $59..62 += $63..66
384copy_4_slots_masked            result₁ = Mask($59..62)
385trace_var                      TraceVar(result₁) when $13 is true
386trace_scope                    TraceScope(-1) when $58 is true
387trace_line                     TraceLine(61) when $13 is true
388label                          label 0x0000001B
389trace_scope                    TraceScope(-1) when $57 is true
390copy_constant                  $57 = 0
391copy_slot_unmasked             $58 = $13
392copy_slot_masked               $57 = Mask($58)
393trace_scope                    TraceScope(+1) when $57 is true
394branch_if_no_lanes_active      branch_if_no_lanes_active +24 (label 29 at #402)
395trace_line                     TraceLine(64) when $13 is true
396copy_constant                  i₆ = 0x00000001 (1.401298e-45)
397trace_var                      TraceVar(i₆) when $13 is true
398label                          label 0x0000001E
399copy_constant                  $58 = 0
400copy_slot_unmasked             $59 = $13
401copy_slot_masked               $58 = Mask($59)
402trace_scope                    TraceScope(+1) when $58 is true
403trace_line                     TraceLine(65) when $13 is true
404copy_3_slots_unmasked          $59..61 = result₁(1..3)
405copy_slot_unmasked             $62 = i₆
406copy_4_slots_masked            result₁ = Mask($59..62)
407trace_var                      TraceVar(result₁) when $13 is true
408trace_scope                    TraceScope(-1) when $58 is true
409trace_line                     TraceLine(64) when $13 is true
410copy_slot_unmasked             $58 = i₆
411add_imm_int                    $58 += 0x00000001
412copy_slot_masked               i₆ = Mask($58)
413trace_var                      TraceVar(i₆) when $13 is true
414copy_slot_unmasked             $58 = i₆
415cmplt_imm_int                  $58 = lessThan($58, 0x00000004)
416stack_rewind
417branch_if_no_active_lanes_eq   branch -19 (label 30 at #382) if no lanes of $58 == 0
418label                          label 0x0000001D
419trace_scope                    TraceScope(-1) when $57 is true
420trace_line                     TraceLine(67) when $13 is true
421copy_4_slots_unmasked          $57..60 = result₁
422copy_4_immutables_unmasked     $61..64 = i0..3 [0x00000009 (1.261169e-44), 0x00000001 (1.401298e-45), 0x00000002 (2.802597e-45), 0x00000003 (4.203895e-45)]
423cmpeq_4_ints                   $57..60 = equal($57..60, $61..64)
424bitwise_and_2_ints             $57..58 &= $59..60
425bitwise_and_int                $57 &= $58
426copy_slot_masked               [loop_operator_lt].result = Mask($57)
427trace_var                      TraceVar([loop_operator_lt].result) when $13 is true
428trace_scope                    TraceScope(-1) when $56 is true
429trace_exit                     TraceExit(bool loop_operator_lt()) when $13 is true
430copy_slot_unmasked             $56 = [loop_operator_lt].result
431label                          label 0x0000001A
432copy_slot_masked               $55 = Mask($56)
433label                          label 0x00000005
434load_condition_mask            CondMask = $67
435copy_constant                  $42 = 0
436merge_condition_mask           CondMask = $54 & $55
437branch_if_no_lanes_active      branch_if_no_lanes_active +79 (label 4 at #500)
438trace_enter                    TraceEnter(bool loop_operator_ge()) when $13 is true
439copy_constant                  $43 = 0
440copy_slot_unmasked             $44 = $13
441copy_slot_masked               $43 = Mask($44)
442trace_scope                    TraceScope(+1) when $43 is true
443trace_line                     TraceLine(72) when $13 is true
444trace_line                     TraceLine(73) when $13 is true
445trace_line                     TraceLine(74) when $13 is true
446trace_line                     TraceLine(77) when $13 is true
447splat_4_constants              result₂ = 0x00000008 (1.121039e-44)
448trace_var                      TraceVar(result₂) when $13 is true
449copy_constant                  $44 = 0
450copy_slot_unmasked             $45 = $13
451copy_slot_masked               $44 = Mask($45)
452trace_scope                    TraceScope(+1) when $44 is true
453branch_if_no_lanes_active      branch_if_no_lanes_active +17 (label 32 at #454)
454trace_line                     TraceLine(78) when $13 is true
455copy_constant                  i₇ = 0
456trace_var                      TraceVar(i₇) when $13 is true
457label                          label 0x00000021
458copy_constant                  $45 = 0
459copy_slot_unmasked             $46 = $13
460copy_slot_masked               $45 = Mask($46)
461trace_scope                    TraceScope(+1) when $45 is true
462trace_line                     TraceLine(78) when $13 is true
463copy_4_slots_unmasked          $46..49 = result₂
464splat_4_constants              $50..53 = 0x00000001 (1.401298e-45)
465add_4_ints                     $46..49 += $50..53
466copy_4_slots_masked            result₂ = Mask($46..49)
467trace_var                      TraceVar(result₂) when $13 is true
468trace_scope                    TraceScope(-1) when $45 is true
469trace_line                     TraceLine(78) when $13 is true
470label                          label 0x00000020
471trace_scope                    TraceScope(-1) when $44 is true
472copy_constant                  $44 = 0
473copy_slot_unmasked             $45 = $13
474copy_slot_masked               $44 = Mask($45)
475trace_scope                    TraceScope(+1) when $44 is true
476branch_if_no_lanes_active      branch_if_no_lanes_active +25 (label 34 at #485)
477trace_line                     TraceLine(81) when $13 is true
478copy_constant                  i₈ = 0x00000003 (4.203895e-45)
479trace_var                      TraceVar(i₈) when $13 is true
480label                          label 0x00000023
481copy_constant                  $45 = 0
482copy_slot_unmasked             $46 = $13
483copy_slot_masked               $45 = Mask($46)
484trace_scope                    TraceScope(+1) when $45 is true
485trace_line                     TraceLine(82) when $13 is true
486copy_3_slots_unmasked          $46..48 = result₂(1..3)
487copy_slot_unmasked             $49 = i₈
488copy_4_slots_masked            result₂ = Mask($46..49)
489trace_var                      TraceVar(result₂) when $13 is true
490trace_scope                    TraceScope(-1) when $45 is true
491trace_line                     TraceLine(81) when $13 is true
492copy_slot_unmasked             $45 = i₈
493add_imm_int                    $45 += 0xFFFFFFFF
494copy_slot_masked               i₈ = Mask($45)
495trace_var                      TraceVar(i₈) when $13 is true
496copy_constant                  $45 = 0x00000001 (1.401298e-45)
497copy_slot_unmasked             $46 = i₈
498cmple_int                      $45 = lessThanEqual($45, $46)
499stack_rewind
500branch_if_no_active_lanes_eq   branch -20 (label 35 at #464) if no lanes of $45 == 0
501label                          label 0x00000022
502trace_scope                    TraceScope(-1) when $44 is true
503trace_line                     TraceLine(84) when $13 is true
504copy_4_slots_unmasked          $44..47 = result₂
505copy_4_immutables_unmasked     $48..51 = i4..7 [0x00000009 (1.261169e-44), 0x00000003 (4.203895e-45), 0x00000002 (2.802597e-45), 0x00000001 (1.401298e-45)]
506cmpeq_4_ints                   $44..47 = equal($44..47, $48..51)
507bitwise_and_2_ints             $44..45 &= $46..47
508bitwise_and_int                $44 &= $45
509copy_slot_masked               [loop_operator_ge].result = Mask($44)
510trace_var                      TraceVar([loop_operator_ge].result) when $13 is true
511trace_scope                    TraceScope(-1) when $43 is true
512trace_exit                     TraceExit(bool loop_operator_ge()) when $13 is true
513copy_slot_unmasked             $43 = [loop_operator_ge].result
514label                          label 0x0000001F
515copy_slot_masked               $42 = Mask($43)
516label                          label 0x00000004
517load_condition_mask            CondMask = $54
518copy_constant                  $29 = 0
519merge_condition_mask           CondMask = $41 & $42
520branch_if_no_lanes_active      branch_if_no_lanes_active +79 (label 3 at #583)
521trace_enter                    TraceEnter(bool loop_operator_gt()) when $13 is true
522copy_constant                  $30 = 0
523copy_slot_unmasked             $31 = $13
524copy_slot_masked               $30 = Mask($31)
525trace_scope                    TraceScope(+1) when $30 is true
526trace_line                     TraceLine(89) when $13 is true
527trace_line                     TraceLine(90) when $13 is true
528trace_line                     TraceLine(91) when $13 is true
529trace_line                     TraceLine(94) when $13 is true
530splat_4_constants              result₃ = 0x00000008 (1.121039e-44)
531trace_var                      TraceVar(result₃) when $13 is true
532copy_constant                  $31 = 0
533copy_slot_unmasked             $32 = $13
534copy_slot_masked               $31 = Mask($32)
535trace_scope                    TraceScope(+1) when $31 is true
536branch_if_no_lanes_active      branch_if_no_lanes_active +17 (label 37 at #537)
537trace_line                     TraceLine(95) when $13 is true
538copy_constant                  i₉ = 0x00000001 (1.401298e-45)
539trace_var                      TraceVar(i₉) when $13 is true
540label                          label 0x00000026
541copy_constant                  $32 = 0
542copy_slot_unmasked             $33 = $13
543copy_slot_masked               $32 = Mask($33)
544trace_scope                    TraceScope(+1) when $32 is true
545trace_line                     TraceLine(95) when $13 is true
546copy_4_slots_unmasked          $33..36 = result₃
547splat_4_constants              $37..40 = 0x00000001 (1.401298e-45)
548add_4_ints                     $33..36 += $37..40
549copy_4_slots_masked            result₃ = Mask($33..36)
550trace_var                      TraceVar(result₃) when $13 is true
551trace_scope                    TraceScope(-1) when $32 is true
552trace_line                     TraceLine(95) when $13 is true
553label                          label 0x00000025
554trace_scope                    TraceScope(-1) when $31 is true
555copy_constant                  $31 = 0
556copy_slot_unmasked             $32 = $13
557copy_slot_masked               $31 = Mask($32)
558trace_scope                    TraceScope(+1) when $31 is true
559branch_if_no_lanes_active      branch_if_no_lanes_active +25 (label 39 at #568)
560trace_line                     TraceLine(97) when $13 is true
561copy_constant                  i₁₀ = 0x00000003 (4.203895e-45)
562trace_var                      TraceVar(i₁₀) when $13 is true
563label                          label 0x00000028
564copy_constant                  $32 = 0
565copy_slot_unmasked             $33 = $13
566copy_slot_masked               $32 = Mask($33)
567trace_scope                    TraceScope(+1) when $32 is true
568trace_line                     TraceLine(98) when $13 is true
569copy_3_slots_unmasked          $33..35 = result₃(1..3)
570copy_slot_unmasked             $36 = i₁₀
571copy_4_slots_masked            result₃ = Mask($33..36)
572trace_var                      TraceVar(result₃) when $13 is true
573trace_scope                    TraceScope(-1) when $32 is true
574trace_line                     TraceLine(97) when $13 is true
575copy_slot_unmasked             $32 = i₁₀
576add_imm_int                    $32 += 0xFFFFFFFF
577copy_slot_masked               i₁₀ = Mask($32)
578trace_var                      TraceVar(i₁₀) when $13 is true
579copy_constant                  $32 = 0
580copy_slot_unmasked             $33 = i₁₀
581cmplt_int                      $32 = lessThan($32, $33)
582stack_rewind
583branch_if_no_active_lanes_eq   branch -20 (label 40 at #547) if no lanes of $32 == 0
584label                          label 0x00000027
585trace_scope                    TraceScope(-1) when $31 is true
586trace_line                     TraceLine(100) when $13 is true
587copy_4_slots_unmasked          $31..34 = result₃
588copy_4_immutables_unmasked     $35..38 = i4..7 [0x00000009 (1.261169e-44), 0x00000003 (4.203895e-45), 0x00000002 (2.802597e-45), 0x00000001 (1.401298e-45)]
589cmpeq_4_ints                   $31..34 = equal($31..34, $35..38)
590bitwise_and_2_ints             $31..32 &= $33..34
591bitwise_and_int                $31 &= $32
592copy_slot_masked               [loop_operator_gt].result = Mask($31)
593trace_var                      TraceVar([loop_operator_gt].result) when $13 is true
594trace_scope                    TraceScope(-1) when $30 is true
595trace_exit                     TraceExit(bool loop_operator_gt()) when $13 is true
596copy_slot_unmasked             $30 = [loop_operator_gt].result
597label                          label 0x00000024
598copy_slot_masked               $29 = Mask($30)
599label                          label 0x00000003
600load_condition_mask            CondMask = $41
601copy_constant                  $18 = 0
602merge_condition_mask           CondMask = $28 & $29
603branch_if_no_lanes_active      branch_if_no_lanes_active +44 (label 2 at #631)
604trace_enter                    TraceEnter(bool loop_operator_eq()) when $13 is true
605copy_constant                  $19 = 0
606copy_slot_unmasked             $20 = $13
607copy_slot_masked               $19 = Mask($20)
608trace_scope                    TraceScope(+1) when $19 is true
609trace_line                     TraceLine(119) when $13 is true
610trace_line                     TraceLine(122) when $13 is true
611splat_4_constants              result₄ = 0x00000009 (1.261169e-44)
612trace_var                      TraceVar(result₄) when $13 is true
613copy_constant                  $20 = 0
614copy_slot_unmasked             $21 = $13
615copy_slot_masked               $20 = Mask($21)
616trace_scope                    TraceScope(+1) when $20 is true
617branch_if_no_lanes_active      branch_if_no_lanes_active +15 (label 42 at #616)
618trace_line                     TraceLine(123) when $13 is true
619copy_constant                  i₁₁ = 0x00000001 (1.401298e-45)
620trace_var                      TraceVar(i₁₁) when $13 is true
621label                          label 0x0000002B
622copy_constant                  $21 = 0
623copy_slot_unmasked             $22 = $13
624copy_slot_masked               $21 = Mask($22)
625trace_scope                    TraceScope(+1) when $21 is true
626trace_line                     TraceLine(124) when $13 is true
627copy_4_slots_unmasked          $22..25 = result₄(1..3), i₁₁
628copy_4_slots_masked            result₄ = Mask($22..25)
629trace_var                      TraceVar(result₄) when $13 is true
630trace_scope                    TraceScope(-1) when $21 is true
631trace_line                     TraceLine(123) when $13 is true
632label                          label 0x0000002A
633trace_scope                    TraceScope(-1) when $20 is true
634trace_line                     TraceLine(126) when $13 is true
635copy_4_slots_unmasked          $20..23 = result₄
636copy_4_immutables_unmasked     $24..27 = i8..11 [0x00000009 (1.261169e-44), 0x00000009 (1.261169e-44), 0x00000009 (1.261169e-44), 0x00000001 (1.401298e-45)]
637cmpeq_4_ints                   $20..23 = equal($20..23, $24..27)
638bitwise_and_2_ints             $20..21 &= $22..23
639bitwise_and_int                $20 &= $21
640copy_slot_masked               [loop_operator_eq].result = Mask($20)
641trace_var                      TraceVar([loop_operator_eq].result) when $13 is true
642trace_scope                    TraceScope(-1) when $19 is true
643trace_exit                     TraceExit(bool loop_operator_eq()) when $13 is true
644copy_slot_unmasked             $19 = [loop_operator_eq].result
645label                          label 0x00000029
646copy_slot_masked               $18 = Mask($19)
647label                          label 0x00000002
648load_condition_mask            CondMask = $28
649copy_constant                  $1 = 0
650merge_condition_mask           CondMask = $17 & $18
651branch_if_no_lanes_active      branch_if_no_lanes_active +76 (label 1 at #711)
652trace_enter                    TraceEnter(bool loop_operator_ne()) when $13 is true
653copy_constant                  $2 = 0
654copy_slot_unmasked             $3 = $13
655copy_slot_masked               $2 = Mask($3)
656trace_scope                    TraceScope(+1) when $2 is true
657trace_line                     TraceLine(105) when $13 is true
658trace_line                     TraceLine(108) when $13 is true
659splat_4_constants              result₅ = 0x00000008 (1.121039e-44)
660trace_var                      TraceVar(result₅) when $13 is true
661copy_constant                  $3 = 0
662copy_slot_unmasked             $4 = $13
663copy_slot_masked               $3 = Mask($4)
664trace_scope                    TraceScope(+1) when $3 is true
665branch_if_no_lanes_active      branch_if_no_lanes_active +17 (label 45 at #666)
666trace_line                     TraceLine(109) when $13 is true
667copy_constant                  i₁₂ = 0x00000001 (1.401298e-45)
668trace_var                      TraceVar(i₁₂) when $13 is true
669label                          label 0x0000002E
670copy_constant                  $4 = 0
671copy_slot_unmasked             $5 = $13
672copy_slot_masked               $4 = Mask($5)
673trace_scope                    TraceScope(+1) when $4 is true
674trace_line                     TraceLine(109) when $13 is true
675copy_4_slots_unmasked          $5..8 = result₅
676splat_4_constants              $9..12 = 0x00000001 (1.401298e-45)
677add_4_ints                     $5..8 += $9..12
678copy_4_slots_masked            result₅ = Mask($5..8)
679trace_var                      TraceVar(result₅) when $13 is true
680trace_scope                    TraceScope(-1) when $4 is true
681trace_line                     TraceLine(109) when $13 is true
682label                          label 0x0000002D
683trace_scope                    TraceScope(-1) when $3 is true
684copy_constant                  $3 = 0
685copy_slot_unmasked             $4 = $13
686copy_slot_masked               $3 = Mask($4)
687trace_scope                    TraceScope(+1) when $3 is true
688branch_if_no_lanes_active      branch_if_no_lanes_active +24 (label 47 at #696)
689trace_line                     TraceLine(111) when $13 is true
690copy_constant                  i₁₃ = 0x00000001 (1.401298e-45)
691trace_var                      TraceVar(i₁₃) when $13 is true
692label                          label 0x00000030
693copy_constant                  $4 = 0
694copy_slot_unmasked             $5 = $13
695copy_slot_masked               $4 = Mask($5)
696trace_scope                    TraceScope(+1) when $4 is true
697trace_line                     TraceLine(112) when $13 is true
698copy_3_slots_unmasked          $5..7 = result₅(1..3)
699copy_slot_unmasked             $8 = i₁₃
700copy_4_slots_masked            result₅ = Mask($5..8)
701trace_var                      TraceVar(result₅) when $13 is true
702trace_scope                    TraceScope(-1) when $4 is true
703trace_line                     TraceLine(111) when $13 is true
704copy_slot_unmasked             $4 = i₁₃
705add_imm_int                    $4 += 0x00000001
706copy_slot_masked               i₁₃ = Mask($4)
707trace_var                      TraceVar(i₁₃) when $13 is true
708copy_slot_unmasked             $4 = i₁₃
709cmpne_imm_int                  $4 = notEqual($4, 0x00000004)
710stack_rewind
711branch_if_no_active_lanes_eq   branch -19 (label 48 at #676) if no lanes of $4 == 0
712label                          label 0x0000002F
713trace_scope                    TraceScope(-1) when $3 is true
714trace_line                     TraceLine(114) when $13 is true
715copy_4_slots_unmasked          $3..6 = result₅
716copy_4_immutables_unmasked     $7..10 = i0..3 [0x00000009 (1.261169e-44), 0x00000001 (1.401298e-45), 0x00000002 (2.802597e-45), 0x00000003 (4.203895e-45)]
717cmpeq_4_ints                   $3..6 = equal($3..6, $7..10)
718bitwise_and_2_ints             $3..4 &= $5..6
719bitwise_and_int                $3 &= $4
720copy_slot_masked               [loop_operator_ne].result = Mask($3)
721trace_var                      TraceVar([loop_operator_ne].result) when $13 is true
722trace_scope                    TraceScope(-1) when $2 is true
723trace_exit                     TraceExit(bool loop_operator_ne()) when $13 is true
724copy_slot_unmasked             $2 = [loop_operator_ne].result
725label                          label 0x0000002C
726copy_slot_masked               $1 = Mask($2)
727label                          label 0x00000001
728load_condition_mask            CondMask = $17
729swizzle_4                      $1..4 = ($1..4).xxxx
730copy_4_uniforms                $5..8 = colorRed
731copy_4_uniforms                $9..12 = colorGreen
732mix_4_ints                     $1..4 = mix($5..8, $9..12, $1..4)
733copy_4_slots_unmasked          [main].result = $1..4
734trace_var                      TraceVar([main].result) when $13 is true
735trace_scope                    TraceScope(-1) when $0 is true
736trace_exit                     TraceExit(half4 main(float2 pos)) when $13 is true
737load_src                       src.rgba = [main].result
738