7b40626ca9
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>
141 lines
3.4 KiB
Plaintext
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
|