xref: /aosp_15_r20/external/skia/tests/sksl/runtime/PrecisionQualifiers.skrp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1373 instructions
2
3[immutable slots]
4i0 = 0x40000000 (2.0)
5i1 = 0
6i2 = 0
7i3 = 0x40000000 (2.0)
8i4 = 0x40400000 (3.0)
9i5 = 0
10i6 = 0
11i7 = 0
12i8 = 0x40400000 (3.0)
13i9 = 0
14i10 = 0
15i11 = 0
16i12 = 0x40400000 (3.0)
17i13 = 0x40800000 (4.0)
18i14 = 0
19i15 = 0
20i16 = 0
21i17 = 0
22i18 = 0x40800000 (4.0)
23i19 = 0
24i20 = 0
25i21 = 0
26i22 = 0
27i23 = 0x40800000 (4.0)
28i24 = 0
29i25 = 0
30i26 = 0
31i27 = 0
32i28 = 0x40800000 (4.0)
33i29 = 0
34i30 = 0x3F800000 (1.0)
35
36store_device_xy01              $13..16 = DeviceCoords.xy01
37cmpeq_imm_float                $13 = equal($13, 0x3F000000 (0.5))
38cmpeq_imm_float                $14 = equal($14, 0x3F000000 (0.5))
39bitwise_and_int                $13 &= $14
40store_src_rg                   coords = src.rg
41init_lane_masks                CondMask = LoopMask = RetMask = true
42copy_4_uniforms                colorGreen = colorGreen
43trace_var                      TraceVar(colorGreen) when $13 is true
44copy_4_uniforms                colorRed = colorRed
45trace_var                      TraceVar(colorRed) when $13 is true
46trace_enter                    TraceEnter(vec4 main(vec2 coords)) when $13 is true
47trace_var                      TraceVar(coords) when $13 is true
48copy_constant                  $0 = 0
49copy_slot_unmasked             $1 = $13
50copy_slot_masked               $0 = Mask($1)
51trace_scope                    TraceScope(+1) when $0 is true
52trace_line                     TraceLine(58) when $13 is true
53splat_4_constants              zero = 0
54trace_var                      TraceVar(zero) when $13 is true
55trace_line                     TraceLine(59) when $13 is true
56splat_4_constants              one = 0x3F800000 (1.0)
57trace_var                      TraceVar(one) when $13 is true
58trace_line                     TraceLine(60) when $13 is true
59copy_4_uniforms                green = colorGreen
60trace_var                      TraceVar(green) when $13 is true
61trace_line                     TraceLine(61) when $13 is true
62copy_4_slots_unmasked          $1..4 = green
63copy_4_slots_unmasked          $5..8 = one
64mul_4_floats                   $1..4 *= $5..8
65copy_4_slots_unmasked          $5..8 = zero
66add_4_floats                   $1..4 += $5..8
67copy_4_slots_unmasked          green = $1..4
68trace_var                      TraceVar(green) when $13 is true
69trace_line                     TraceLine(63) when $13 is true
70copy_4_uniforms                red = colorRed
71trace_var                      TraceVar(red) when $13 is true
72trace_line                     TraceLine(64) when $13 is true
73copy_4_slots_unmasked          $1..4 = red
74copy_4_slots_unmasked          $5..8 = zero
75add_4_floats                   $1..4 += $5..8
76copy_4_slots_unmasked          $5..8 = one
77mul_4_floats                   $1..4 *= $5..8
78copy_4_slots_unmasked          red = $1..4
79trace_var                      TraceVar(red) when $13 is true
80trace_line                     TraceLine(66) when $13 is true
81store_condition_mask           $17 = CondMask
82store_condition_mask           $21 = CondMask
83store_condition_mask           $25 = CondMask
84store_condition_mask           $33 = CondMask
85store_condition_mask           $69 = CondMask
86store_condition_mask           $81 = CondMask
87branch_if_no_lanes_active      branch_if_no_lanes_active +29 (label 7 at #81)
88trace_enter                    TraceEnter(bool test_scalar()) when $13 is true
89copy_constant                  $82 = 0
90copy_slot_unmasked             $83 = $13
91copy_slot_masked               $82 = Mask($83)
92trace_scope                    TraceScope(+1) when $82 is true
93trace_line                     TraceLine(6) when $13 is true
94copy_constant                  mp = 0x3F000000 (0.5)
95trace_var                      TraceVar(mp) when $13 is true
96trace_line                     TraceLine(7) when $13 is true
97copy_slot_unmasked             hp = mp
98trace_var                      TraceVar(hp) when $13 is true
99trace_line                     TraceLine(8) when $13 is true
100copy_constant                  ihp = 0x00000002 (2.802597e-45)
101trace_var                      TraceVar(ihp) when $13 is true
102trace_line                     TraceLine(9) when $13 is true
103copy_slot_unmasked             imp = ihp
104trace_var                      TraceVar(imp) when $13 is true
105trace_line                     TraceLine(11) when $13 is true
106copy_2_slots_unmasked          $83..84 = mp, hp
107cmpeq_float                    $83 = equal($83, $84)
108copy_2_slots_unmasked          $84..85 = ihp, imp
109cmpeq_int                      $84 = equal($84, $85)
110bitwise_and_int                $83 &= $84
111copy_slot_masked               [test_scalar].result = Mask($83)
112trace_var                      TraceVar([test_scalar].result) when $13 is true
113trace_scope                    TraceScope(-1) when $82 is true
114trace_exit                     TraceExit(bool test_scalar()) when $13 is true
115copy_slot_unmasked             $82 = [test_scalar].result
116label                          label 0x00000007
117copy_constant                  $70 = 0
118merge_condition_mask           CondMask = $81 & $82
119branch_if_no_lanes_active      branch_if_no_lanes_active +82 (label 6 at #166)
120trace_enter                    TraceEnter(bool test_vector()) when $13 is true
121copy_constant                  $71 = 0
122copy_slot_unmasked             $72 = $13
123copy_slot_masked               $71 = Mask($72)
124trace_scope                    TraceScope(+1) when $71 is true
125trace_line                     TraceLine(15) when $13 is true
126splat_2_constants              mp2 = 0x40000000 (2.0)
127trace_var                      TraceVar(mp2) when $13 is true
128trace_line                     TraceLine(16) when $13 is true
129copy_2_slots_unmasked          hp2 = mp2
130trace_var                      TraceVar(hp2) when $13 is true
131trace_line                     TraceLine(17) when $13 is true
132splat_3_constants              mp3 = 0x40400000 (3.0)
133trace_var                      TraceVar(mp3) when $13 is true
134trace_line                     TraceLine(18) when $13 is true
135copy_3_slots_unmasked          hp3 = mp3
136trace_var                      TraceVar(hp3) when $13 is true
137trace_line                     TraceLine(19) when $13 is true
138splat_4_constants              mp4 = 0x40800000 (4.0)
139trace_var                      TraceVar(mp4) when $13 is true
140trace_line                     TraceLine(20) when $13 is true
141copy_4_slots_unmasked          hp4 = mp4
142trace_var                      TraceVar(hp4) when $13 is true
143trace_line                     TraceLine(22) when $13 is true
144splat_2_constants              ihp2 = 0x00000002 (2.802597e-45)
145trace_var                      TraceVar(ihp2) when $13 is true
146trace_line                     TraceLine(23) when $13 is true
147copy_2_slots_unmasked          imp2 = ihp2
148trace_var                      TraceVar(imp2) when $13 is true
149trace_line                     TraceLine(24) when $13 is true
150splat_3_constants              ihp3 = 0x00000003 (4.203895e-45)
151trace_var                      TraceVar(ihp3) when $13 is true
152trace_line                     TraceLine(25) when $13 is true
153copy_3_slots_unmasked          imp3 = ihp3
154trace_var                      TraceVar(imp3) when $13 is true
155trace_line                     TraceLine(26) when $13 is true
156splat_4_constants              ihp4 = 0x00000004 (5.605194e-45)
157trace_var                      TraceVar(ihp4) when $13 is true
158trace_line                     TraceLine(27) when $13 is true
159copy_4_slots_unmasked          imp4 = ihp4
160trace_var                      TraceVar(imp4) when $13 is true
161trace_line                     TraceLine(29) when $13 is true
162copy_4_slots_unmasked          $72..75 = mp2, hp2
163cmpeq_2_floats                 $72..73 = equal($72..73, $74..75)
164bitwise_and_int                $72 &= $73
165copy_3_slots_unmasked          $73..75 = hp3
166copy_3_slots_unmasked          $76..78 = mp3
167cmpeq_3_floats                 $73..75 = equal($73..75, $76..78)
168bitwise_and_int                $74 &= $75
169bitwise_and_int                $73 &= $74
170bitwise_and_int                $72 &= $73
171copy_4_slots_unmasked          $73..76 = mp4
172copy_4_slots_unmasked          $77..80 = hp4
173cmpeq_4_floats                 $73..76 = equal($73..76, $77..80)
174bitwise_and_2_ints             $73..74 &= $75..76
175bitwise_and_int                $73 &= $74
176bitwise_and_int                $72 &= $73
177copy_2_slots_unmasked          $73..74 = imp2
178copy_2_slots_unmasked          $75..76 = ihp2
179cmpeq_2_ints                   $73..74 = equal($73..74, $75..76)
180bitwise_and_int                $73 &= $74
181bitwise_and_int                $72 &= $73
182copy_4_slots_unmasked          $73..76 = ihp3, imp3(0)
183copy_2_slots_unmasked          $77..78 = imp3(1..2)
184cmpeq_3_ints                   $73..75 = equal($73..75, $76..78)
185bitwise_and_int                $74 &= $75
186bitwise_and_int                $73 &= $74
187bitwise_and_int                $72 &= $73
188copy_4_slots_unmasked          $73..76 = imp4
189copy_4_slots_unmasked          $77..80 = ihp4
190cmpeq_4_ints                   $73..76 = equal($73..76, $77..80)
191bitwise_and_2_ints             $73..74 &= $75..76
192bitwise_and_int                $73 &= $74
193bitwise_and_int                $72 &= $73
194copy_slot_masked               [test_vector].result = Mask($72)
195trace_var                      TraceVar([test_vector].result) when $13 is true
196trace_scope                    TraceScope(-1) when $71 is true
197trace_exit                     TraceExit(bool test_vector()) when $13 is true
198copy_slot_unmasked             $71 = [test_vector].result
199label                          label 0x00000008
200copy_slot_masked               $70 = Mask($71)
201label                          label 0x00000006
202load_condition_mask            CondMask = $81
203copy_constant                  $34 = 0
204merge_condition_mask           CondMask = $69 & $70
205branch_if_no_lanes_active      branch_if_no_lanes_active +74 (label 5 at #244)
206trace_enter                    TraceEnter(bool test_matrix()) when $13 is true
207copy_constant                  $35 = 0
208copy_slot_unmasked             $36 = $13
209copy_slot_masked               $35 = Mask($36)
210trace_scope                    TraceScope(+1) when $35 is true
211trace_line                     TraceLine(34) when $13 is true
212copy_4_immutables_unmasked     mp2₁ = i0..3 [0x40000000 (2.0), 0, 0, 0x40000000 (2.0)]
213trace_var                      TraceVar(mp2₁) when $13 is true
214trace_line                     TraceLine(35) when $13 is true
215copy_4_slots_unmasked          hp2₁ = mp2₁
216trace_var                      TraceVar(hp2₁) when $13 is true
217trace_line                     TraceLine(36) when $13 is true
218copy_4_immutables_unmasked     mp3₁(0..3) = i4..7 [0x40400000 (3.0), 0, 0, 0]
219copy_4_immutables_unmasked     mp3₁(4..7) = i8..11 [0x40400000 (3.0), 0, 0, 0]
220copy_constant                  mp3₁(8) = 0x40400000 (3.0)
221trace_var                      TraceVar(mp3₁) when $13 is true
222trace_line                     TraceLine(37) when $13 is true
223copy_4_slots_unmasked          hp3₁(0..3) = mp3₁(0..3)
224copy_4_slots_unmasked          hp3₁(4..7) = mp3₁(4..7)
225copy_slot_unmasked             hp3₁(8) = mp3₁(8)
226trace_var                      TraceVar(hp3₁) when $13 is true
227trace_line                     TraceLine(38) when $13 is true
228copy_4_immutables_unmasked     mp4₁(0..3) = i13..16 [0x40800000 (4.0), 0, 0, 0]
229copy_4_immutables_unmasked     mp4₁(4..7) = i17..20 [0, 0x40800000 (4.0), 0, 0]
230copy_4_immutables_unmasked     mp4₁(8..11) = i21..24 [0, 0, 0x40800000 (4.0), 0]
231copy_4_immutables_unmasked     mp4₁(12..15) = i25..28 [0, 0, 0, 0x40800000 (4.0)]
232trace_var                      TraceVar(mp4₁) when $13 is true
233trace_line                     TraceLine(39) when $13 is true
234copy_4_slots_unmasked          hp4₁(0..3) = mp4₁(0..3)
235copy_4_slots_unmasked          hp4₁(4..7) = mp4₁(4..7)
236copy_4_slots_unmasked          hp4₁(8..11) = mp4₁(8..11)
237copy_4_slots_unmasked          hp4₁(12..15) = mp4₁(12..15)
238trace_var                      TraceVar(hp4₁) when $13 is true
239trace_line                     TraceLine(41) when $13 is true
240copy_4_slots_unmasked          $36..39 = mp2₁
241copy_4_slots_unmasked          $40..43 = hp2₁
242cmpeq_4_floats                 $36..39 = equal($36..39, $40..43)
243bitwise_and_2_ints             $36..37 &= $38..39
244bitwise_and_int                $36 &= $37
245copy_4_slots_unmasked          $37..40 = hp3₁(0..3)
246copy_4_slots_unmasked          $41..44 = hp3₁(4..7)
247copy_slot_unmasked             $45 = hp3₁(8)
248copy_4_slots_unmasked          $46..49 = mp3₁(0..3)
249copy_4_slots_unmasked          $50..53 = mp3₁(4..7)
250copy_slot_unmasked             $54 = mp3₁(8)
251cmpeq_n_floats                 $37..45 = equal($37..45, $46..54)
252bitwise_and_4_ints             $38..41 &= $42..45
253bitwise_and_2_ints             $38..39 &= $40..41
254bitwise_and_int                $38 &= $39
255bitwise_and_int                $37 &= $38
256bitwise_and_int                $36 &= $37
257copy_4_slots_unmasked          $37..40 = mp4₁(0..3)
258copy_4_slots_unmasked          $41..44 = mp4₁(4..7)
259copy_4_slots_unmasked          $45..48 = mp4₁(8..11)
260copy_4_slots_unmasked          $49..52 = mp4₁(12..15)
261copy_4_slots_unmasked          $53..56 = hp4₁(0..3)
262copy_4_slots_unmasked          $57..60 = hp4₁(4..7)
263copy_4_slots_unmasked          $61..64 = hp4₁(8..11)
264copy_4_slots_unmasked          $65..68 = hp4₁(12..15)
265cmpeq_n_floats                 $37..52 = equal($37..52, $53..68)
266bitwise_and_4_ints             $45..48 &= $49..52
267bitwise_and_4_ints             $41..44 &= $45..48
268bitwise_and_4_ints             $37..40 &= $41..44
269bitwise_and_2_ints             $37..38 &= $39..40
270bitwise_and_int                $37 &= $38
271bitwise_and_int                $36 &= $37
272copy_slot_masked               [test_matrix].result = Mask($36)
273trace_var                      TraceVar([test_matrix].result) when $13 is true
274trace_scope                    TraceScope(-1) when $35 is true
275trace_exit                     TraceExit(bool test_matrix()) when $13 is true
276copy_slot_unmasked             $35 = [test_matrix].result
277label                          label 0x00000009
278copy_slot_masked               $34 = Mask($35)
279label                          label 0x00000005
280load_condition_mask            CondMask = $69
281copy_constant                  $26 = 0
282merge_condition_mask           CondMask = $33 & $34
283branch_if_no_lanes_active      branch_if_no_lanes_active +62 (label 4 at #310)
284trace_enter                    TraceEnter(bool test_array()) when $13 is true
285copy_constant                  $27 = 0
286copy_slot_unmasked             $28 = $13
287copy_slot_masked               $27 = Mask($28)
288trace_scope                    TraceScope(+1) when $27 is true
289trace_line                     TraceLine(45) when $13 is true
290copy_constant                  mf[0] = 0
291trace_var                      TraceVar(mf[0]) when $13 is true
292trace_line                     TraceLine(45) when $13 is true
293copy_constant                  $28 = 0x3F800000 (1.0)
294copy_slot_masked               mf[0] = Mask($28)
295trace_var                      TraceVar(mf[0]) when $13 is true
296trace_line                     TraceLine(46) when $13 is true
297copy_constant                  hf[0] = 0
298trace_var                      TraceVar(hf[0]) when $13 is true
299trace_line                     TraceLine(46) when $13 is true
300copy_constant                  $28 = 0x3F800000 (1.0)
301copy_slot_masked               hf[0] = Mask($28)
302trace_var                      TraceVar(hf[0]) when $13 is true
303trace_line                     TraceLine(47) when $13 is true
304splat_4_constants              mv[0], mv[1] = 0
305trace_var                      TraceVar(mv[0], mv[1]) when $13 is true
306trace_line                     TraceLine(47) when $13 is true
307copy_2_immutables_unmasked     $28..29 = i29..30 [0, 0x3F800000 (1.0)]
308copy_2_slots_masked            mv[0] = Mask($28..29)
309trace_var                      TraceVar(mv[0]) when $13 is true
310trace_line                     TraceLine(47) when $13 is true
311copy_2_immutables_unmasked     $28..29 = i3..4 [0x40000000 (2.0), 0x40400000 (3.0)]
312copy_2_slots_masked            mv[1] = Mask($28..29)
313trace_var                      TraceVar(mv[1]) when $13 is true
314trace_line                     TraceLine(48) when $13 is true
315splat_4_constants              hv[0], hv[1] = 0
316trace_var                      TraceVar(hv[0], hv[1]) when $13 is true
317trace_line                     TraceLine(48) when $13 is true
318copy_2_immutables_unmasked     $28..29 = i29..30 [0, 0x3F800000 (1.0)]
319copy_2_slots_masked            hv[0] = Mask($28..29)
320trace_var                      TraceVar(hv[0]) when $13 is true
321trace_line                     TraceLine(48) when $13 is true
322copy_2_immutables_unmasked     $28..29 = i3..4 [0x40000000 (2.0), 0x40400000 (3.0)]
323copy_2_slots_masked            hv[1] = Mask($28..29)
324trace_var                      TraceVar(hv[1]) when $13 is true
325trace_line                     TraceLine(50) when $13 is true
326copy_2_slots_unmasked          $28..29 = mf[0], hf[0]
327cmpeq_float                    $28 = equal($28, $29)
328copy_2_slots_unmasked          $29..30 = hv[0]
329copy_2_slots_unmasked          $31..32 = mv[0]
330cmpeq_2_floats                 $29..30 = equal($29..30, $31..32)
331bitwise_and_int                $29 &= $30
332bitwise_and_int                $28 &= $29
333copy_2_slots_unmasked          $29..30 = mv[1]
334copy_2_slots_unmasked          $31..32 = hv[1]
335cmpeq_2_floats                 $29..30 = equal($29..30, $31..32)
336bitwise_and_int                $29 &= $30
337bitwise_and_int                $28 &= $29
338copy_slot_masked               [test_array].result = Mask($28)
339trace_var                      TraceVar([test_array].result) when $13 is true
340trace_scope                    TraceScope(-1) when $27 is true
341trace_exit                     TraceExit(bool test_array()) when $13 is true
342copy_slot_unmasked             $27 = [test_array].result
343label                          label 0x0000000A
344copy_slot_masked               $26 = Mask($27)
345label                          label 0x00000004
346load_condition_mask            CondMask = $33
347copy_constant                  $22 = 0
348merge_condition_mask           CondMask = $25 & $26
349branch_if_no_lanes_active      branch_if_no_lanes_active +18 (label 3 at #332)
350trace_enter                    TraceEnter(bool highp_param(float value)) when $13 is true
351copy_constant                  value = 0x3F800000 (1.0)
352trace_var                      TraceVar(value) when $13 is true
353copy_constant                  $23 = 0
354copy_slot_unmasked             $24 = $13
355copy_slot_masked               $23 = Mask($24)
356trace_scope                    TraceScope(+1) when $23 is true
357trace_line                     TraceLine(53) when $13 is true
358copy_slot_unmasked             $24 = value
359cmpeq_imm_float                $24 = equal($24, 0x3F800000 (1.0))
360copy_slot_masked               [highp_param].result = Mask($24)
361trace_var                      TraceVar([highp_param].result) when $13 is true
362trace_scope                    TraceScope(-1) when $23 is true
363trace_exit                     TraceExit(bool highp_param(float value)) when $13 is true
364copy_slot_unmasked             $23 = [highp_param].result
365label                          label 0x0000000B
366copy_slot_masked               $22 = Mask($23)
367label                          label 0x00000003
368load_condition_mask            CondMask = $25
369copy_constant                  $18 = 0
370merge_condition_mask           CondMask = $21 & $22
371branch_if_no_lanes_active      branch_if_no_lanes_active +18 (label 2 at #354)
372trace_enter                    TraceEnter(bool mediump_param(half value)) when $13 is true
373copy_constant                  value₁ = 0x40000000 (2.0)
374trace_var                      TraceVar(value₁) when $13 is true
375copy_constant                  $19 = 0
376copy_slot_unmasked             $20 = $13
377copy_slot_masked               $19 = Mask($20)
378trace_scope                    TraceScope(+1) when $19 is true
379trace_line                     TraceLine(54) when $13 is true
380copy_slot_unmasked             $20 = value₁
381cmpeq_imm_float                $20 = equal($20, 0x40000000 (2.0))
382copy_slot_masked               [mediump_param].result = Mask($20)
383trace_var                      TraceVar([mediump_param].result) when $13 is true
384trace_scope                    TraceScope(-1) when $19 is true
385trace_exit                     TraceExit(bool mediump_param(half value)) when $13 is true
386copy_slot_unmasked             $19 = [mediump_param].result
387label                          label 0x0000000C
388copy_slot_masked               $18 = Mask($19)
389label                          label 0x00000002
390load_condition_mask            CondMask = $21
391copy_constant                  $1 = 0
392merge_condition_mask           CondMask = $17 & $18
393branch_if_no_lanes_active      branch_if_no_lanes_active +18 (label 1 at #376)
394trace_enter                    TraceEnter(bool lowp_param(half value)) when $13 is true
395copy_constant                  value₂ = 0x40400000 (3.0)
396trace_var                      TraceVar(value₂) when $13 is true
397copy_constant                  $2 = 0
398copy_slot_unmasked             $3 = $13
399copy_slot_masked               $2 = Mask($3)
400trace_scope                    TraceScope(+1) when $2 is true
401trace_line                     TraceLine(55) when $13 is true
402copy_slot_unmasked             $3 = value₂
403cmpeq_imm_float                $3 = equal($3, 0x40400000 (3.0))
404copy_slot_masked               [lowp_param].result = Mask($3)
405trace_var                      TraceVar([lowp_param].result) when $13 is true
406trace_scope                    TraceScope(-1) when $2 is true
407trace_exit                     TraceExit(bool lowp_param(half value)) when $13 is true
408copy_slot_unmasked             $2 = [lowp_param].result
409label                          label 0x0000000D
410copy_slot_masked               $1 = Mask($2)
411label                          label 0x00000001
412load_condition_mask            CondMask = $17
413swizzle_4                      $1..4 = ($1..4).xxxx
414copy_4_slots_unmasked          $5..8 = red
415copy_4_slots_unmasked          $9..12 = green
416mix_4_ints                     $1..4 = mix($5..8, $9..12, $1..4)
417copy_4_slots_unmasked          [main].result = $1..4
418trace_var                      TraceVar([main].result) when $13 is true
419trace_scope                    TraceScope(-1) when $0 is true
420trace_exit                     TraceExit(vec4 main(vec2 coords)) when $13 is true
421load_src                       src.rgba = [main].result
422