059d34594e
SkVM has a `bit_clear` opcode dedicated to the operation `x & ~y`, but the optimizer was not smart enough to combine a bit-and with a bit-not and replace it with a bit-clear. Now, it can. Change-Id: Ida5345c3def0a4bf7afa08bb7f7835e1e2e37677 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/524225 Commit-Queue: John Stiles <johnstiles@google.com> Auto-Submit: John Stiles <johnstiles@google.com> Reviewed-by: Arman Uguray <armansito@google.com>
199 lines
5.0 KiB
Plaintext
199 lines
5.0 KiB
Plaintext
17 registers, 196 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 FFFFFFFF (nan)
|
|
9 r9 = trunc r1
|
|
10 r10 = splat 1 (1.4012985e-45)
|
|
11 r9 = eq_i32 r9 r10
|
|
12 r11 = bit_and r9 r10
|
|
13 r11 = add_i32 r11 r10
|
|
14 r12 = splat 2 (2.8025969e-45)
|
|
15 r12 = eq_i32 r11 r12
|
|
16 r11 = bit_and r9 r12
|
|
17 r13 = bit_and r11 r10
|
|
18 r8 = bit_xor r11 r8
|
|
19 r14 = add_i32 r13 r10
|
|
20 r8 = bit_or r11 r8
|
|
21 r15 = bit_and r11 r8
|
|
22 r13 = select r15 r14 r13
|
|
23 r8 = bit_clear r8 r15
|
|
24 r14 = add_i32 r13 r10
|
|
25 r16 = bit_and r11 r8
|
|
26 r13 = select r16 r14 r13
|
|
27 r8 = bit_or r15 r8
|
|
28 r15 = bit_and r11 r8
|
|
29 r14 = add_i32 r13 r10
|
|
30 r13 = select r15 r14 r13
|
|
31 r8 = bit_clear r8 r15
|
|
32 r14 = add_i32 r13 r10
|
|
33 r16 = bit_and r11 r8
|
|
34 r13 = select r16 r14 r13
|
|
35 r8 = bit_or r15 r8
|
|
36 r15 = bit_and r11 r8
|
|
37 r14 = add_i32 r13 r10
|
|
38 r13 = select r15 r14 r13
|
|
39 r8 = bit_clear r8 r15
|
|
40 r14 = add_i32 r13 r10
|
|
41 r16 = bit_and r11 r8
|
|
42 r13 = select r16 r14 r13
|
|
43 r8 = bit_or r15 r8
|
|
44 r15 = bit_and r11 r8
|
|
45 r14 = add_i32 r13 r10
|
|
46 r13 = select r15 r14 r13
|
|
47 r8 = bit_clear r8 r15
|
|
48 r14 = add_i32 r13 r10
|
|
49 r16 = bit_and r11 r8
|
|
50 r13 = select r16 r14 r13
|
|
51 r8 = bit_or r15 r8
|
|
52 r15 = bit_and r11 r8
|
|
53 r14 = add_i32 r13 r10
|
|
54 r13 = select r15 r14 r13
|
|
55 r8 = bit_clear r8 r15
|
|
56 r14 = add_i32 r13 r10
|
|
57 r16 = bit_and r11 r8
|
|
58 r13 = select r16 r14 r13
|
|
59 r8 = bit_or r15 r8
|
|
60 r15 = bit_and r11 r8
|
|
61 r14 = add_i32 r13 r10
|
|
62 r13 = select r15 r14 r13
|
|
63 r8 = bit_clear r8 r15
|
|
64 r14 = add_i32 r13 r10
|
|
65 r16 = bit_and r11 r8
|
|
66 r13 = select r16 r14 r13
|
|
67 r8 = bit_or r15 r8
|
|
68 r15 = bit_and r11 r8
|
|
69 r14 = add_i32 r13 r10
|
|
70 r13 = select r15 r14 r13
|
|
71 r8 = bit_clear r8 r15
|
|
72 r14 = add_i32 r13 r10
|
|
73 r16 = bit_and r11 r8
|
|
74 r13 = select r16 r14 r13
|
|
75 r8 = bit_or r15 r8
|
|
76 r15 = bit_and r11 r8
|
|
77 r14 = add_i32 r13 r10
|
|
78 r13 = select r15 r14 r13
|
|
79 r8 = bit_clear r8 r15
|
|
80 r14 = add_i32 r13 r10
|
|
81 r16 = bit_and r11 r8
|
|
82 r13 = select r16 r14 r13
|
|
83 r8 = bit_or r15 r8
|
|
84 r15 = bit_and r11 r8
|
|
85 r14 = add_i32 r13 r10
|
|
86 r13 = select r15 r14 r13
|
|
87 r15 = bit_clear r8 r15
|
|
88 r8 = add_i32 r13 r10
|
|
89 r15 = bit_and r11 r15
|
|
90 r13 = select r15 r8 r13
|
|
91 r8 = add_i32 r13 r10
|
|
92 r13 = select r12 r8 r13
|
|
93 r8 = splat B (1.5414283e-44)
|
|
94 r8 = eq_i32 r13 r8
|
|
95 r8 = bit_and r12 r8
|
|
96 r8 = bit_and r12 r8
|
|
97 r9 = bit_and r9 r8
|
|
98 r12 = bit_and r9 r10
|
|
99 r13 = bit_clear r8 r9
|
|
100 r15 = add_i32 r12 r10
|
|
101 r11 = bit_clear r8 r13
|
|
102 r12 = select r11 r15 r12
|
|
103 r15 = bit_clear r9 r13
|
|
104 r11 = add_i32 r12 r10
|
|
105 r12 = select r15 r11 r12
|
|
106 r15 = bit_clear r8 r15
|
|
107 r15 = bit_clear r15 r13
|
|
108 r15 = bit_or r13 r15
|
|
109 r13 = add_i32 r12 r10
|
|
110 r11 = bit_clear r8 r15
|
|
111 r12 = select r11 r13 r12
|
|
112 r13 = bit_clear r9 r15
|
|
113 r11 = add_i32 r12 r10
|
|
114 r12 = select r13 r11 r12
|
|
115 r13 = bit_clear r8 r13
|
|
116 r13 = bit_clear r13 r15
|
|
117 r13 = bit_or r15 r13
|
|
118 r15 = add_i32 r12 r10
|
|
119 r11 = bit_clear r8 r13
|
|
120 r12 = select r11 r15 r12
|
|
121 r15 = bit_clear r9 r13
|
|
122 r11 = add_i32 r12 r10
|
|
123 r12 = select r15 r11 r12
|
|
124 r15 = bit_clear r8 r15
|
|
125 r15 = bit_clear r15 r13
|
|
126 r15 = bit_or r13 r15
|
|
127 r13 = add_i32 r12 r10
|
|
128 r11 = bit_clear r8 r15
|
|
129 r12 = select r11 r13 r12
|
|
130 r13 = bit_clear r9 r15
|
|
131 r11 = add_i32 r12 r10
|
|
132 r12 = select r13 r11 r12
|
|
133 r13 = bit_clear r8 r13
|
|
134 r13 = bit_clear r13 r15
|
|
135 r13 = bit_or r15 r13
|
|
136 r15 = add_i32 r12 r10
|
|
137 r11 = bit_clear r8 r13
|
|
138 r12 = select r11 r15 r12
|
|
139 r15 = bit_clear r9 r13
|
|
140 r11 = add_i32 r12 r10
|
|
141 r12 = select r15 r11 r12
|
|
142 r15 = bit_clear r8 r15
|
|
143 r15 = bit_clear r15 r13
|
|
144 r15 = bit_or r13 r15
|
|
145 r13 = add_i32 r12 r10
|
|
146 r11 = bit_clear r8 r15
|
|
147 r12 = select r11 r13 r12
|
|
148 r13 = bit_clear r9 r15
|
|
149 r11 = add_i32 r12 r10
|
|
150 r12 = select r13 r11 r12
|
|
151 r13 = bit_clear r8 r13
|
|
152 r13 = bit_clear r13 r15
|
|
153 r13 = bit_or r15 r13
|
|
154 r15 = add_i32 r12 r10
|
|
155 r11 = bit_clear r8 r13
|
|
156 r12 = select r11 r15 r12
|
|
157 r15 = bit_clear r9 r13
|
|
158 r11 = add_i32 r12 r10
|
|
159 r12 = select r15 r11 r12
|
|
160 r15 = bit_clear r8 r15
|
|
161 r15 = bit_clear r15 r13
|
|
162 r15 = bit_or r13 r15
|
|
163 r13 = add_i32 r12 r10
|
|
164 r11 = bit_clear r8 r15
|
|
165 r12 = select r11 r13 r12
|
|
166 r13 = bit_clear r9 r15
|
|
167 r11 = add_i32 r12 r10
|
|
168 r12 = select r13 r11 r12
|
|
169 r13 = bit_clear r8 r13
|
|
170 r13 = bit_clear r13 r15
|
|
171 r13 = bit_or r15 r13
|
|
172 r15 = add_i32 r12 r10
|
|
173 r11 = bit_clear r8 r13
|
|
174 r12 = select r11 r15 r12
|
|
175 r9 = bit_clear r9 r13
|
|
176 r15 = add_i32 r12 r10
|
|
177 r12 = select r9 r15 r12
|
|
178 r9 = bit_clear r8 r9
|
|
179 r9 = bit_clear r9 r13
|
|
180 r9 = bit_or r13 r9
|
|
181 r10 = add_i32 r12 r10
|
|
182 r9 = bit_clear r8 r9
|
|
183 r12 = select r9 r10 r12
|
|
184 r10 = splat 14 (2.8025969e-44)
|
|
185 r10 = eq_i32 r12 r10
|
|
186 r10 = bit_and r9 r10
|
|
187 r10 = bit_and r8 r10
|
|
188 r4 = select r10 r0 r4
|
|
189 r5 = select r10 r1 r5
|
|
190 r6 = select r10 r2 r6
|
|
191 r7 = select r10 r3 r7
|
|
loop:
|
|
192 store32 ptr1 r4
|
|
193 store32 ptr2 r5
|
|
194 store32 ptr3 r6
|
|
195 store32 ptr4 r7
|