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