xref: /aosp_15_r20/external/skia/tests/sksl/runtime/RecursiveComparison_Arrays.skrp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1387 instructions
2
3[immutable slots]
4i0 = 0xFFFFFFFF
5i1 = 0
6
7store_src_rg                   coords = src.rg
8init_lane_masks                CondMask = LoopMask = RetMask = true
9copy_uniform                   $0 = colorGreen(0)
10copy_uniform                   $1 = colorGreen(2)
11div_float                      $0 /= $1
12copy_slot_unmasked             NAN1 = $0
13copy_uniform                   $0 = colorGreen(2)
14copy_uniform                   $1 = colorGreen(0)
15div_float                      $0 /= $1
16copy_slot_unmasked             NAN2 = $0
17copy_uniform                   $0 = colorGreen(0)
18copy_uniform                   $1 = colorGreen(2)
19mul_float                      $0 *= $1
20copy_slot_unmasked             ZP = $0
21copy_uniform                   $0 = colorGreen(0)
22bitwise_xor_imm_int            $0 ^= 0x80000000
23copy_uniform                   $1 = colorGreen(2)
24mul_float                      $0 *= $1
25copy_slot_unmasked             ZM = $0
26copy_uniform                   $0 = colorGreen(1)
27mul_imm_float                  $0 *= 0x42280000 (42.0)
28copy_slot_unmasked             F42 = $0
29copy_uniform                   $0 = colorGreen(1)
30mul_imm_float                  $0 *= 0x422C0000 (43.0)
31copy_slot_unmasked             F43 = $0
32copy_uniform                   $0 = colorGreen(1)
33mul_imm_float                  $0 *= 0x42300000 (44.0)
34copy_slot_unmasked             F44 = $0
35copy_uniform                   $0 = colorGreen(0)
36add_imm_float                  $0 += 0x3F800000 (1.0)
37copy_slot_unmasked             _0_one = $0
38splat_3_constants              _1_a[0], _1_a[1], _1_a[2] = 0
39copy_slot_unmasked             _1_a[0] = F42
40copy_slot_unmasked             _1_a[1] = ZM
41copy_slot_unmasked             _1_a[2] = ZP
42splat_3_constants              _2_b[0], _2_b[1], _2_b[2] = 0
43copy_slot_unmasked             $0 = F42
44copy_slot_unmasked             $1 = _0_one
45mul_float                      $0 *= $1
46copy_slot_unmasked             _2_b[0] = $0
47copy_slot_unmasked             $0 = ZM
48copy_slot_unmasked             $1 = _0_one
49mul_float                      $0 *= $1
50copy_slot_unmasked             _2_b[1] = $0
51copy_slot_unmasked             $0 = ZP
52copy_slot_unmasked             $1 = _0_one
53mul_float                      $0 *= $1
54copy_slot_unmasked             _2_b[2] = $0
55store_condition_mask           $12 = CondMask
56store_condition_mask           $21 = CondMask
57store_condition_mask           $30 = CondMask
58store_condition_mask           $39 = CondMask
59store_condition_mask           $48 = CondMask
60store_condition_mask           $57 = CondMask
61store_condition_mask           $66 = CondMask
62store_condition_mask           $74 = CondMask
63copy_constant                  $75 = 0xFFFFFFFF
64copy_4_slots_unmasked          $67..70 = _1_a[0], _1_a[1], _1_a[2], _2_b[0]
65copy_2_slots_unmasked          $71..72 = _2_b[1], _2_b[2]
66cmpne_3_floats                 $67..69 = notEqual($67..69, $70..72)
67bitwise_or_int                 $68 |= $69
68bitwise_or_int                 $67 |= $68
69merge_condition_mask           CondMask = $74 & $75
70branch_if_no_lanes_active      branch_if_no_lanes_active +7 (label 8 at #71)
71copy_4_slots_unmasked          $68..71 = _1_a[0], _1_a[1], _1_a[2], _2_b[0]
72copy_2_slots_unmasked          $72..73 = _2_b[1], _2_b[2]
73cmpeq_3_floats                 $68..70 = equal($68..70, $71..73)
74bitwise_and_int                $69 &= $70
75bitwise_and_int                $68 &= $69
76copy_slot_masked               $67 = Mask($68)
77label                          label 0x00000008
78load_condition_mask            CondMask = $74
79copy_constant                  $58 = 0
80merge_condition_mask           CondMask = $66 & $67
81branch_if_no_lanes_active      branch_if_no_lanes_active +45 (label 7 at #120)
82copy_constant                  eq = 0
83copy_uniform                   $59 = colorGreen(0)
84add_imm_float                  $59 += 0x3F800000 (1.0)
85copy_slot_unmasked             one = $59
86splat_3_constants              a[0], a[1], a[2] = 0
87copy_slot_unmasked             $59 = F42
88copy_slot_masked               a[0] = Mask($59)
89copy_slot_unmasked             $59 = ZM
90copy_slot_masked               a[1] = Mask($59)
91copy_slot_unmasked             $59 = ZP
92copy_slot_masked               a[2] = Mask($59)
93splat_3_constants              b[0], b[1], b[2] = 0
94copy_slot_unmasked             $59 = F42
95copy_slot_unmasked             $60 = one
96mul_float                      $59 *= $60
97copy_slot_masked               b[0] = Mask($59)
98copy_slot_unmasked             $59 = ZM
99copy_slot_unmasked             $60 = one
100mul_float                      $59 *= $60
101copy_slot_masked               b[1] = Mask($59)
102copy_slot_unmasked             $59 = ZP
103copy_slot_unmasked             $60 = one
104mul_float                      $59 *= $60
105copy_slot_masked               b[2] = Mask($59)
106store_condition_mask           $74 = CondMask
107copy_slot_unmasked             $75 = eq
108copy_4_slots_unmasked          $59..62 = a[0], a[1], a[2], b[0]
109copy_2_slots_unmasked          $63..64 = b[1], b[2]
110cmpne_3_floats                 $59..61 = notEqual($59..61, $62..64)
111bitwise_or_int                 $60 |= $61
112bitwise_or_int                 $59 |= $60
113merge_condition_mask           CondMask = $74 & $75
114branch_if_no_lanes_active      branch_if_no_lanes_active +7 (label 10 at #115)
115copy_4_slots_unmasked          $60..63 = a[0], a[1], a[2], b[0]
116copy_2_slots_unmasked          $64..65 = b[1], b[2]
117cmpeq_3_floats                 $60..62 = equal($60..62, $63..65)
118bitwise_and_int                $61 &= $62
119bitwise_and_int                $60 &= $61
120copy_slot_masked               $59 = Mask($60)
121label                          label 0x0000000A
122load_condition_mask            CondMask = $74
123label                          label 0x00000009
124bitwise_xor_imm_int            $59 ^= 0xFFFFFFFF
125copy_slot_masked               $58 = Mask($59)
126label                          label 0x00000007
127load_condition_mask            CondMask = $66
128copy_constant                  $49 = 0
129merge_condition_mask           CondMask = $57 & $58
130branch_if_no_lanes_active      branch_if_no_lanes_active +44 (label 6 at #168)
131copy_constant                  eq = 0
132copy_uniform                   $50 = colorGreen(0)
133add_imm_float                  $50 += 0x3F800000 (1.0)
134copy_slot_unmasked             one = $50
135splat_3_constants              a[0], a[1], a[2] = 0
136copy_slot_unmasked             $50 = F42
137copy_slot_masked               a[0] = Mask($50)
138copy_slot_unmasked             $50 = NAN1
139copy_slot_masked               a[1] = Mask($50)
140copy_slot_unmasked             $50 = NAN2
141copy_slot_masked               a[2] = Mask($50)
142splat_3_constants              b[0], b[1], b[2] = 0
143copy_slot_unmasked             $50 = F42
144copy_slot_unmasked             $51 = one
145mul_float                      $50 *= $51
146copy_slot_masked               b[0] = Mask($50)
147copy_slot_unmasked             $50 = NAN1
148copy_slot_unmasked             $51 = one
149mul_float                      $50 *= $51
150copy_slot_masked               b[1] = Mask($50)
151copy_slot_unmasked             $50 = NAN2
152copy_slot_unmasked             $51 = one
153mul_float                      $50 *= $51
154copy_slot_masked               b[2] = Mask($50)
155store_condition_mask           $66 = CondMask
156copy_slot_unmasked             $67 = eq
157copy_4_slots_unmasked          $50..53 = a[0], a[1], a[2], b[0]
158copy_2_slots_unmasked          $54..55 = b[1], b[2]
159cmpne_3_floats                 $50..52 = notEqual($50..52, $53..55)
160bitwise_or_int                 $51 |= $52
161bitwise_or_int                 $50 |= $51
162merge_condition_mask           CondMask = $66 & $67
163branch_if_no_lanes_active      branch_if_no_lanes_active +7 (label 12 at #164)
164copy_4_slots_unmasked          $51..54 = a[0], a[1], a[2], b[0]
165copy_2_slots_unmasked          $55..56 = b[1], b[2]
166cmpeq_3_floats                 $51..53 = equal($51..53, $54..56)
167bitwise_and_int                $52 &= $53
168bitwise_and_int                $51 &= $52
169copy_slot_masked               $50 = Mask($51)
170label                          label 0x0000000C
171load_condition_mask            CondMask = $66
172label                          label 0x0000000B
173copy_slot_masked               $49 = Mask($50)
174label                          label 0x00000006
175load_condition_mask            CondMask = $57
176copy_constant                  $40 = 0
177merge_condition_mask           CondMask = $48 & $49
178branch_if_no_lanes_active      branch_if_no_lanes_active +45 (label 5 at #217)
179copy_constant                  eq = 0xFFFFFFFF
180copy_uniform                   $41 = colorGreen(0)
181add_imm_float                  $41 += 0x3F800000 (1.0)
182copy_slot_unmasked             one = $41
183splat_3_constants              a[0], a[1], a[2] = 0
184copy_slot_unmasked             $41 = F42
185copy_slot_masked               a[0] = Mask($41)
186copy_slot_unmasked             $41 = NAN1
187copy_slot_masked               a[1] = Mask($41)
188copy_slot_unmasked             $41 = NAN2
189copy_slot_masked               a[2] = Mask($41)
190splat_3_constants              b[0], b[1], b[2] = 0
191copy_slot_unmasked             $41 = F42
192copy_slot_unmasked             $42 = one
193mul_float                      $41 *= $42
194copy_slot_masked               b[0] = Mask($41)
195copy_slot_unmasked             $41 = NAN1
196copy_slot_unmasked             $42 = one
197mul_float                      $41 *= $42
198copy_slot_masked               b[1] = Mask($41)
199copy_slot_unmasked             $41 = NAN2
200copy_slot_unmasked             $42 = one
201mul_float                      $41 *= $42
202copy_slot_masked               b[2] = Mask($41)
203store_condition_mask           $57 = CondMask
204copy_slot_unmasked             $58 = eq
205copy_4_slots_unmasked          $41..44 = a[0], a[1], a[2], b[0]
206copy_2_slots_unmasked          $45..46 = b[1], b[2]
207cmpne_3_floats                 $41..43 = notEqual($41..43, $44..46)
208bitwise_or_int                 $42 |= $43
209bitwise_or_int                 $41 |= $42
210merge_condition_mask           CondMask = $57 & $58
211branch_if_no_lanes_active      branch_if_no_lanes_active +7 (label 14 at #212)
212copy_4_slots_unmasked          $42..45 = a[0], a[1], a[2], b[0]
213copy_2_slots_unmasked          $46..47 = b[1], b[2]
214cmpeq_3_floats                 $42..44 = equal($42..44, $45..47)
215bitwise_and_int                $43 &= $44
216bitwise_and_int                $42 &= $43
217copy_slot_masked               $41 = Mask($42)
218label                          label 0x0000000E
219load_condition_mask            CondMask = $57
220label                          label 0x0000000D
221bitwise_xor_imm_int            $41 ^= 0xFFFFFFFF
222copy_slot_masked               $40 = Mask($41)
223label                          label 0x00000005
224load_condition_mask            CondMask = $48
225copy_constant                  $31 = 0
226merge_condition_mask           CondMask = $39 & $40
227branch_if_no_lanes_active      branch_if_no_lanes_active +42 (label 4 at #263)
228copy_constant                  eq₁ = 0
229copy_uniform                   $32 = colorGreen(0)
230add_imm_float                  $32 += 0x40000000 (2.0)
231copy_slot_unmasked             two = $32
232splat_3_constants              a[0]₁, a[1]₁, a[2]₁ = 0
233copy_slot_unmasked             $32 = F42
234copy_slot_masked               a[0]₁ = Mask($32)
235copy_slot_unmasked             $32 = F43
236copy_slot_masked               a[1]₁ = Mask($32)
237copy_slot_unmasked             $32 = F44
238copy_slot_masked               a[2]₁ = Mask($32)
239splat_3_constants              b[0]₁, b[1]₁, b[2]₁ = 0
240copy_slot_unmasked             $32 = F42
241copy_slot_unmasked             $33 = two
242mul_float                      $32 *= $33
243copy_slot_masked               b[0]₁ = Mask($32)
244copy_slot_unmasked             $32 = F43
245copy_slot_unmasked             $33 = two
246mul_float                      $32 *= $33
247copy_slot_masked               b[1]₁ = Mask($32)
248copy_slot_unmasked             $32 = F44
249copy_slot_masked               b[2]₁ = Mask($32)
250store_condition_mask           $48 = CondMask
251copy_slot_unmasked             $49 = eq₁
252copy_4_slots_unmasked          $32..35 = a[0]₁, a[1]₁, a[2]₁, b[0]₁
253copy_2_slots_unmasked          $36..37 = b[1]₁, b[2]₁
254cmpne_3_floats                 $32..34 = notEqual($32..34, $35..37)
255bitwise_or_int                 $33 |= $34
256bitwise_or_int                 $32 |= $33
257merge_condition_mask           CondMask = $48 & $49
258branch_if_no_lanes_active      branch_if_no_lanes_active +7 (label 16 at #259)
259copy_4_slots_unmasked          $33..36 = a[0]₁, a[1]₁, a[2]₁, b[0]₁
260copy_2_slots_unmasked          $37..38 = b[1]₁, b[2]₁
261cmpeq_3_floats                 $33..35 = equal($33..35, $36..38)
262bitwise_and_int                $34 &= $35
263bitwise_and_int                $33 &= $34
264copy_slot_masked               $32 = Mask($33)
265label                          label 0x00000010
266load_condition_mask            CondMask = $48
267label                          label 0x0000000F
268copy_slot_masked               $31 = Mask($32)
269label                          label 0x00000004
270load_condition_mask            CondMask = $39
271copy_constant                  $22 = 0
272merge_condition_mask           CondMask = $30 & $31
273branch_if_no_lanes_active      branch_if_no_lanes_active +43 (label 3 at #310)
274copy_constant                  eq₁ = 0xFFFFFFFF
275copy_uniform                   $23 = colorGreen(0)
276add_imm_float                  $23 += 0x40000000 (2.0)
277copy_slot_unmasked             two = $23
278splat_3_constants              a[0]₁, a[1]₁, a[2]₁ = 0
279copy_slot_unmasked             $23 = F42
280copy_slot_masked               a[0]₁ = Mask($23)
281copy_slot_unmasked             $23 = F43
282copy_slot_masked               a[1]₁ = Mask($23)
283copy_slot_unmasked             $23 = F44
284copy_slot_masked               a[2]₁ = Mask($23)
285splat_3_constants              b[0]₁, b[1]₁, b[2]₁ = 0
286copy_slot_unmasked             $23 = F42
287copy_slot_unmasked             $24 = two
288mul_float                      $23 *= $24
289copy_slot_masked               b[0]₁ = Mask($23)
290copy_slot_unmasked             $23 = F43
291copy_slot_unmasked             $24 = two
292mul_float                      $23 *= $24
293copy_slot_masked               b[1]₁ = Mask($23)
294copy_slot_unmasked             $23 = F44
295copy_slot_masked               b[2]₁ = Mask($23)
296store_condition_mask           $39 = CondMask
297copy_slot_unmasked             $40 = eq₁
298copy_4_slots_unmasked          $23..26 = a[0]₁, a[1]₁, a[2]₁, b[0]₁
299copy_2_slots_unmasked          $27..28 = b[1]₁, b[2]₁
300cmpne_3_floats                 $23..25 = notEqual($23..25, $26..28)
301bitwise_or_int                 $24 |= $25
302bitwise_or_int                 $23 |= $24
303merge_condition_mask           CondMask = $39 & $40
304branch_if_no_lanes_active      branch_if_no_lanes_active +7 (label 18 at #305)
305copy_4_slots_unmasked          $24..27 = a[0]₁, a[1]₁, a[2]₁, b[0]₁
306copy_2_slots_unmasked          $28..29 = b[1]₁, b[2]₁
307cmpeq_3_floats                 $24..26 = equal($24..26, $27..29)
308bitwise_and_int                $25 &= $26
309bitwise_and_int                $24 &= $25
310copy_slot_masked               $23 = Mask($24)
311label                          label 0x00000012
312load_condition_mask            CondMask = $39
313label                          label 0x00000011
314bitwise_xor_imm_int            $23 ^= 0xFFFFFFFF
315copy_slot_masked               $22 = Mask($23)
316label                          label 0x00000003
317load_condition_mask            CondMask = $30
318copy_constant                  $13 = 0
319merge_condition_mask           CondMask = $21 & $22
320branch_if_no_lanes_active      branch_if_no_lanes_active +42 (label 2 at #356)
321copy_constant                  eq₁ = 0
322copy_uniform                   $14 = colorGreen(0)
323add_imm_float                  $14 += 0x40000000 (2.0)
324copy_slot_unmasked             two = $14
325splat_3_constants              a[0]₁, a[1]₁, a[2]₁ = 0
326copy_slot_unmasked             $14 = NAN1
327copy_slot_masked               a[0]₁ = Mask($14)
328copy_slot_unmasked             $14 = ZM
329copy_slot_masked               a[1]₁ = Mask($14)
330copy_slot_unmasked             $14 = ZP
331copy_slot_masked               a[2]₁ = Mask($14)
332splat_3_constants              b[0]₁, b[1]₁, b[2]₁ = 0
333copy_slot_unmasked             $14 = NAN1
334copy_slot_unmasked             $15 = two
335mul_float                      $14 *= $15
336copy_slot_masked               b[0]₁ = Mask($14)
337copy_slot_unmasked             $14 = ZM
338copy_slot_unmasked             $15 = two
339mul_float                      $14 *= $15
340copy_slot_masked               b[1]₁ = Mask($14)
341copy_slot_unmasked             $14 = ZP
342copy_slot_masked               b[2]₁ = Mask($14)
343store_condition_mask           $30 = CondMask
344copy_slot_unmasked             $31 = eq₁
345copy_4_slots_unmasked          $14..17 = a[0]₁, a[1]₁, a[2]₁, b[0]₁
346copy_2_slots_unmasked          $18..19 = b[1]₁, b[2]₁
347cmpne_3_floats                 $14..16 = notEqual($14..16, $17..19)
348bitwise_or_int                 $15 |= $16
349bitwise_or_int                 $14 |= $15
350merge_condition_mask           CondMask = $30 & $31
351branch_if_no_lanes_active      branch_if_no_lanes_active +7 (label 20 at #352)
352copy_4_slots_unmasked          $15..18 = a[0]₁, a[1]₁, a[2]₁, b[0]₁
353copy_2_slots_unmasked          $19..20 = b[1]₁, b[2]₁
354cmpeq_3_floats                 $15..17 = equal($15..17, $18..20)
355bitwise_and_int                $16 &= $17
356bitwise_and_int                $15 &= $16
357copy_slot_masked               $14 = Mask($15)
358label                          label 0x00000014
359load_condition_mask            CondMask = $30
360label                          label 0x00000013
361copy_slot_masked               $13 = Mask($14)
362label                          label 0x00000002
363load_condition_mask            CondMask = $21
364copy_constant                  $0 = 0
365merge_condition_mask           CondMask = $12 & $13
366branch_if_no_lanes_active      branch_if_no_lanes_active +43 (label 1 at #403)
367copy_constant                  eq₁ = 0xFFFFFFFF
368copy_uniform                   $1 = colorGreen(0)
369add_imm_float                  $1 += 0x40000000 (2.0)
370copy_slot_unmasked             two = $1
371splat_3_constants              a[0]₁, a[1]₁, a[2]₁ = 0
372copy_slot_unmasked             $1 = NAN1
373copy_slot_masked               a[0]₁ = Mask($1)
374copy_slot_unmasked             $1 = ZM
375copy_slot_masked               a[1]₁ = Mask($1)
376copy_slot_unmasked             $1 = ZP
377copy_slot_masked               a[2]₁ = Mask($1)
378splat_3_constants              b[0]₁, b[1]₁, b[2]₁ = 0
379copy_slot_unmasked             $1 = NAN1
380copy_slot_unmasked             $2 = two
381mul_float                      $1 *= $2
382copy_slot_masked               b[0]₁ = Mask($1)
383copy_slot_unmasked             $1 = ZM
384copy_slot_unmasked             $2 = two
385mul_float                      $1 *= $2
386copy_slot_masked               b[1]₁ = Mask($1)
387copy_slot_unmasked             $1 = ZP
388copy_slot_masked               b[2]₁ = Mask($1)
389store_condition_mask           $21 = CondMask
390copy_slot_unmasked             $22 = eq₁
391copy_4_slots_unmasked          $1..4 = a[0]₁, a[1]₁, a[2]₁, b[0]₁
392copy_2_slots_unmasked          $5..6 = b[1]₁, b[2]₁
393cmpne_3_floats                 $1..3 = notEqual($1..3, $4..6)
394bitwise_or_int                 $2 |= $3
395bitwise_or_int                 $1 |= $2
396merge_condition_mask           CondMask = $21 & $22
397branch_if_no_lanes_active      branch_if_no_lanes_active +7 (label 22 at #398)
398copy_4_slots_unmasked          $2..5 = a[0]₁, a[1]₁, a[2]₁, b[0]₁
399copy_2_slots_unmasked          $6..7 = b[1]₁, b[2]₁
400cmpeq_3_floats                 $2..4 = equal($2..4, $5..7)
401bitwise_and_int                $3 &= $4
402bitwise_and_int                $2 &= $3
403copy_slot_masked               $1 = Mask($2)
404label                          label 0x00000016
405load_condition_mask            CondMask = $21
406label                          label 0x00000015
407bitwise_xor_imm_int            $1 ^= 0xFFFFFFFF
408copy_slot_masked               $0 = Mask($1)
409label                          label 0x00000001
410load_condition_mask            CondMask = $12
411swizzle_4                      $0..3 = ($0..3).xxxx
412copy_4_uniforms                $4..7 = colorRed
413copy_4_uniforms                $8..11 = colorGreen
414mix_4_ints                     $0..3 = mix($4..7, $8..11, $0..3)
415load_src                       src.rgba = $0..3
416