skia2/tests/sksl/runtime/RecursiveComparison_Structs.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

141 lines
3.4 KiB
Plaintext

26 registers, 138 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 3F800000 (1)
22 r16 = add_f32 r0 r16
23 r17 = mul_f32 r13 r16
24 r18 = mul_f32 r8 r16
25 r19 = mul_f32 r12 r16
26 r20 = eq_f32 r13 r17
27 r21 = eq_f32 r8 r18
28 r22 = eq_f32 r12 r19
29 r21 = bit_and r20 r21
30 r21 = bit_and r22 r21
31 r22 = bit_and r13 r21
32 r20 = bit_and r8 r21
33 r23 = bit_and r12 r21
34 r24 = bit_and r17 r21
35 r18 = bit_and r18 r21
36 r19 = bit_and r19 r21
37 r24 = neq_f32 r22 r24
38 r18 = neq_f32 r20 r18
39 r19 = neq_f32 r23 r19
40 r18 = bit_or r24 r18
41 r18 = bit_or r19 r18
42 r18 = bit_and r21 r18
43 r18 = bit_xor r9 r18
44 r18 = bit_and r21 r18
45 r21 = bit_and r13 r18
46 r19 = bit_and r10 r18
47 r24 = bit_and r11 r18
48 r23 = bit_and r17 r18
49 r20 = mul_f32 r10 r16
50 r22 = bit_and r18 r20
51 r16 = mul_f32 r11 r16
52 r25 = bit_and r18 r16
53 r23 = neq_f32 r21 r23
54 r22 = neq_f32 r19 r22
55 r25 = neq_f32 r24 r25
56 r22 = bit_or r23 r22
57 r22 = bit_or r25 r22
58 r22 = bit_and r18 r22
59 r22 = bit_and r18 r22
60 r18 = bit_and r13 r22
61 r25 = bit_and r10 r22
62 r11 = bit_and r11 r22
63 r17 = bit_and r17 r22
64 r20 = bit_and r20 r22
65 r16 = bit_and r16 r22
66 r17 = eq_f32 r18 r17
67 r20 = eq_f32 r25 r20
68 r16 = eq_f32 r11 r16
69 r20 = bit_and r17 r20
70 r20 = bit_and r16 r20
71 r20 = bit_and r22 r20
72 r20 = bit_xor r9 r20
73 r20 = bit_and r22 r20
74 r22 = splat 40000000 (2)
75 r22 = add_f32 r0 r22
76 r16 = bit_and r13 r20
77 r17 = bit_and r14 r20
78 r11 = bit_and r15 r20
79 r25 = mul_f32 r13 r22
80 r18 = bit_and r20 r25
81 r23 = mul_f32 r14 r22
82 r24 = bit_and r20 r23
83 r18 = neq_f32 r16 r18
84 r24 = neq_f32 r17 r24
85 r11 = neq_f32 r11 r11
86 r24 = bit_or r18 r24
87 r24 = bit_or r11 r24
88 r24 = bit_and r20 r24
89 r24 = bit_and r20 r24
90 r13 = bit_and r13 r24
91 r14 = bit_and r14 r24
92 r15 = bit_and r15 r24
93 r25 = bit_and r25 r24
94 r23 = bit_and r23 r24
95 r25 = eq_f32 r13 r25
96 r23 = eq_f32 r14 r23
97 r15 = eq_f32 r15 r15
98 r23 = bit_and r25 r23
99 r23 = bit_and r15 r23
100 r23 = bit_and r24 r23
101 r23 = bit_xor r9 r23
102 r23 = bit_and r24 r23
103 r24 = bit_and r10 r23
104 r15 = bit_and r8 r23
105 r25 = bit_and r12 r23
106 r14 = mul_f32 r10 r22
107 r13 = bit_and r23 r14
108 r22 = mul_f32 r8 r22
109 r20 = bit_and r23 r22
110 r13 = neq_f32 r24 r13
111 r20 = neq_f32 r15 r20
112 r25 = neq_f32 r25 r25
113 r20 = bit_or r13 r20
114 r20 = bit_or r25 r20
115 r20 = bit_and r23 r20
116 r20 = bit_and r23 r20
117 r10 = bit_and r10 r20
118 r8 = bit_and r8 r20
119 r12 = bit_and r12 r20
120 r14 = bit_and r14 r20
121 r22 = bit_and r22 r20
122 r14 = eq_f32 r10 r14
123 r22 = eq_f32 r8 r22
124 r12 = eq_f32 r12 r12
125 r22 = bit_and r14 r22
126 r22 = bit_and r12 r22
127 r22 = bit_and r20 r22
128 r22 = bit_xor r9 r22
129 r22 = bit_and r20 r22
130 r4 = select r22 r0 r4
131 r5 = select r22 r1 r5
132 r6 = select r22 r2 r6
133 r7 = select r22 r3 r7
loop:
134 store32 ptr1 r4
135 store32 ptr2 r5
136 store32 ptr3 r6
137 store32 ptr4 r7