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