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>
119 lines
2.8 KiB
Plaintext
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
|