skia2/tests/sksl/runtime/RecursiveComparison_Vectors.skvm
John Stiles 7b40626ca9 Fix debugger return-value display with repeated function calls.
The slot-assignment logic has been changed to associate slots with
function calls, instead of function definitions. In our test case, you
can now see that the calls to `get` are now mapped to $15, $17 and $18.
This change also jiggles some existing tests and improves their
register allocation slightly (!).

One minor hitch here is that there's no FunctionCall node associated
with main() (it's never explicitly called). However, our slot map key
can be any IRNode, and we know main() can't be called by anyone else,
so it's harmless to use the function definition as the key in this case.
(This entry could probably stay out the map entirely if it made a
difference, but I don't think it matters.)

Change-Id: I68a6ff24cbd3a2db77f24126502bd3d11e8c0962
Bug: skia:13011
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/514578
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
2022-03-03 20:55:25 +00:00

119 lines
2.8 KiB
Plaintext

26 registers, 116 instructions:
0 r0 = uniform32 ptr0 4
1 r1 = uniform32 ptr0 8
2 r2 = uniform32 ptr0 C
3 r3 = uniform32 ptr0 10
4 r4 = uniform32 ptr0 14
5 r5 = uniform32 ptr0 18
6 r6 = uniform32 ptr0 1C
7 r7 = uniform32 ptr0 20
8 r8 = splat 0 (0)
9 r9 = splat FFFFFFFF (nan)
10 r10 = div_f32 r0 r2
11 r11 = div_f32 r2 r0
12 r12 = mul_f32 r0 r2
13 r8 = sub_f32 r8 r0
14 r8 = mul_f32 r2 r8
15 r13 = splat 42280000 (42)
16 r13 = mul_f32 r1 r13
17 r14 = splat 422C0000 (43)
18 r14 = mul_f32 r1 r14
19 r15 = splat 42300000 (44)
20 r15 = mul_f32 r1 r15
21 r16 = splat 42340000 (45)
22 r16 = mul_f32 r1 r16
23 r17 = splat 3F800000 (1)
24 r17 = add_f32 r0 r17
25 r18 = mul_f32 r13 r17
26 r19 = mul_f32 r8 r17
27 r20 = mul_f32 r12 r17
28 r21 = mul_f32 r14 r17
29 r22 = eq_f32 r13 r18
30 r23 = eq_f32 r8 r19
31 r24 = eq_f32 r12 r20
32 r25 = eq_f32 r14 r21
33 r23 = bit_and r22 r23
34 r23 = bit_and r24 r23
35 r23 = bit_and r25 r23
36 r18 = neq_f32 r13 r18
37 r19 = neq_f32 r8 r19
38 r20 = neq_f32 r12 r20
39 r21 = neq_f32 r14 r21
40 r19 = bit_or r18 r19
41 r19 = bit_or r20 r19
42 r19 = bit_or r21 r19
43 r19 = bit_and r23 r19
44 r19 = bit_xor r9 r19
45 r19 = bit_and r23 r19
46 r23 = mul_f32 r10 r17
47 r17 = mul_f32 r11 r17
48 r20 = eq_f32 r10 r23
49 r24 = eq_f32 r11 r17
50 r20 = bit_and r22 r20
51 r20 = bit_and r24 r20
52 r20 = bit_and r25 r20
53 r23 = neq_f32 r10 r23
54 r17 = neq_f32 r11 r17
55 r23 = bit_or r18 r23
56 r23 = bit_or r17 r23
57 r23 = bit_or r21 r23
58 r23 = bit_and r19 r23
59 r23 = bit_and r19 r23
60 r20 = bit_and r20 r23
61 r20 = bit_xor r9 r20
62 r20 = bit_and r23 r20
63 r23 = splat 40000000 (2)
64 r23 = add_f32 r0 r23
65 r19 = mul_f32 r13 r23
66 r21 = mul_f32 r14 r23
67 r17 = mul_f32 r15 r23
68 r18 = mul_f32 r16 r23
69 r11 = eq_f32 r13 r19
70 r25 = eq_f32 r14 r21
71 r24 = eq_f32 r15 r17
72 r22 = eq_f32 r16 r18
73 r25 = bit_and r11 r25
74 r25 = bit_and r24 r25
75 r25 = bit_and r22 r25
76 r19 = neq_f32 r13 r19
77 r21 = neq_f32 r14 r21
78 r17 = neq_f32 r15 r17
79 r18 = neq_f32 r16 r18
80 r21 = bit_or r19 r21
81 r21 = bit_or r17 r21
82 r21 = bit_or r18 r21
83 r21 = bit_and r20 r21
84 r21 = bit_and r20 r21
85 r25 = bit_and r25 r21
86 r25 = bit_xor r9 r25
87 r25 = bit_and r21 r25
88 r21 = mul_f32 r10 r23
89 r20 = mul_f32 r8 r23
90 r23 = mul_f32 r12 r23
91 r18 = eq_f32 r10 r21
92 r17 = eq_f32 r8 r20
93 r16 = eq_f32 r12 r23
94 r17 = bit_and r18 r17
95 r17 = bit_and r16 r17
96 r17 = bit_and r11 r17
97 r21 = neq_f32 r10 r21
98 r20 = neq_f32 r8 r20
99 r23 = neq_f32 r12 r23
100 r20 = bit_or r21 r20
101 r20 = bit_or r23 r20
102 r20 = bit_or r19 r20
103 r20 = bit_and r25 r20
104 r20 = bit_and r25 r20
105 r17 = bit_and r17 r20
106 r17 = bit_xor r9 r17
107 r17 = bit_and r20 r17
108 r4 = select r17 r0 r4
109 r5 = select r17 r1 r5
110 r6 = select r17 r2 r6
111 r7 = select r17 r3 r7
loop:
112 store32 ptr1 r4
113 store32 ptr2 r5
114 store32 ptr3 r6
115 store32 ptr4 r7