xref: /aosp_15_r20/external/skia/tests/sksl/runtime/ArrayIndexing.skrp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker190 instructions
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workerstore_device_xy01              $12..15 = DeviceCoords.xy01
4*c8dee2aaSAndroid Build Coastguard Workercmpeq_imm_float                $12 = equal($12, 0x3F000000 (0.5))
5*c8dee2aaSAndroid Build Coastguard Workercmpeq_imm_float                $13 = equal($13, 0x3F000000 (0.5))
6*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_int                $12 &= $13
7*c8dee2aaSAndroid Build Coastguard Workerstore_src_rg                   xy = src.rg
8*c8dee2aaSAndroid Build Coastguard Workerinit_lane_masks                CondMask = LoopMask = RetMask = true
9*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                u1[0], u1[1], u1[2], u1[3] = u1[0], u1[1], u1[2], u1[3]
10*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(u1[0], u1[1], u1[2], u1[3]) when $12 is true
11*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                u2[0], u2[1], u2[2], u2[3] = u2[0], u2[1], u2[2], u2[3]
12*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(u2[0], u2[1], u2[2], u2[3]) when $12 is true
13*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                u3[0], u3[1], u3[2], u3[3] = u3[0], u3[1], u3[2], u3[3]
14*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(u3[0], u3[1], u3[2], u3[3]) when $12 is true
15*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                u4[0], u4[1], u4[2], u4[3] = u4[0], u4[1], u4[2], u4[3]
16*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                u4[4], u4[5], u4[6], u4[7] = u4[4], u4[5], u4[6], u4[7]
17*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                u4[8], u4[9], u4[10], u4[11] = u4[8], u4[9], u4[10], u4[11]
18*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                u4[12], u4[13], u4[14], u4[15] = u4[12], u4[13], u4[14], u4[15]
19*c8dee2aaSAndroid Build Coastguard Workertrace_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
20*c8dee2aaSAndroid Build Coastguard Workertrace_enter                    TraceEnter(float4 main(float2 xy)) when $12 is true
21*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(xy) when $12 is true
22*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $0 = 0
23*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $1 = $12
24*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $0 = Mask($1)
25*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $0 is true
26*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(38) when $12 is true
27*c8dee2aaSAndroid Build Coastguard Workertrace_enter                    TraceEnter(float index_by_literal()) when $12 is true
28*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $1 = 0
29*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $2 = $12
30*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $1 = Mask($2)
31*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $1 is true
32*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(5) when $12 is true
33*c8dee2aaSAndroid Build Coastguard Workercopy_uniform                   [index_by_literal].result = u1[0]
34*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar([index_by_literal].result) when $12 is true
35*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $1 is true
36*c8dee2aaSAndroid Build Coastguard Workertrace_exit                     TraceExit(float index_by_literal()) when $12 is true
37*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $1 = [index_by_literal].result
38*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0
39*c8dee2aaSAndroid Build Coastguard Workertrace_enter                    TraceEnter(float index_by_loop()) when $12 is true
40*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $2 = 0
41*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $3 = $12
42*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $2 = Mask($3)
43*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $2 is true
44*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(10) when $12 is true
45*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  sum = 0
46*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(sum) when $12 is true
47*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $3 = 0
48*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $4 = $12
49*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $3 = Mask($4)
50*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $3 is true
51*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(11) when $12 is true
52*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  i = 0x00000003 (4.203895e-45)
53*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(i) when $12 is true
54*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000003
55*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $4 = 0
56*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $5 = $12
57*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $4 = Mask($5)
58*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $4 is true
59*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(12) when $12 is true
60*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $5 = sum
61*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $16 = i
62*c8dee2aaSAndroid Build Coastguard Workercopy_from_indirect_uniform_unm $6 = Indirect(u2[0] + $16)
63*c8dee2aaSAndroid Build Coastguard Workeradd_float                      $5 += $6
64*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             sum = $5
65*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(sum) when $12 is true
66*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $4 is true
67*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(11) when $12 is true
68*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $4 = i
69*c8dee2aaSAndroid Build Coastguard Workeradd_imm_int                    $4 += 0xFFFFFFFF
70*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             i = $4
71*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(i) when $12 is true
72*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $4 = 0
73*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $5 = i
74*c8dee2aaSAndroid Build Coastguard Workercmple_int                      $4 = lessThanEqual($4, $5)
75*c8dee2aaSAndroid Build Coastguard Workerstack_rewind
76*c8dee2aaSAndroid Build Coastguard Workerbranch_if_no_active_lanes_eq   branch -22 (label 3 at #52) if no lanes of $4 == 0
77*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000002
78*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $3 is true
79*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(14) when $12 is true
80*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             [index_by_loop].result = sum
81*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar([index_by_loop].result) when $12 is true
82*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $2 is true
83*c8dee2aaSAndroid Build Coastguard Workertrace_exit                     TraceExit(float index_by_loop()) when $12 is true
84*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $2 = [index_by_loop].result
85*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000001
86*c8dee2aaSAndroid Build Coastguard Workertrace_enter                    TraceEnter(float index_by_complex_loop()) when $12 is true
87*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $3 = 0
88*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $4 = $12
89*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $3 = Mask($4)
90*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $3 is true
91*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(19) when $12 is true
92*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  prod = 0x3F800000 (1.0)
93*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(prod) when $12 is true
94*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $4 = 0
95*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $5 = $12
96*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $4 = Mask($5)
97*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $4 is true
98*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(20) when $12 is true
99*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  i₁ = 0
100*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(i₁) when $12 is true
101*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000006
102*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $5 = 0
103*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $6 = $12
104*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $5 = Mask($6)
105*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $5 is true
106*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(21) when $12 is true
107*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $6 = prod
108*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $16 = i₁
109*c8dee2aaSAndroid Build Coastguard Workercmplt_imm_int                  $16 = lessThan($16, 0x00000002)
110*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $17 = i₁
111*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $18 = 0
112*c8dee2aaSAndroid Build Coastguard Workermix_int                        $16 = mix($17, $18, $16)
113*c8dee2aaSAndroid Build Coastguard Workercopy_from_indirect_uniform_unm $7 = Indirect(u3[0] + $16)
114*c8dee2aaSAndroid Build Coastguard Workermul_float                      $6 *= $7
115*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             prod = $6
116*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(prod) when $12 is true
117*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $5 is true
118*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(20) when $12 is true
119*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $5 = i₁
120*c8dee2aaSAndroid Build Coastguard Workeradd_imm_int                    $5 += 0x00000001
121*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             i₁ = $5
122*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(i₁) when $12 is true
123*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $5 = i₁
124*c8dee2aaSAndroid Build Coastguard Workercmplt_imm_int                  $5 = lessThan($5, 0x00000004)
125*c8dee2aaSAndroid Build Coastguard Workerstack_rewind
126*c8dee2aaSAndroid Build Coastguard Workerbranch_if_no_active_lanes_eq   branch -25 (label 6 at #99) if no lanes of $5 == 0
127*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000005
128*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $4 is true
129*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(23) when $12 is true
130*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             [index_by_complex_loop].result = prod
131*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar([index_by_complex_loop].result) when $12 is true
132*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $3 is true
133*c8dee2aaSAndroid Build Coastguard Workertrace_exit                     TraceExit(float index_by_complex_loop()) when $12 is true
134*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $3 = [index_by_complex_loop].result
135*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000004
136*c8dee2aaSAndroid Build Coastguard Workertrace_enter                    TraceEnter(float index_out_of_bounds_checked()) when $12 is true
137*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $4 = 0
138*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $5 = $12
139*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $4 = Mask($5)
140*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $4 is true
141*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(28) when $12 is true
142*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  sum₁ = 0
143*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(sum₁) when $12 is true
144*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $5 = 0
145*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $6 = $12
146*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $5 = Mask($6)
147*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $5 is true
148*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(29) when $12 is true
149*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  f = 0xC0133333 (-2.3)
150*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(f) when $12 is true
151*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x0000000A
152*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $6 = 0
153*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $7 = $12
154*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $6 = Mask($7)
155*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $6 is true
156*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(30) when $12 is true
157*c8dee2aaSAndroid Build Coastguard Workerstore_condition_mask           $7 = CondMask
158*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $8 = 0
159*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $9 = f
160*c8dee2aaSAndroid Build Coastguard Workercmplt_float                    $8 = lessThan($8, $9)
161*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $9 = f
162*c8dee2aaSAndroid Build Coastguard Workercmplt_imm_float                $9 = lessThan($9, 0x41800000 (16.0))
163*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_int                $8 &= $9
164*c8dee2aaSAndroid Build Coastguard Workermerge_condition_mask           CondMask = $7 & $8
165*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $9 = 0
166*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $10 = $12
167*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $9 = Mask($10)
168*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $9 is true
169*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(31) when $12 is true
170*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $10 = sum₁
171*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $16 = f
172*c8dee2aaSAndroid Build Coastguard Workercast_to_int_from_float         $16 = FloatToInt($16)
173*c8dee2aaSAndroid Build Coastguard Workercopy_from_indirect_uniform_unm $11 = Indirect(u4[0] + $16)
174*c8dee2aaSAndroid Build Coastguard Workersub_float                      $10 -= $11
175*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               sum₁ = Mask($10)
176*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(sum₁) when $12 is true
177*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $9 is true
178*c8dee2aaSAndroid Build Coastguard Workerload_condition_mask            CondMask = $7
179*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $6 is true
180*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(29) when $12 is true
181*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $6 = f
182*c8dee2aaSAndroid Build Coastguard Workeradd_imm_float                  $6 += 0x406CCCCD (3.7)
183*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             f = $6
184*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(f) when $12 is true
185*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $6 = f
186*c8dee2aaSAndroid Build Coastguard Workercmplt_imm_float                $6 = lessThan($6, 0x41880000 (17.0))
187*c8dee2aaSAndroid Build Coastguard Workerstack_rewind
188*c8dee2aaSAndroid Build Coastguard Workerbranch_if_no_active_lanes_eq   branch -37 (label 10 at #149) if no lanes of $6 == 0
189*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000009
190*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $5 is true
191*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(34) when $12 is true
192*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             [index_out_of_bounds_checked].result = sum₁
193*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar([index_out_of_bounds_checked].result) when $12 is true
194*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $4 is true
195*c8dee2aaSAndroid Build Coastguard Workertrace_exit                     TraceExit(float index_out_of_bounds_checked()) when $12 is true
196*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $4 = [index_out_of_bounds_checked].result
197*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000008
198*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_unmasked          [main].result = $1..4
199*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar([main].result) when $12 is true
200*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $0 is true
201*c8dee2aaSAndroid Build Coastguard Workertrace_exit                     TraceExit(float4 main(float2 xy)) when $12 is true
202*c8dee2aaSAndroid Build Coastguard Workerload_src                       src.rgba = [main].result
203