xref: /aosp_15_r20/external/skia/tests/sksl/runtime/SwitchWithLoops.skrp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1125 instructions
2
3store_src_rg                   coords = src.rg
4init_lane_masks                CondMask = LoopMask = RetMask = true
5copy_uniform                   $0 = colorGreen(1)
6cast_to_int_from_float         $0 = FloatToInt($0)
7copy_slot_unmasked             x = $0
8copy_constant                  _0_val = 0
9store_loop_mask                $0 = LoopMask
10copy_slot_unmasked             $1 = x
11store_loop_mask                $2 = LoopMask
12mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
13case_op                        if ($1 == 0x00000001) { LoopMask = true; $2 = false; }
14branch_if_no_lanes_active      branch_if_no_lanes_active +21 (label 1 at #33)
15copy_constant                  _1_i = 0
16store_loop_mask                $3 = LoopMask
17jump                           jump +10 (label 3 at #25)
18label                          label 0x00000004
19copy_slot_unmasked             $4 = _0_val
20add_imm_int                    $4 += 0x00000001
21copy_slot_masked               _0_val = Mask($4)
22branch_if_all_lanes_active     branch_if_all_lanes_active +11 (label 2 at #31)
23mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
24copy_slot_unmasked             $4 = _1_i
25add_imm_int                    $4 += 0x00000001
26copy_slot_masked               _1_i = Mask($4)
27label                          label 0x00000003
28copy_slot_unmasked             $4 = _1_i
29cmplt_imm_int                  $4 = lessThan($4, 0x0000000A)
30merge_loop_mask                LoopMask &= $4
31stack_rewind
32branch_if_any_lanes_active     branch_if_any_lanes_active -14 (label 4 at #16)
33label                          label 0x00000002
34load_loop_mask                 LoopMask = $3
35label                          label 0x00000001
36reenable_loop_mask             LoopMask |= $2
37branch_if_no_lanes_active      branch_if_no_lanes_active +4 (label 5 at #39)
38copy_slot_unmasked             $2 = _0_val
39add_imm_int                    $2 += 0x00000001
40copy_slot_masked               _0_val = Mask($2)
41label                          label 0x00000005
42label                          label 0
43load_loop_mask                 LoopMask = $0
44store_condition_mask           $12 = CondMask
45store_condition_mask           $19 = CondMask
46copy_slot_unmasked             $20 = _0_val
47cmpeq_imm_int                  $20 = equal($20, 0x00000002)
48copy_constant                  $13 = 0
49merge_condition_mask           CondMask = $19 & $20
50branch_if_no_lanes_active      branch_if_no_lanes_active +42 (label 8 at #90)
51copy_constant                  val = 0
52store_loop_mask                $14 = LoopMask
53copy_slot_unmasked             $15 = x
54store_loop_mask                $16 = LoopMask
55mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
56case_op                        if ($15 == 0x00000001) { LoopMask = true; $16 = false; }
57branch_if_no_lanes_active      branch_if_no_lanes_active +22 (label 11 at #77)
58copy_constant                  i = 0
59store_loop_mask                $17 = LoopMask
60jump                           jump +11 (label 13 at #69)
61label                          label 0x0000000E
62copy_constant                  $21 = 0
63copy_slot_unmasked             $18 = val
64add_imm_int                    $18 += 0x00000001
65copy_slot_masked               val = Mask($18)
66continue_op                    $21 |= Mask(0xFFFFFFFF); LoopMask &= ~(CondMask & LoopMask & RetMask)
67reenable_loop_mask             LoopMask |= $21
68copy_slot_unmasked             $18 = i
69add_imm_int                    $18 += 0x00000001
70copy_slot_masked               i = Mask($18)
71label                          label 0x0000000D
72copy_slot_unmasked             $18 = i
73cmplt_imm_int                  $18 = lessThan($18, 0x0000000A)
74merge_loop_mask                LoopMask &= $18
75stack_rewind
76branch_if_any_lanes_active     branch_if_any_lanes_active -15 (label 14 at #59)
77label                          label 0x0000000C
78load_loop_mask                 LoopMask = $17
79label                          label 0x0000000B
80reenable_loop_mask             LoopMask |= $16
81branch_if_no_lanes_active      branch_if_no_lanes_active +4 (label 15 at #83)
82copy_slot_unmasked             $16 = val
83add_imm_int                    $16 += 0x00000001
84copy_slot_masked               val = Mask($16)
85label                          label 0x0000000F
86label                          label 0x0000000A
87load_loop_mask                 LoopMask = $14
88copy_slot_unmasked             $14 = val
89cmpeq_imm_int                  $14 = equal($14, 0x0000000B)
90label                          label 0x00000009
91copy_slot_masked               $13 = Mask($14)
92label                          label 0x00000008
93load_condition_mask            CondMask = $19
94copy_constant                  $0 = 0
95merge_condition_mask           CondMask = $12 & $13
96branch_if_no_lanes_active      branch_if_no_lanes_active +47 (label 7 at #141)
97store_return_mask              $1 = RetMask
98splat_2_constants              val₁, i₁ = 0
99store_loop_mask                $2 = LoopMask
100jump                           jump +28 (label 18 at #126)
101label                          label 0x00000013
102store_loop_mask                $3 = LoopMask
103copy_slot_unmasked             $4 = x
104store_loop_mask                $5 = LoopMask
105mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
106case_op                        if ($4 == 0x00000001) { LoopMask = true; $5 = false; }
107branch_if_no_lanes_active      branch_if_no_lanes_active +6 (label 21 at #111)
108copy_slot_unmasked             $6 = val₁
109add_imm_int                    $6 += 0x00000001
110copy_slot_masked               val₁ = Mask($6)
111branch_if_all_lanes_active     branch_if_all_lanes_active +9 (label 20 at #118)
112mask_off_loop_mask             LoopMask &= ~(CondMask & LoopMask & RetMask)
113label                          label 0x00000015
114reenable_loop_mask             LoopMask |= $5
115branch_if_no_lanes_active      branch_if_no_lanes_active +4 (label 22 at #117)
116copy_constant                  $5 = 0
117copy_slot_masked               [loop_with_break_in_switch].result = Mask($5)
118mask_off_return_mask           RetMask &= ~(CondMask & LoopMask & RetMask)
119label                          label 0x00000016
120label                          label 0x00000014
121load_loop_mask                 LoopMask = $3
122copy_slot_unmasked             $3 = val₁
123add_imm_int                    $3 += 0x00000001
124copy_slot_masked               val₁ = Mask($3)
125copy_slot_unmasked             $3 = i₁
126add_imm_int                    $3 += 0x00000001
127copy_slot_masked               i₁ = Mask($3)
128label                          label 0x00000012
129copy_slot_unmasked             $3 = i₁
130cmplt_imm_int                  $3 = lessThan($3, 0x0000000A)
131merge_loop_mask                LoopMask &= $3
132stack_rewind
133branch_if_any_lanes_active     branch_if_any_lanes_active -32 (label 19 at #99)
134label                          label 0x00000011
135load_loop_mask                 LoopMask = $2
136copy_slot_unmasked             $2 = val₁
137cmpeq_imm_int                  $2 = equal($2, 0x00000014)
138copy_slot_masked               [loop_with_break_in_switch].result = Mask($2)
139load_return_mask               RetMask = $1
140copy_slot_unmasked             $1 = [loop_with_break_in_switch].result
141label                          label 0x00000010
142copy_slot_masked               $0 = Mask($1)
143label                          label 0x00000007
144load_condition_mask            CondMask = $12
145swizzle_4                      $0..3 = ($0..3).xxxx
146copy_4_uniforms                $4..7 = colorRed
147copy_4_uniforms                $8..11 = colorGreen
148mix_4_ints                     $0..3 = mix($4..7, $8..11, $0..3)
149load_src                       src.rgba = $0..3
150