xref: /aosp_15_r20/external/skia/tests/sksl/runtime/ArrayIndexing.skrp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1190 instructions
2
3store_device_xy01              $12..15 = DeviceCoords.xy01
4cmpeq_imm_float                $12 = equal($12, 0x3F000000 (0.5))
5cmpeq_imm_float                $13 = equal($13, 0x3F000000 (0.5))
6bitwise_and_int                $12 &= $13
7store_src_rg                   xy = src.rg
8init_lane_masks                CondMask = LoopMask = RetMask = true
9copy_4_uniforms                u1[0], u1[1], u1[2], u1[3] = u1[0], u1[1], u1[2], u1[3]
10trace_var                      TraceVar(u1[0], u1[1], u1[2], u1[3]) when $12 is true
11copy_4_uniforms                u2[0], u2[1], u2[2], u2[3] = u2[0], u2[1], u2[2], u2[3]
12trace_var                      TraceVar(u2[0], u2[1], u2[2], u2[3]) when $12 is true
13copy_4_uniforms                u3[0], u3[1], u3[2], u3[3] = u3[0], u3[1], u3[2], u3[3]
14trace_var                      TraceVar(u3[0], u3[1], u3[2], u3[3]) when $12 is true
15copy_4_uniforms                u4[0], u4[1], u4[2], u4[3] = u4[0], u4[1], u4[2], u4[3]
16copy_4_uniforms                u4[4], u4[5], u4[6], u4[7] = u4[4], u4[5], u4[6], u4[7]
17copy_4_uniforms                u4[8], u4[9], u4[10], u4[11] = u4[8], u4[9], u4[10], u4[11]
18copy_4_uniforms                u4[12], u4[13], u4[14], u4[15] = u4[12], u4[13], u4[14], u4[15]
19trace_var                      TraceVar(u4[0], u4[1], u4[2], u4[3], u4[4], u4[5], u4[6], u4[7], u4[8], u4[9], u4[10], u4[11], u4[12], u4[13], u4[14], u4[15]) when $12 is true
20trace_enter                    TraceEnter(float4 main(float2 xy)) when $12 is true
21trace_var                      TraceVar(xy) when $12 is true
22copy_constant                  $0 = 0
23copy_slot_unmasked             $1 = $12
24copy_slot_masked               $0 = Mask($1)
25trace_scope                    TraceScope(+1) when $0 is true
26trace_line                     TraceLine(38) when $12 is true
27trace_enter                    TraceEnter(float index_by_literal()) when $12 is true
28copy_constant                  $1 = 0
29copy_slot_unmasked             $2 = $12
30copy_slot_masked               $1 = Mask($2)
31trace_scope                    TraceScope(+1) when $1 is true
32trace_line                     TraceLine(5) when $12 is true
33copy_uniform                   [index_by_literal].result = u1[0]
34trace_var                      TraceVar([index_by_literal].result) when $12 is true
35trace_scope                    TraceScope(-1) when $1 is true
36trace_exit                     TraceExit(float index_by_literal()) when $12 is true
37copy_slot_unmasked             $1 = [index_by_literal].result
38label                          label 0
39trace_enter                    TraceEnter(float index_by_loop()) when $12 is true
40copy_constant                  $2 = 0
41copy_slot_unmasked             $3 = $12
42copy_slot_masked               $2 = Mask($3)
43trace_scope                    TraceScope(+1) when $2 is true
44trace_line                     TraceLine(10) when $12 is true
45copy_constant                  sum = 0
46trace_var                      TraceVar(sum) when $12 is true
47copy_constant                  $3 = 0
48copy_slot_unmasked             $4 = $12
49copy_slot_masked               $3 = Mask($4)
50trace_scope                    TraceScope(+1) when $3 is true
51trace_line                     TraceLine(11) when $12 is true
52copy_constant                  i = 0x00000003 (4.203895e-45)
53trace_var                      TraceVar(i) when $12 is true
54label                          label 0x00000003
55copy_constant                  $4 = 0
56copy_slot_unmasked             $5 = $12
57copy_slot_masked               $4 = Mask($5)
58trace_scope                    TraceScope(+1) when $4 is true
59trace_line                     TraceLine(12) when $12 is true
60copy_slot_unmasked             $5 = sum
61copy_slot_unmasked             $16 = i
62copy_from_indirect_uniform_unm $6 = Indirect(u2[0] + $16)
63add_float                      $5 += $6
64copy_slot_unmasked             sum = $5
65trace_var                      TraceVar(sum) when $12 is true
66trace_scope                    TraceScope(-1) when $4 is true
67trace_line                     TraceLine(11) when $12 is true
68copy_slot_unmasked             $4 = i
69add_imm_int                    $4 += 0xFFFFFFFF
70copy_slot_unmasked             i = $4
71trace_var                      TraceVar(i) when $12 is true
72copy_constant                  $4 = 0
73copy_slot_unmasked             $5 = i
74cmple_int                      $4 = lessThanEqual($4, $5)
75stack_rewind
76branch_if_no_active_lanes_eq   branch -22 (label 3 at #52) if no lanes of $4 == 0
77label                          label 0x00000002
78trace_scope                    TraceScope(-1) when $3 is true
79trace_line                     TraceLine(14) when $12 is true
80copy_slot_unmasked             [index_by_loop].result = sum
81trace_var                      TraceVar([index_by_loop].result) when $12 is true
82trace_scope                    TraceScope(-1) when $2 is true
83trace_exit                     TraceExit(float index_by_loop()) when $12 is true
84copy_slot_unmasked             $2 = [index_by_loop].result
85label                          label 0x00000001
86trace_enter                    TraceEnter(float index_by_complex_loop()) when $12 is true
87copy_constant                  $3 = 0
88copy_slot_unmasked             $4 = $12
89copy_slot_masked               $3 = Mask($4)
90trace_scope                    TraceScope(+1) when $3 is true
91trace_line                     TraceLine(19) when $12 is true
92copy_constant                  prod = 0x3F800000 (1.0)
93trace_var                      TraceVar(prod) when $12 is true
94copy_constant                  $4 = 0
95copy_slot_unmasked             $5 = $12
96copy_slot_masked               $4 = Mask($5)
97trace_scope                    TraceScope(+1) when $4 is true
98trace_line                     TraceLine(20) when $12 is true
99copy_constant                  i₁ = 0
100trace_var                      TraceVar(i₁) when $12 is true
101label                          label 0x00000006
102copy_constant                  $5 = 0
103copy_slot_unmasked             $6 = $12
104copy_slot_masked               $5 = Mask($6)
105trace_scope                    TraceScope(+1) when $5 is true
106trace_line                     TraceLine(21) when $12 is true
107copy_slot_unmasked             $6 = prod
108copy_slot_unmasked             $16 = i₁
109cmplt_imm_int                  $16 = lessThan($16, 0x00000002)
110copy_slot_unmasked             $17 = i₁
111copy_constant                  $18 = 0
112mix_int                        $16 = mix($17, $18, $16)
113copy_from_indirect_uniform_unm $7 = Indirect(u3[0] + $16)
114mul_float                      $6 *= $7
115copy_slot_unmasked             prod = $6
116trace_var                      TraceVar(prod) when $12 is true
117trace_scope                    TraceScope(-1) when $5 is true
118trace_line                     TraceLine(20) when $12 is true
119copy_slot_unmasked             $5 = i₁
120add_imm_int                    $5 += 0x00000001
121copy_slot_unmasked             i₁ = $5
122trace_var                      TraceVar(i₁) when $12 is true
123copy_slot_unmasked             $5 = i₁
124cmplt_imm_int                  $5 = lessThan($5, 0x00000004)
125stack_rewind
126branch_if_no_active_lanes_eq   branch -25 (label 6 at #99) if no lanes of $5 == 0
127label                          label 0x00000005
128trace_scope                    TraceScope(-1) when $4 is true
129trace_line                     TraceLine(23) when $12 is true
130copy_slot_unmasked             [index_by_complex_loop].result = prod
131trace_var                      TraceVar([index_by_complex_loop].result) when $12 is true
132trace_scope                    TraceScope(-1) when $3 is true
133trace_exit                     TraceExit(float index_by_complex_loop()) when $12 is true
134copy_slot_unmasked             $3 = [index_by_complex_loop].result
135label                          label 0x00000004
136trace_enter                    TraceEnter(float index_out_of_bounds_checked()) when $12 is true
137copy_constant                  $4 = 0
138copy_slot_unmasked             $5 = $12
139copy_slot_masked               $4 = Mask($5)
140trace_scope                    TraceScope(+1) when $4 is true
141trace_line                     TraceLine(28) when $12 is true
142copy_constant                  sum₁ = 0
143trace_var                      TraceVar(sum₁) when $12 is true
144copy_constant                  $5 = 0
145copy_slot_unmasked             $6 = $12
146copy_slot_masked               $5 = Mask($6)
147trace_scope                    TraceScope(+1) when $5 is true
148trace_line                     TraceLine(29) when $12 is true
149copy_constant                  f = 0xC0133333 (-2.3)
150trace_var                      TraceVar(f) when $12 is true
151label                          label 0x0000000A
152copy_constant                  $6 = 0
153copy_slot_unmasked             $7 = $12
154copy_slot_masked               $6 = Mask($7)
155trace_scope                    TraceScope(+1) when $6 is true
156trace_line                     TraceLine(30) when $12 is true
157store_condition_mask           $7 = CondMask
158copy_constant                  $8 = 0
159copy_slot_unmasked             $9 = f
160cmplt_float                    $8 = lessThan($8, $9)
161copy_slot_unmasked             $9 = f
162cmplt_imm_float                $9 = lessThan($9, 0x41800000 (16.0))
163bitwise_and_int                $8 &= $9
164merge_condition_mask           CondMask = $7 & $8
165copy_constant                  $9 = 0
166copy_slot_unmasked             $10 = $12
167copy_slot_masked               $9 = Mask($10)
168trace_scope                    TraceScope(+1) when $9 is true
169trace_line                     TraceLine(31) when $12 is true
170copy_slot_unmasked             $10 = sum₁
171copy_slot_unmasked             $16 = f
172cast_to_int_from_float         $16 = FloatToInt($16)
173copy_from_indirect_uniform_unm $11 = Indirect(u4[0] + $16)
174sub_float                      $10 -= $11
175copy_slot_masked               sum₁ = Mask($10)
176trace_var                      TraceVar(sum₁) when $12 is true
177trace_scope                    TraceScope(-1) when $9 is true
178load_condition_mask            CondMask = $7
179trace_scope                    TraceScope(-1) when $6 is true
180trace_line                     TraceLine(29) when $12 is true
181copy_slot_unmasked             $6 = f
182add_imm_float                  $6 += 0x406CCCCD (3.7)
183copy_slot_unmasked             f = $6
184trace_var                      TraceVar(f) when $12 is true
185copy_slot_unmasked             $6 = f
186cmplt_imm_float                $6 = lessThan($6, 0x41880000 (17.0))
187stack_rewind
188branch_if_no_active_lanes_eq   branch -37 (label 10 at #149) if no lanes of $6 == 0
189label                          label 0x00000009
190trace_scope                    TraceScope(-1) when $5 is true
191trace_line                     TraceLine(34) when $12 is true
192copy_slot_unmasked             [index_out_of_bounds_checked].result = sum₁
193trace_var                      TraceVar([index_out_of_bounds_checked].result) when $12 is true
194trace_scope                    TraceScope(-1) when $4 is true
195trace_exit                     TraceExit(float index_out_of_bounds_checked()) when $12 is true
196copy_slot_unmasked             $4 = [index_out_of_bounds_checked].result
197label                          label 0x00000008
198copy_4_slots_unmasked          [main].result = $1..4
199trace_var                      TraceVar([main].result) when $12 is true
200trace_scope                    TraceScope(-1) when $0 is true
201trace_exit                     TraceExit(float4 main(float2 xy)) when $12 is true
202load_src                       src.rgba = [main].result
203