xref: /aosp_15_r20/external/skia/tests/sksl/shared/MatrixIndexStore.skrp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker176 instructions
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Worker[immutable slots]
4*c8dee2aaSAndroid Build Coastguard Workeri0 = 0x3F800000 (1.0)
5*c8dee2aaSAndroid Build Coastguard Workeri1 = 0x40000000 (2.0)
6*c8dee2aaSAndroid Build Coastguard Workeri2 = 0x40400000 (3.0)
7*c8dee2aaSAndroid Build Coastguard Workeri3 = 0x3F800000 (1.0)
8*c8dee2aaSAndroid Build Coastguard Workeri4 = 0x40000000 (2.0)
9*c8dee2aaSAndroid Build Coastguard Workeri5 = 0x40400000 (3.0)
10*c8dee2aaSAndroid Build Coastguard Workeri6 = 0x40800000 (4.0)
11*c8dee2aaSAndroid Build Coastguard Worker
12*c8dee2aaSAndroid Build Coastguard Workerstore_device_xy01              $35..38 = DeviceCoords.xy01
13*c8dee2aaSAndroid Build Coastguard Workercmpeq_imm_float                $35 = equal($35, 0x3F000000 (0.5))
14*c8dee2aaSAndroid Build Coastguard Workercmpeq_imm_float                $36 = equal($36, 0x3F000000 (0.5))
15*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_int                $35 &= $36
16*c8dee2aaSAndroid Build Coastguard Workerstore_src_rg                   coords = src.rg
17*c8dee2aaSAndroid Build Coastguard Workerinit_lane_masks                CondMask = LoopMask = RetMask = true
18*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                colorGreen = colorGreen
19*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(colorGreen) when $35 is true
20*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                colorRed = colorRed
21*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(colorRed) when $35 is true
22*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                testMatrix3x3(0..3) = testMatrix3x3(0..3)
23*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                testMatrix3x3(4..7) = testMatrix3x3(4..7)
24*c8dee2aaSAndroid Build Coastguard Workercopy_uniform                   testMatrix3x3(8) = testMatrix3x3(8)
25*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(testMatrix3x3) when $35 is true
26*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                testMatrix4x4(0..3) = testMatrix4x4(0..3)
27*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                testMatrix4x4(4..7) = testMatrix4x4(4..7)
28*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                testMatrix4x4(8..11) = testMatrix4x4(8..11)
29*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                testMatrix4x4(12..15) = testMatrix4x4(12..15)
30*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(testMatrix4x4) when $35 is true
31*c8dee2aaSAndroid Build Coastguard Workertrace_enter                    TraceEnter(half4 main(float2 coords)) when $35 is true
32*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(coords) when $35 is true
33*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $0 = 0
34*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $1 = $35
35*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $0 = Mask($1)
36*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $0 is true
37*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(28) when $35 is true
38*c8dee2aaSAndroid Build Coastguard Workerstore_condition_mask           $39 = CondMask
39*c8dee2aaSAndroid Build Coastguard Workerbranch_if_no_lanes_active      branch_if_no_lanes_active +68 (label 2 at #96)
40*c8dee2aaSAndroid Build Coastguard Workertrace_enter                    TraceEnter(bool test3x3()) when $35 is true
41*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $40 = 0
42*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $41 = $35
43*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $40 = Mask($41)
44*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $40 is true
45*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(8) when $35 is true
46*c8dee2aaSAndroid Build Coastguard Workersplat_4_constants              matrix(0..3) = 0
47*c8dee2aaSAndroid Build Coastguard Workersplat_4_constants              matrix(4..7) = 0
48*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  matrix(8) = 0
49*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(matrix) when $35 is true
50*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(9) when $35 is true
51*c8dee2aaSAndroid Build Coastguard Workercopy_3_immutables_unmasked     values = i0..2 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0)]
52*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(values) when $35 is true
53*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $41 = 0
54*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $42 = $35
55*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $41 = Mask($42)
56*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $41 is true
57*c8dee2aaSAndroid Build Coastguard Workerbranch_if_no_lanes_active      branch_if_no_lanes_active +31 (label 3 at #77)
58*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(10) when $35 is true
59*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  index = 0
60*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(index) when $35 is true
61*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000004
62*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $42 = 0
63*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $43 = $35
64*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $42 = Mask($43)
65*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $42 is true
66*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(11) when $35 is true
67*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $59 = index
68*c8dee2aaSAndroid Build Coastguard Workermul_imm_int                    $59 *= 0x00000003
69*c8dee2aaSAndroid Build Coastguard Workercopy_3_slots_unmasked          $43..45 = values
70*c8dee2aaSAndroid Build Coastguard Workercopy_to_indirect_masked        Indirect(matrix(0..2) + $59) = Mask($43..45)
71*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(matrix(0..2) + $59) when $35 is true
72*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(12) when $35 is true
73*c8dee2aaSAndroid Build Coastguard Workercopy_3_slots_unmasked          $43..45 = values
74*c8dee2aaSAndroid Build Coastguard Workersplat_3_constants              $46..48 = 0x40400000 (3.0)
75*c8dee2aaSAndroid Build Coastguard Workeradd_3_floats                   $43..45 += $46..48
76*c8dee2aaSAndroid Build Coastguard Workercopy_3_slots_masked            values = Mask($43..45)
77*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(values) when $35 is true
78*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $42 is true
79*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(10) when $35 is true
80*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $42 = index
81*c8dee2aaSAndroid Build Coastguard Workeradd_imm_int                    $42 += 0x00000001
82*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               index = Mask($42)
83*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(index) when $35 is true
84*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $42 = index
85*c8dee2aaSAndroid Build Coastguard Workercmplt_imm_int                  $42 = lessThan($42, 0x00000003)
86*c8dee2aaSAndroid Build Coastguard Workerstack_rewind
87*c8dee2aaSAndroid Build Coastguard Workerbranch_if_no_active_lanes_eq   branch -26 (label 4 at #50) if no lanes of $42 == 0
88*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000003
89*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $41 is true
90*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(14) when $35 is true
91*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_unmasked          $41..44 = matrix(0..3)
92*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_unmasked          $45..48 = matrix(4..7)
93*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $49 = matrix(8)
94*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                $50..53 = testMatrix3x3(0..3)
95*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                $54..57 = testMatrix3x3(4..7)
96*c8dee2aaSAndroid Build Coastguard Workercopy_uniform                   $58 = testMatrix3x3(8)
97*c8dee2aaSAndroid Build Coastguard Workercmpeq_n_floats                 $41..49 = equal($41..49, $50..58)
98*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_4_ints             $42..45 &= $46..49
99*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_2_ints             $42..43 &= $44..45
100*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_int                $42 &= $43
101*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_int                $41 &= $42
102*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               [test3x3].result = Mask($41)
103*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar([test3x3].result) when $35 is true
104*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $40 is true
105*c8dee2aaSAndroid Build Coastguard Workertrace_exit                     TraceExit(bool test3x3()) when $35 is true
106*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $40 = [test3x3].result
107*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000002
108*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $1 = 0
109*c8dee2aaSAndroid Build Coastguard Workermerge_condition_mask           CondMask = $39 & $40
110*c8dee2aaSAndroid Build Coastguard Workerbranch_if_no_lanes_active      branch_if_no_lanes_active +74 (label 1 at #173)
111*c8dee2aaSAndroid Build Coastguard Workertrace_enter                    TraceEnter(bool test4x4()) when $35 is true
112*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $2 = 0
113*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $3 = $35
114*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $2 = Mask($3)
115*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $2 is true
116*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(18) when $35 is true
117*c8dee2aaSAndroid Build Coastguard Workersplat_4_constants              matrix₁(0..3) = 0
118*c8dee2aaSAndroid Build Coastguard Workersplat_4_constants              matrix₁(4..7) = 0
119*c8dee2aaSAndroid Build Coastguard Workersplat_4_constants              matrix₁(8..11) = 0
120*c8dee2aaSAndroid Build Coastguard Workersplat_4_constants              matrix₁(12..15) = 0
121*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(matrix₁) when $35 is true
122*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(19) when $35 is true
123*c8dee2aaSAndroid Build Coastguard Workercopy_4_immutables_unmasked     values₁ = i3..6 [0x3F800000 (1.0), 0x40000000 (2.0), 0x40400000 (3.0), 0x40800000 (4.0)]
124*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(values₁) when $35 is true
125*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $3 = 0
126*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $4 = $35
127*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $3 = Mask($4)
128*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $3 is true
129*c8dee2aaSAndroid Build Coastguard Workerbranch_if_no_lanes_active      branch_if_no_lanes_active +31 (label 6 at #149)
130*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(20) when $35 is true
131*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  index₁ = 0
132*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(index₁) when $35 is true
133*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000007
134*c8dee2aaSAndroid Build Coastguard Workercopy_constant                  $4 = 0
135*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $5 = $35
136*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $4 = Mask($5)
137*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(+1) when $4 is true
138*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(21) when $35 is true
139*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $59 = index₁
140*c8dee2aaSAndroid Build Coastguard Workermul_imm_int                    $59 *= 0x00000004
141*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_unmasked          $5..8 = values₁
142*c8dee2aaSAndroid Build Coastguard Workercopy_to_indirect_masked        Indirect(matrix₁(0..3) + $59) = Mask($5..8)
143*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(matrix₁(0..3) + $59) when $35 is true
144*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(22) when $35 is true
145*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_unmasked          $5..8 = values₁
146*c8dee2aaSAndroid Build Coastguard Workersplat_4_constants              $9..12 = 0x40800000 (4.0)
147*c8dee2aaSAndroid Build Coastguard Workeradd_4_floats                   $5..8 += $9..12
148*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_masked            values₁ = Mask($5..8)
149*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(values₁) when $35 is true
150*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $4 is true
151*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(20) when $35 is true
152*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $4 = index₁
153*c8dee2aaSAndroid Build Coastguard Workeradd_imm_int                    $4 += 0x00000001
154*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               index₁ = Mask($4)
155*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar(index₁) when $35 is true
156*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $4 = index₁
157*c8dee2aaSAndroid Build Coastguard Workercmplt_imm_int                  $4 = lessThan($4, 0x00000004)
158*c8dee2aaSAndroid Build Coastguard Workerstack_rewind
159*c8dee2aaSAndroid Build Coastguard Workerbranch_if_no_active_lanes_eq   branch -26 (label 7 at #122) if no lanes of $4 == 0
160*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000006
161*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $3 is true
162*c8dee2aaSAndroid Build Coastguard Workertrace_line                     TraceLine(24) when $35 is true
163*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_unmasked          $3..6 = matrix₁(0..3)
164*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_unmasked          $7..10 = matrix₁(4..7)
165*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_unmasked          $11..14 = matrix₁(8..11)
166*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_unmasked          $15..18 = matrix₁(12..15)
167*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                $19..22 = testMatrix4x4(0..3)
168*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                $23..26 = testMatrix4x4(4..7)
169*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                $27..30 = testMatrix4x4(8..11)
170*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                $31..34 = testMatrix4x4(12..15)
171*c8dee2aaSAndroid Build Coastguard Workercmpeq_n_floats                 $3..18 = equal($3..18, $19..34)
172*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_4_ints             $11..14 &= $15..18
173*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_4_ints             $7..10 &= $11..14
174*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_4_ints             $3..6 &= $7..10
175*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_2_ints             $3..4 &= $5..6
176*c8dee2aaSAndroid Build Coastguard Workerbitwise_and_int                $3 &= $4
177*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               [test4x4].result = Mask($3)
178*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar([test4x4].result) when $35 is true
179*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $2 is true
180*c8dee2aaSAndroid Build Coastguard Workertrace_exit                     TraceExit(bool test4x4()) when $35 is true
181*c8dee2aaSAndroid Build Coastguard Workercopy_slot_unmasked             $2 = [test4x4].result
182*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000005
183*c8dee2aaSAndroid Build Coastguard Workercopy_slot_masked               $1 = Mask($2)
184*c8dee2aaSAndroid Build Coastguard Workerlabel                          label 0x00000001
185*c8dee2aaSAndroid Build Coastguard Workerload_condition_mask            CondMask = $39
186*c8dee2aaSAndroid Build Coastguard Workerswizzle_4                      $1..4 = ($1..4).xxxx
187*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                $5..8 = colorRed
188*c8dee2aaSAndroid Build Coastguard Workercopy_4_uniforms                $9..12 = colorGreen
189*c8dee2aaSAndroid Build Coastguard Workermix_4_ints                     $1..4 = mix($5..8, $9..12, $1..4)
190*c8dee2aaSAndroid Build Coastguard Workercopy_4_slots_unmasked          [main].result = $1..4
191*c8dee2aaSAndroid Build Coastguard Workertrace_var                      TraceVar([main].result) when $35 is true
192*c8dee2aaSAndroid Build Coastguard Workertrace_scope                    TraceScope(-1) when $0 is true
193*c8dee2aaSAndroid Build Coastguard Workertrace_exit                     TraceExit(half4 main(float2 coords)) when $35 is true
194*c8dee2aaSAndroid Build Coastguard Workerload_src                       src.rgba = [main].result
195