xref: /linux/lib/raid/xor/alpha/xor.c (revision 440d6635b20037bc9ad46b20817d7b61cef0fc1b)
1503793b1SChristoph Hellwig // SPDX-License-Identifier: GPL-2.0-or-later
2503793b1SChristoph Hellwig /*
3503793b1SChristoph Hellwig  * Optimized XOR parity functions for alpha EV5 and EV6
4503793b1SChristoph Hellwig  */
5e20043b4SChristoph Hellwig #include "xor_impl.h"
6e20043b4SChristoph Hellwig #include "xor_arch.h"
7503793b1SChristoph Hellwig 
8503793b1SChristoph Hellwig extern void
9503793b1SChristoph Hellwig xor_alpha_2(unsigned long bytes, unsigned long * __restrict p1,
10503793b1SChristoph Hellwig 	    const unsigned long * __restrict p2);
11503793b1SChristoph Hellwig extern void
12503793b1SChristoph Hellwig xor_alpha_3(unsigned long bytes, unsigned long * __restrict p1,
13503793b1SChristoph Hellwig 	    const unsigned long * __restrict p2,
14503793b1SChristoph Hellwig 	    const unsigned long * __restrict p3);
15503793b1SChristoph Hellwig extern void
16503793b1SChristoph Hellwig xor_alpha_4(unsigned long bytes, unsigned long * __restrict p1,
17503793b1SChristoph Hellwig 	    const unsigned long * __restrict p2,
18503793b1SChristoph Hellwig 	    const unsigned long * __restrict p3,
19503793b1SChristoph Hellwig 	    const unsigned long * __restrict p4);
20503793b1SChristoph Hellwig extern void
21503793b1SChristoph Hellwig xor_alpha_5(unsigned long bytes, unsigned long * __restrict p1,
22503793b1SChristoph Hellwig 	    const unsigned long * __restrict p2,
23503793b1SChristoph Hellwig 	    const unsigned long * __restrict p3,
24503793b1SChristoph Hellwig 	    const unsigned long * __restrict p4,
25503793b1SChristoph Hellwig 	    const unsigned long * __restrict p5);
26503793b1SChristoph Hellwig 
27503793b1SChristoph Hellwig extern void
28503793b1SChristoph Hellwig xor_alpha_prefetch_2(unsigned long bytes, unsigned long * __restrict p1,
29503793b1SChristoph Hellwig 		     const unsigned long * __restrict p2);
30503793b1SChristoph Hellwig extern void
31503793b1SChristoph Hellwig xor_alpha_prefetch_3(unsigned long bytes, unsigned long * __restrict p1,
32503793b1SChristoph Hellwig 		     const unsigned long * __restrict p2,
33503793b1SChristoph Hellwig 		     const unsigned long * __restrict p3);
34503793b1SChristoph Hellwig extern void
35503793b1SChristoph Hellwig xor_alpha_prefetch_4(unsigned long bytes, unsigned long * __restrict p1,
36503793b1SChristoph Hellwig 		     const unsigned long * __restrict p2,
37503793b1SChristoph Hellwig 		     const unsigned long * __restrict p3,
38503793b1SChristoph Hellwig 		     const unsigned long * __restrict p4);
39503793b1SChristoph Hellwig extern void
40503793b1SChristoph Hellwig xor_alpha_prefetch_5(unsigned long bytes, unsigned long * __restrict p1,
41503793b1SChristoph Hellwig 		     const unsigned long * __restrict p2,
42503793b1SChristoph Hellwig 		     const unsigned long * __restrict p3,
43503793b1SChristoph Hellwig 		     const unsigned long * __restrict p4,
44503793b1SChristoph Hellwig 		     const unsigned long * __restrict p5);
45503793b1SChristoph Hellwig 
46503793b1SChristoph Hellwig asm("								\n\
47503793b1SChristoph Hellwig 	.text							\n\
48503793b1SChristoph Hellwig 	.align 3						\n\
49503793b1SChristoph Hellwig 	.ent xor_alpha_2					\n\
50503793b1SChristoph Hellwig xor_alpha_2:							\n\
51503793b1SChristoph Hellwig 	.prologue 0						\n\
52503793b1SChristoph Hellwig 	srl $16, 6, $16						\n\
53503793b1SChristoph Hellwig 	.align 4						\n\
54503793b1SChristoph Hellwig 2:								\n\
55503793b1SChristoph Hellwig 	ldq $0,0($17)						\n\
56503793b1SChristoph Hellwig 	ldq $1,0($18)						\n\
57503793b1SChristoph Hellwig 	ldq $2,8($17)						\n\
58503793b1SChristoph Hellwig 	ldq $3,8($18)						\n\
59503793b1SChristoph Hellwig 								\n\
60503793b1SChristoph Hellwig 	ldq $4,16($17)						\n\
61503793b1SChristoph Hellwig 	ldq $5,16($18)						\n\
62503793b1SChristoph Hellwig 	ldq $6,24($17)						\n\
63503793b1SChristoph Hellwig 	ldq $7,24($18)						\n\
64503793b1SChristoph Hellwig 								\n\
65503793b1SChristoph Hellwig 	ldq $19,32($17)						\n\
66503793b1SChristoph Hellwig 	ldq $20,32($18)						\n\
67503793b1SChristoph Hellwig 	ldq $21,40($17)						\n\
68503793b1SChristoph Hellwig 	ldq $22,40($18)						\n\
69503793b1SChristoph Hellwig 								\n\
70503793b1SChristoph Hellwig 	ldq $23,48($17)						\n\
71503793b1SChristoph Hellwig 	ldq $24,48($18)						\n\
72503793b1SChristoph Hellwig 	ldq $25,56($17)						\n\
73503793b1SChristoph Hellwig 	xor $0,$1,$0		# 7 cycles from $1 load		\n\
74503793b1SChristoph Hellwig 								\n\
75503793b1SChristoph Hellwig 	ldq $27,56($18)						\n\
76503793b1SChristoph Hellwig 	xor $2,$3,$2						\n\
77503793b1SChristoph Hellwig 	stq $0,0($17)						\n\
78503793b1SChristoph Hellwig 	xor $4,$5,$4						\n\
79503793b1SChristoph Hellwig 								\n\
80503793b1SChristoph Hellwig 	stq $2,8($17)						\n\
81503793b1SChristoph Hellwig 	xor $6,$7,$6						\n\
82503793b1SChristoph Hellwig 	stq $4,16($17)						\n\
83503793b1SChristoph Hellwig 	xor $19,$20,$19						\n\
84503793b1SChristoph Hellwig 								\n\
85503793b1SChristoph Hellwig 	stq $6,24($17)						\n\
86503793b1SChristoph Hellwig 	xor $21,$22,$21						\n\
87503793b1SChristoph Hellwig 	stq $19,32($17)						\n\
88503793b1SChristoph Hellwig 	xor $23,$24,$23						\n\
89503793b1SChristoph Hellwig 								\n\
90503793b1SChristoph Hellwig 	stq $21,40($17)						\n\
91503793b1SChristoph Hellwig 	xor $25,$27,$25						\n\
92503793b1SChristoph Hellwig 	stq $23,48($17)						\n\
93503793b1SChristoph Hellwig 	subq $16,1,$16						\n\
94503793b1SChristoph Hellwig 								\n\
95503793b1SChristoph Hellwig 	stq $25,56($17)						\n\
96503793b1SChristoph Hellwig 	addq $17,64,$17						\n\
97503793b1SChristoph Hellwig 	addq $18,64,$18						\n\
98503793b1SChristoph Hellwig 	bgt $16,2b						\n\
99503793b1SChristoph Hellwig 								\n\
100503793b1SChristoph Hellwig 	ret							\n\
101503793b1SChristoph Hellwig 	.end xor_alpha_2					\n\
102503793b1SChristoph Hellwig 								\n\
103503793b1SChristoph Hellwig 	.align 3						\n\
104503793b1SChristoph Hellwig 	.ent xor_alpha_3					\n\
105503793b1SChristoph Hellwig xor_alpha_3:							\n\
106503793b1SChristoph Hellwig 	.prologue 0						\n\
107503793b1SChristoph Hellwig 	srl $16, 6, $16						\n\
108503793b1SChristoph Hellwig 	.align 4						\n\
109503793b1SChristoph Hellwig 3:								\n\
110503793b1SChristoph Hellwig 	ldq $0,0($17)						\n\
111503793b1SChristoph Hellwig 	ldq $1,0($18)						\n\
112503793b1SChristoph Hellwig 	ldq $2,0($19)						\n\
113503793b1SChristoph Hellwig 	ldq $3,8($17)						\n\
114503793b1SChristoph Hellwig 								\n\
115503793b1SChristoph Hellwig 	ldq $4,8($18)						\n\
116503793b1SChristoph Hellwig 	ldq $6,16($17)						\n\
117503793b1SChristoph Hellwig 	ldq $7,16($18)						\n\
118503793b1SChristoph Hellwig 	ldq $21,24($17)						\n\
119503793b1SChristoph Hellwig 								\n\
120503793b1SChristoph Hellwig 	ldq $22,24($18)						\n\
121503793b1SChristoph Hellwig 	ldq $24,32($17)						\n\
122503793b1SChristoph Hellwig 	ldq $25,32($18)						\n\
123503793b1SChristoph Hellwig 	ldq $5,8($19)						\n\
124503793b1SChristoph Hellwig 								\n\
125503793b1SChristoph Hellwig 	ldq $20,16($19)						\n\
126503793b1SChristoph Hellwig 	ldq $23,24($19)						\n\
127503793b1SChristoph Hellwig 	ldq $27,32($19)						\n\
128503793b1SChristoph Hellwig 	nop							\n\
129503793b1SChristoph Hellwig 								\n\
130503793b1SChristoph Hellwig 	xor $0,$1,$1		# 8 cycles from $0 load		\n\
131503793b1SChristoph Hellwig 	xor $3,$4,$4		# 6 cycles from $4 load		\n\
132503793b1SChristoph Hellwig 	xor $6,$7,$7		# 6 cycles from $7 load		\n\
133503793b1SChristoph Hellwig 	xor $21,$22,$22		# 5 cycles from $22 load	\n\
134503793b1SChristoph Hellwig 								\n\
135503793b1SChristoph Hellwig 	xor $1,$2,$2		# 9 cycles from $2 load		\n\
136503793b1SChristoph Hellwig 	xor $24,$25,$25		# 5 cycles from $25 load	\n\
137503793b1SChristoph Hellwig 	stq $2,0($17)						\n\
138503793b1SChristoph Hellwig 	xor $4,$5,$5		# 6 cycles from $5 load		\n\
139503793b1SChristoph Hellwig 								\n\
140503793b1SChristoph Hellwig 	stq $5,8($17)						\n\
141503793b1SChristoph Hellwig 	xor $7,$20,$20		# 7 cycles from $20 load	\n\
142503793b1SChristoph Hellwig 	stq $20,16($17)						\n\
143503793b1SChristoph Hellwig 	xor $22,$23,$23		# 7 cycles from $23 load	\n\
144503793b1SChristoph Hellwig 								\n\
145503793b1SChristoph Hellwig 	stq $23,24($17)						\n\
146503793b1SChristoph Hellwig 	xor $25,$27,$27		# 7 cycles from $27 load	\n\
147503793b1SChristoph Hellwig 	stq $27,32($17)						\n\
148503793b1SChristoph Hellwig 	nop							\n\
149503793b1SChristoph Hellwig 								\n\
150503793b1SChristoph Hellwig 	ldq $0,40($17)						\n\
151503793b1SChristoph Hellwig 	ldq $1,40($18)						\n\
152503793b1SChristoph Hellwig 	ldq $3,48($17)						\n\
153503793b1SChristoph Hellwig 	ldq $4,48($18)						\n\
154503793b1SChristoph Hellwig 								\n\
155503793b1SChristoph Hellwig 	ldq $6,56($17)						\n\
156503793b1SChristoph Hellwig 	ldq $7,56($18)						\n\
157503793b1SChristoph Hellwig 	ldq $2,40($19)						\n\
158503793b1SChristoph Hellwig 	ldq $5,48($19)						\n\
159503793b1SChristoph Hellwig 								\n\
160503793b1SChristoph Hellwig 	ldq $20,56($19)						\n\
161503793b1SChristoph Hellwig 	xor $0,$1,$1		# 4 cycles from $1 load		\n\
162503793b1SChristoph Hellwig 	xor $3,$4,$4		# 5 cycles from $4 load		\n\
163503793b1SChristoph Hellwig 	xor $6,$7,$7		# 5 cycles from $7 load		\n\
164503793b1SChristoph Hellwig 								\n\
165503793b1SChristoph Hellwig 	xor $1,$2,$2		# 4 cycles from $2 load		\n\
166503793b1SChristoph Hellwig 	xor $4,$5,$5		# 5 cycles from $5 load		\n\
167503793b1SChristoph Hellwig 	stq $2,40($17)						\n\
168503793b1SChristoph Hellwig 	xor $7,$20,$20		# 4 cycles from $20 load	\n\
169503793b1SChristoph Hellwig 								\n\
170503793b1SChristoph Hellwig 	stq $5,48($17)						\n\
171503793b1SChristoph Hellwig 	subq $16,1,$16						\n\
172503793b1SChristoph Hellwig 	stq $20,56($17)						\n\
173503793b1SChristoph Hellwig 	addq $19,64,$19						\n\
174503793b1SChristoph Hellwig 								\n\
175503793b1SChristoph Hellwig 	addq $18,64,$18						\n\
176503793b1SChristoph Hellwig 	addq $17,64,$17						\n\
177503793b1SChristoph Hellwig 	bgt $16,3b						\n\
178503793b1SChristoph Hellwig 	ret							\n\
179503793b1SChristoph Hellwig 	.end xor_alpha_3					\n\
180503793b1SChristoph Hellwig 								\n\
181503793b1SChristoph Hellwig 	.align 3						\n\
182503793b1SChristoph Hellwig 	.ent xor_alpha_4					\n\
183503793b1SChristoph Hellwig xor_alpha_4:							\n\
184503793b1SChristoph Hellwig 	.prologue 0						\n\
185503793b1SChristoph Hellwig 	srl $16, 6, $16						\n\
186503793b1SChristoph Hellwig 	.align 4						\n\
187503793b1SChristoph Hellwig 4:								\n\
188503793b1SChristoph Hellwig 	ldq $0,0($17)						\n\
189503793b1SChristoph Hellwig 	ldq $1,0($18)						\n\
190503793b1SChristoph Hellwig 	ldq $2,0($19)						\n\
191503793b1SChristoph Hellwig 	ldq $3,0($20)						\n\
192503793b1SChristoph Hellwig 								\n\
193503793b1SChristoph Hellwig 	ldq $4,8($17)						\n\
194503793b1SChristoph Hellwig 	ldq $5,8($18)						\n\
195503793b1SChristoph Hellwig 	ldq $6,8($19)						\n\
196503793b1SChristoph Hellwig 	ldq $7,8($20)						\n\
197503793b1SChristoph Hellwig 								\n\
198503793b1SChristoph Hellwig 	ldq $21,16($17)						\n\
199503793b1SChristoph Hellwig 	ldq $22,16($18)						\n\
200503793b1SChristoph Hellwig 	ldq $23,16($19)						\n\
201503793b1SChristoph Hellwig 	ldq $24,16($20)						\n\
202503793b1SChristoph Hellwig 								\n\
203503793b1SChristoph Hellwig 	ldq $25,24($17)						\n\
204503793b1SChristoph Hellwig 	xor $0,$1,$1		# 6 cycles from $1 load		\n\
205503793b1SChristoph Hellwig 	ldq $27,24($18)						\n\
206503793b1SChristoph Hellwig 	xor $2,$3,$3		# 6 cycles from $3 load		\n\
207503793b1SChristoph Hellwig 								\n\
208503793b1SChristoph Hellwig 	ldq $0,24($19)						\n\
209503793b1SChristoph Hellwig 	xor $1,$3,$3						\n\
210503793b1SChristoph Hellwig 	ldq $1,24($20)						\n\
211503793b1SChristoph Hellwig 	xor $4,$5,$5		# 7 cycles from $5 load		\n\
212503793b1SChristoph Hellwig 								\n\
213503793b1SChristoph Hellwig 	stq $3,0($17)						\n\
214503793b1SChristoph Hellwig 	xor $6,$7,$7						\n\
215503793b1SChristoph Hellwig 	xor $21,$22,$22		# 7 cycles from $22 load	\n\
216503793b1SChristoph Hellwig 	xor $5,$7,$7						\n\
217503793b1SChristoph Hellwig 								\n\
218503793b1SChristoph Hellwig 	stq $7,8($17)						\n\
219503793b1SChristoph Hellwig 	xor $23,$24,$24		# 7 cycles from $24 load	\n\
220503793b1SChristoph Hellwig 	ldq $2,32($17)						\n\
221503793b1SChristoph Hellwig 	xor $22,$24,$24						\n\
222503793b1SChristoph Hellwig 								\n\
223503793b1SChristoph Hellwig 	ldq $3,32($18)						\n\
224503793b1SChristoph Hellwig 	ldq $4,32($19)						\n\
225503793b1SChristoph Hellwig 	ldq $5,32($20)						\n\
226503793b1SChristoph Hellwig 	xor $25,$27,$27		# 8 cycles from $27 load	\n\
227503793b1SChristoph Hellwig 								\n\
228503793b1SChristoph Hellwig 	ldq $6,40($17)						\n\
229503793b1SChristoph Hellwig 	ldq $7,40($18)						\n\
230503793b1SChristoph Hellwig 	ldq $21,40($19)						\n\
231503793b1SChristoph Hellwig 	ldq $22,40($20)						\n\
232503793b1SChristoph Hellwig 								\n\
233503793b1SChristoph Hellwig 	stq $24,16($17)						\n\
234503793b1SChristoph Hellwig 	xor $0,$1,$1		# 9 cycles from $1 load		\n\
235503793b1SChristoph Hellwig 	xor $2,$3,$3		# 5 cycles from $3 load		\n\
236503793b1SChristoph Hellwig 	xor $27,$1,$1						\n\
237503793b1SChristoph Hellwig 								\n\
238503793b1SChristoph Hellwig 	stq $1,24($17)						\n\
239503793b1SChristoph Hellwig 	xor $4,$5,$5		# 5 cycles from $5 load		\n\
240503793b1SChristoph Hellwig 	ldq $23,48($17)						\n\
241503793b1SChristoph Hellwig 	ldq $24,48($18)						\n\
242503793b1SChristoph Hellwig 								\n\
243503793b1SChristoph Hellwig 	ldq $25,48($19)						\n\
244503793b1SChristoph Hellwig 	xor $3,$5,$5						\n\
245503793b1SChristoph Hellwig 	ldq $27,48($20)						\n\
246503793b1SChristoph Hellwig 	ldq $0,56($17)						\n\
247503793b1SChristoph Hellwig 								\n\
248503793b1SChristoph Hellwig 	ldq $1,56($18)						\n\
249503793b1SChristoph Hellwig 	ldq $2,56($19)						\n\
250503793b1SChristoph Hellwig 	xor $6,$7,$7		# 8 cycles from $6 load		\n\
251503793b1SChristoph Hellwig 	ldq $3,56($20)						\n\
252503793b1SChristoph Hellwig 								\n\
253503793b1SChristoph Hellwig 	stq $5,32($17)						\n\
254503793b1SChristoph Hellwig 	xor $21,$22,$22		# 8 cycles from $22 load	\n\
255503793b1SChristoph Hellwig 	xor $7,$22,$22						\n\
256503793b1SChristoph Hellwig 	xor $23,$24,$24		# 5 cycles from $24 load	\n\
257503793b1SChristoph Hellwig 								\n\
258503793b1SChristoph Hellwig 	stq $22,40($17)						\n\
259503793b1SChristoph Hellwig 	xor $25,$27,$27		# 5 cycles from $27 load	\n\
260503793b1SChristoph Hellwig 	xor $24,$27,$27						\n\
261503793b1SChristoph Hellwig 	xor $0,$1,$1		# 5 cycles from $1 load		\n\
262503793b1SChristoph Hellwig 								\n\
263503793b1SChristoph Hellwig 	stq $27,48($17)						\n\
264503793b1SChristoph Hellwig 	xor $2,$3,$3		# 4 cycles from $3 load		\n\
265503793b1SChristoph Hellwig 	xor $1,$3,$3						\n\
266503793b1SChristoph Hellwig 	subq $16,1,$16						\n\
267503793b1SChristoph Hellwig 								\n\
268503793b1SChristoph Hellwig 	stq $3,56($17)						\n\
269503793b1SChristoph Hellwig 	addq $20,64,$20						\n\
270503793b1SChristoph Hellwig 	addq $19,64,$19						\n\
271503793b1SChristoph Hellwig 	addq $18,64,$18						\n\
272503793b1SChristoph Hellwig 								\n\
273503793b1SChristoph Hellwig 	addq $17,64,$17						\n\
274503793b1SChristoph Hellwig 	bgt $16,4b						\n\
275503793b1SChristoph Hellwig 	ret							\n\
276503793b1SChristoph Hellwig 	.end xor_alpha_4					\n\
277503793b1SChristoph Hellwig 								\n\
278503793b1SChristoph Hellwig 	.align 3						\n\
279503793b1SChristoph Hellwig 	.ent xor_alpha_5					\n\
280503793b1SChristoph Hellwig xor_alpha_5:							\n\
281503793b1SChristoph Hellwig 	.prologue 0						\n\
282503793b1SChristoph Hellwig 	srl $16, 6, $16						\n\
283503793b1SChristoph Hellwig 	.align 4						\n\
284503793b1SChristoph Hellwig 5:								\n\
285503793b1SChristoph Hellwig 	ldq $0,0($17)						\n\
286503793b1SChristoph Hellwig 	ldq $1,0($18)						\n\
287503793b1SChristoph Hellwig 	ldq $2,0($19)						\n\
288503793b1SChristoph Hellwig 	ldq $3,0($20)						\n\
289503793b1SChristoph Hellwig 								\n\
290503793b1SChristoph Hellwig 	ldq $4,0($21)						\n\
291503793b1SChristoph Hellwig 	ldq $5,8($17)						\n\
292503793b1SChristoph Hellwig 	ldq $6,8($18)						\n\
293503793b1SChristoph Hellwig 	ldq $7,8($19)						\n\
294503793b1SChristoph Hellwig 								\n\
295503793b1SChristoph Hellwig 	ldq $22,8($20)						\n\
296503793b1SChristoph Hellwig 	ldq $23,8($21)						\n\
297503793b1SChristoph Hellwig 	ldq $24,16($17)						\n\
298503793b1SChristoph Hellwig 	ldq $25,16($18)						\n\
299503793b1SChristoph Hellwig 								\n\
300503793b1SChristoph Hellwig 	ldq $27,16($19)						\n\
301503793b1SChristoph Hellwig 	xor $0,$1,$1		# 6 cycles from $1 load		\n\
302503793b1SChristoph Hellwig 	ldq $28,16($20)						\n\
303503793b1SChristoph Hellwig 	xor $2,$3,$3		# 6 cycles from $3 load		\n\
304503793b1SChristoph Hellwig 								\n\
305503793b1SChristoph Hellwig 	ldq $0,16($21)						\n\
306503793b1SChristoph Hellwig 	xor $1,$3,$3						\n\
307503793b1SChristoph Hellwig 	ldq $1,24($17)						\n\
308503793b1SChristoph Hellwig 	xor $3,$4,$4		# 7 cycles from $4 load		\n\
309503793b1SChristoph Hellwig 								\n\
310503793b1SChristoph Hellwig 	stq $4,0($17)						\n\
311503793b1SChristoph Hellwig 	xor $5,$6,$6		# 7 cycles from $6 load		\n\
312503793b1SChristoph Hellwig 	xor $7,$22,$22		# 7 cycles from $22 load	\n\
313503793b1SChristoph Hellwig 	xor $6,$23,$23		# 7 cycles from $23 load	\n\
314503793b1SChristoph Hellwig 								\n\
315503793b1SChristoph Hellwig 	ldq $2,24($18)						\n\
316503793b1SChristoph Hellwig 	xor $22,$23,$23						\n\
317503793b1SChristoph Hellwig 	ldq $3,24($19)						\n\
318503793b1SChristoph Hellwig 	xor $24,$25,$25		# 8 cycles from $25 load	\n\
319503793b1SChristoph Hellwig 								\n\
320503793b1SChristoph Hellwig 	stq $23,8($17)						\n\
321503793b1SChristoph Hellwig 	xor $25,$27,$27		# 8 cycles from $27 load	\n\
322503793b1SChristoph Hellwig 	ldq $4,24($20)						\n\
323503793b1SChristoph Hellwig 	xor $28,$0,$0		# 7 cycles from $0 load		\n\
324503793b1SChristoph Hellwig 								\n\
325503793b1SChristoph Hellwig 	ldq $5,24($21)						\n\
326503793b1SChristoph Hellwig 	xor $27,$0,$0						\n\
327503793b1SChristoph Hellwig 	ldq $6,32($17)						\n\
328503793b1SChristoph Hellwig 	ldq $7,32($18)						\n\
329503793b1SChristoph Hellwig 								\n\
330503793b1SChristoph Hellwig 	stq $0,16($17)						\n\
331503793b1SChristoph Hellwig 	xor $1,$2,$2		# 6 cycles from $2 load		\n\
332503793b1SChristoph Hellwig 	ldq $22,32($19)						\n\
333503793b1SChristoph Hellwig 	xor $3,$4,$4		# 4 cycles from $4 load		\n\
334503793b1SChristoph Hellwig 								\n\
335503793b1SChristoph Hellwig 	ldq $23,32($20)						\n\
336503793b1SChristoph Hellwig 	xor $2,$4,$4						\n\
337503793b1SChristoph Hellwig 	ldq $24,32($21)						\n\
338503793b1SChristoph Hellwig 	ldq $25,40($17)						\n\
339503793b1SChristoph Hellwig 								\n\
340503793b1SChristoph Hellwig 	ldq $27,40($18)						\n\
341503793b1SChristoph Hellwig 	ldq $28,40($19)						\n\
342503793b1SChristoph Hellwig 	ldq $0,40($20)						\n\
343503793b1SChristoph Hellwig 	xor $4,$5,$5		# 7 cycles from $5 load		\n\
344503793b1SChristoph Hellwig 								\n\
345503793b1SChristoph Hellwig 	stq $5,24($17)						\n\
346503793b1SChristoph Hellwig 	xor $6,$7,$7		# 7 cycles from $7 load		\n\
347503793b1SChristoph Hellwig 	ldq $1,40($21)						\n\
348503793b1SChristoph Hellwig 	ldq $2,48($17)						\n\
349503793b1SChristoph Hellwig 								\n\
350503793b1SChristoph Hellwig 	ldq $3,48($18)						\n\
351503793b1SChristoph Hellwig 	xor $7,$22,$22		# 7 cycles from $22 load	\n\
352503793b1SChristoph Hellwig 	ldq $4,48($19)						\n\
353503793b1SChristoph Hellwig 	xor $23,$24,$24		# 6 cycles from $24 load	\n\
354503793b1SChristoph Hellwig 								\n\
355503793b1SChristoph Hellwig 	ldq $5,48($20)						\n\
356503793b1SChristoph Hellwig 	xor $22,$24,$24						\n\
357503793b1SChristoph Hellwig 	ldq $6,48($21)						\n\
358503793b1SChristoph Hellwig 	xor $25,$27,$27		# 7 cycles from $27 load	\n\
359503793b1SChristoph Hellwig 								\n\
360503793b1SChristoph Hellwig 	stq $24,32($17)						\n\
361503793b1SChristoph Hellwig 	xor $27,$28,$28		# 8 cycles from $28 load	\n\
362503793b1SChristoph Hellwig 	ldq $7,56($17)						\n\
363503793b1SChristoph Hellwig 	xor $0,$1,$1		# 6 cycles from $1 load		\n\
364503793b1SChristoph Hellwig 								\n\
365503793b1SChristoph Hellwig 	ldq $22,56($18)						\n\
366503793b1SChristoph Hellwig 	ldq $23,56($19)						\n\
367503793b1SChristoph Hellwig 	ldq $24,56($20)						\n\
368503793b1SChristoph Hellwig 	ldq $25,56($21)						\n\
369503793b1SChristoph Hellwig 								\n\
370503793b1SChristoph Hellwig 	xor $28,$1,$1						\n\
371503793b1SChristoph Hellwig 	xor $2,$3,$3		# 9 cycles from $3 load		\n\
372503793b1SChristoph Hellwig 	xor $3,$4,$4		# 9 cycles from $4 load		\n\
373503793b1SChristoph Hellwig 	xor $5,$6,$6		# 8 cycles from $6 load		\n\
374503793b1SChristoph Hellwig 								\n\
375503793b1SChristoph Hellwig 	stq $1,40($17)						\n\
376503793b1SChristoph Hellwig 	xor $4,$6,$6						\n\
377503793b1SChristoph Hellwig 	xor $7,$22,$22		# 7 cycles from $22 load	\n\
378503793b1SChristoph Hellwig 	xor $23,$24,$24		# 6 cycles from $24 load	\n\
379503793b1SChristoph Hellwig 								\n\
380503793b1SChristoph Hellwig 	stq $6,48($17)						\n\
381503793b1SChristoph Hellwig 	xor $22,$24,$24						\n\
382503793b1SChristoph Hellwig 	subq $16,1,$16						\n\
383503793b1SChristoph Hellwig 	xor $24,$25,$25		# 8 cycles from $25 load	\n\
384503793b1SChristoph Hellwig 								\n\
385503793b1SChristoph Hellwig 	stq $25,56($17)						\n\
386503793b1SChristoph Hellwig 	addq $21,64,$21						\n\
387503793b1SChristoph Hellwig 	addq $20,64,$20						\n\
388503793b1SChristoph Hellwig 	addq $19,64,$19						\n\
389503793b1SChristoph Hellwig 								\n\
390503793b1SChristoph Hellwig 	addq $18,64,$18						\n\
391503793b1SChristoph Hellwig 	addq $17,64,$17						\n\
392503793b1SChristoph Hellwig 	bgt $16,5b						\n\
393503793b1SChristoph Hellwig 	ret							\n\
394503793b1SChristoph Hellwig 	.end xor_alpha_5					\n\
395503793b1SChristoph Hellwig 								\n\
396503793b1SChristoph Hellwig 	.align 3						\n\
397503793b1SChristoph Hellwig 	.ent xor_alpha_prefetch_2				\n\
398503793b1SChristoph Hellwig xor_alpha_prefetch_2:						\n\
399503793b1SChristoph Hellwig 	.prologue 0						\n\
400503793b1SChristoph Hellwig 	srl $16, 6, $16						\n\
401503793b1SChristoph Hellwig 								\n\
402503793b1SChristoph Hellwig 	ldq $31, 0($17)						\n\
403503793b1SChristoph Hellwig 	ldq $31, 0($18)						\n\
404503793b1SChristoph Hellwig 								\n\
405503793b1SChristoph Hellwig 	ldq $31, 64($17)					\n\
406503793b1SChristoph Hellwig 	ldq $31, 64($18)					\n\
407503793b1SChristoph Hellwig 								\n\
408503793b1SChristoph Hellwig 	ldq $31, 128($17)					\n\
409503793b1SChristoph Hellwig 	ldq $31, 128($18)					\n\
410503793b1SChristoph Hellwig 								\n\
411503793b1SChristoph Hellwig 	ldq $31, 192($17)					\n\
412503793b1SChristoph Hellwig 	ldq $31, 192($18)					\n\
413503793b1SChristoph Hellwig 	.align 4						\n\
414503793b1SChristoph Hellwig 2:								\n\
415503793b1SChristoph Hellwig 	ldq $0,0($17)						\n\
416503793b1SChristoph Hellwig 	ldq $1,0($18)						\n\
417503793b1SChristoph Hellwig 	ldq $2,8($17)						\n\
418503793b1SChristoph Hellwig 	ldq $3,8($18)						\n\
419503793b1SChristoph Hellwig 								\n\
420503793b1SChristoph Hellwig 	ldq $4,16($17)						\n\
421503793b1SChristoph Hellwig 	ldq $5,16($18)						\n\
422503793b1SChristoph Hellwig 	ldq $6,24($17)						\n\
423503793b1SChristoph Hellwig 	ldq $7,24($18)						\n\
424503793b1SChristoph Hellwig 								\n\
425503793b1SChristoph Hellwig 	ldq $19,32($17)						\n\
426503793b1SChristoph Hellwig 	ldq $20,32($18)						\n\
427503793b1SChristoph Hellwig 	ldq $21,40($17)						\n\
428503793b1SChristoph Hellwig 	ldq $22,40($18)						\n\
429503793b1SChristoph Hellwig 								\n\
430503793b1SChristoph Hellwig 	ldq $23,48($17)						\n\
431503793b1SChristoph Hellwig 	ldq $24,48($18)						\n\
432503793b1SChristoph Hellwig 	ldq $25,56($17)						\n\
433503793b1SChristoph Hellwig 	ldq $27,56($18)						\n\
434503793b1SChristoph Hellwig 								\n\
435503793b1SChristoph Hellwig 	ldq $31,256($17)					\n\
436503793b1SChristoph Hellwig 	xor $0,$1,$0		# 8 cycles from $1 load		\n\
437503793b1SChristoph Hellwig 	ldq $31,256($18)					\n\
438503793b1SChristoph Hellwig 	xor $2,$3,$2						\n\
439503793b1SChristoph Hellwig 								\n\
440503793b1SChristoph Hellwig 	stq $0,0($17)						\n\
441503793b1SChristoph Hellwig 	xor $4,$5,$4						\n\
442503793b1SChristoph Hellwig 	stq $2,8($17)						\n\
443503793b1SChristoph Hellwig 	xor $6,$7,$6						\n\
444503793b1SChristoph Hellwig 								\n\
445503793b1SChristoph Hellwig 	stq $4,16($17)						\n\
446503793b1SChristoph Hellwig 	xor $19,$20,$19						\n\
447503793b1SChristoph Hellwig 	stq $6,24($17)						\n\
448503793b1SChristoph Hellwig 	xor $21,$22,$21						\n\
449503793b1SChristoph Hellwig 								\n\
450503793b1SChristoph Hellwig 	stq $19,32($17)						\n\
451503793b1SChristoph Hellwig 	xor $23,$24,$23						\n\
452503793b1SChristoph Hellwig 	stq $21,40($17)						\n\
453503793b1SChristoph Hellwig 	xor $25,$27,$25						\n\
454503793b1SChristoph Hellwig 								\n\
455503793b1SChristoph Hellwig 	stq $23,48($17)						\n\
456503793b1SChristoph Hellwig 	subq $16,1,$16						\n\
457503793b1SChristoph Hellwig 	stq $25,56($17)						\n\
458503793b1SChristoph Hellwig 	addq $17,64,$17						\n\
459503793b1SChristoph Hellwig 								\n\
460503793b1SChristoph Hellwig 	addq $18,64,$18						\n\
461503793b1SChristoph Hellwig 	bgt $16,2b						\n\
462503793b1SChristoph Hellwig 	ret							\n\
463503793b1SChristoph Hellwig 	.end xor_alpha_prefetch_2				\n\
464503793b1SChristoph Hellwig 								\n\
465503793b1SChristoph Hellwig 	.align 3						\n\
466503793b1SChristoph Hellwig 	.ent xor_alpha_prefetch_3				\n\
467503793b1SChristoph Hellwig xor_alpha_prefetch_3:						\n\
468503793b1SChristoph Hellwig 	.prologue 0						\n\
469503793b1SChristoph Hellwig 	srl $16, 6, $16						\n\
470503793b1SChristoph Hellwig 								\n\
471503793b1SChristoph Hellwig 	ldq $31, 0($17)						\n\
472503793b1SChristoph Hellwig 	ldq $31, 0($18)						\n\
473503793b1SChristoph Hellwig 	ldq $31, 0($19)						\n\
474503793b1SChristoph Hellwig 								\n\
475503793b1SChristoph Hellwig 	ldq $31, 64($17)					\n\
476503793b1SChristoph Hellwig 	ldq $31, 64($18)					\n\
477503793b1SChristoph Hellwig 	ldq $31, 64($19)					\n\
478503793b1SChristoph Hellwig 								\n\
479503793b1SChristoph Hellwig 	ldq $31, 128($17)					\n\
480503793b1SChristoph Hellwig 	ldq $31, 128($18)					\n\
481503793b1SChristoph Hellwig 	ldq $31, 128($19)					\n\
482503793b1SChristoph Hellwig 								\n\
483503793b1SChristoph Hellwig 	ldq $31, 192($17)					\n\
484503793b1SChristoph Hellwig 	ldq $31, 192($18)					\n\
485503793b1SChristoph Hellwig 	ldq $31, 192($19)					\n\
486503793b1SChristoph Hellwig 	.align 4						\n\
487503793b1SChristoph Hellwig 3:								\n\
488503793b1SChristoph Hellwig 	ldq $0,0($17)						\n\
489503793b1SChristoph Hellwig 	ldq $1,0($18)						\n\
490503793b1SChristoph Hellwig 	ldq $2,0($19)						\n\
491503793b1SChristoph Hellwig 	ldq $3,8($17)						\n\
492503793b1SChristoph Hellwig 								\n\
493503793b1SChristoph Hellwig 	ldq $4,8($18)						\n\
494503793b1SChristoph Hellwig 	ldq $6,16($17)						\n\
495503793b1SChristoph Hellwig 	ldq $7,16($18)						\n\
496503793b1SChristoph Hellwig 	ldq $21,24($17)						\n\
497503793b1SChristoph Hellwig 								\n\
498503793b1SChristoph Hellwig 	ldq $22,24($18)						\n\
499503793b1SChristoph Hellwig 	ldq $24,32($17)						\n\
500503793b1SChristoph Hellwig 	ldq $25,32($18)						\n\
501503793b1SChristoph Hellwig 	ldq $5,8($19)						\n\
502503793b1SChristoph Hellwig 								\n\
503503793b1SChristoph Hellwig 	ldq $20,16($19)						\n\
504503793b1SChristoph Hellwig 	ldq $23,24($19)						\n\
505503793b1SChristoph Hellwig 	ldq $27,32($19)						\n\
506503793b1SChristoph Hellwig 	nop							\n\
507503793b1SChristoph Hellwig 								\n\
508503793b1SChristoph Hellwig 	xor $0,$1,$1		# 8 cycles from $0 load		\n\
509503793b1SChristoph Hellwig 	xor $3,$4,$4		# 7 cycles from $4 load		\n\
510503793b1SChristoph Hellwig 	xor $6,$7,$7		# 6 cycles from $7 load		\n\
511503793b1SChristoph Hellwig 	xor $21,$22,$22		# 5 cycles from $22 load	\n\
512503793b1SChristoph Hellwig 								\n\
513503793b1SChristoph Hellwig 	xor $1,$2,$2		# 9 cycles from $2 load		\n\
514503793b1SChristoph Hellwig 	xor $24,$25,$25		# 5 cycles from $25 load	\n\
515503793b1SChristoph Hellwig 	stq $2,0($17)						\n\
516503793b1SChristoph Hellwig 	xor $4,$5,$5		# 6 cycles from $5 load		\n\
517503793b1SChristoph Hellwig 								\n\
518503793b1SChristoph Hellwig 	stq $5,8($17)						\n\
519503793b1SChristoph Hellwig 	xor $7,$20,$20		# 7 cycles from $20 load	\n\
520503793b1SChristoph Hellwig 	stq $20,16($17)						\n\
521503793b1SChristoph Hellwig 	xor $22,$23,$23		# 7 cycles from $23 load	\n\
522503793b1SChristoph Hellwig 								\n\
523503793b1SChristoph Hellwig 	stq $23,24($17)						\n\
524503793b1SChristoph Hellwig 	xor $25,$27,$27		# 7 cycles from $27 load	\n\
525503793b1SChristoph Hellwig 	stq $27,32($17)						\n\
526503793b1SChristoph Hellwig 	nop							\n\
527503793b1SChristoph Hellwig 								\n\
528503793b1SChristoph Hellwig 	ldq $0,40($17)						\n\
529503793b1SChristoph Hellwig 	ldq $1,40($18)						\n\
530503793b1SChristoph Hellwig 	ldq $3,48($17)						\n\
531503793b1SChristoph Hellwig 	ldq $4,48($18)						\n\
532503793b1SChristoph Hellwig 								\n\
533503793b1SChristoph Hellwig 	ldq $6,56($17)						\n\
534503793b1SChristoph Hellwig 	ldq $7,56($18)						\n\
535503793b1SChristoph Hellwig 	ldq $2,40($19)						\n\
536503793b1SChristoph Hellwig 	ldq $5,48($19)						\n\
537503793b1SChristoph Hellwig 								\n\
538503793b1SChristoph Hellwig 	ldq $20,56($19)						\n\
539503793b1SChristoph Hellwig 	ldq $31,256($17)					\n\
540503793b1SChristoph Hellwig 	ldq $31,256($18)					\n\
541503793b1SChristoph Hellwig 	ldq $31,256($19)					\n\
542503793b1SChristoph Hellwig 								\n\
543503793b1SChristoph Hellwig 	xor $0,$1,$1		# 6 cycles from $1 load		\n\
544503793b1SChristoph Hellwig 	xor $3,$4,$4		# 5 cycles from $4 load		\n\
545503793b1SChristoph Hellwig 	xor $6,$7,$7		# 5 cycles from $7 load		\n\
546503793b1SChristoph Hellwig 	xor $1,$2,$2		# 4 cycles from $2 load		\n\
547503793b1SChristoph Hellwig 								\n\
548503793b1SChristoph Hellwig 	xor $4,$5,$5		# 5 cycles from $5 load		\n\
549503793b1SChristoph Hellwig 	xor $7,$20,$20		# 4 cycles from $20 load	\n\
550503793b1SChristoph Hellwig 	stq $2,40($17)						\n\
551503793b1SChristoph Hellwig 	subq $16,1,$16						\n\
552503793b1SChristoph Hellwig 								\n\
553503793b1SChristoph Hellwig 	stq $5,48($17)						\n\
554503793b1SChristoph Hellwig 	addq $19,64,$19						\n\
555503793b1SChristoph Hellwig 	stq $20,56($17)						\n\
556503793b1SChristoph Hellwig 	addq $18,64,$18						\n\
557503793b1SChristoph Hellwig 								\n\
558503793b1SChristoph Hellwig 	addq $17,64,$17						\n\
559503793b1SChristoph Hellwig 	bgt $16,3b						\n\
560503793b1SChristoph Hellwig 	ret							\n\
561503793b1SChristoph Hellwig 	.end xor_alpha_prefetch_3				\n\
562503793b1SChristoph Hellwig 								\n\
563503793b1SChristoph Hellwig 	.align 3						\n\
564503793b1SChristoph Hellwig 	.ent xor_alpha_prefetch_4				\n\
565503793b1SChristoph Hellwig xor_alpha_prefetch_4:						\n\
566503793b1SChristoph Hellwig 	.prologue 0						\n\
567503793b1SChristoph Hellwig 	srl $16, 6, $16						\n\
568503793b1SChristoph Hellwig 								\n\
569503793b1SChristoph Hellwig 	ldq $31, 0($17)						\n\
570503793b1SChristoph Hellwig 	ldq $31, 0($18)						\n\
571503793b1SChristoph Hellwig 	ldq $31, 0($19)						\n\
572503793b1SChristoph Hellwig 	ldq $31, 0($20)						\n\
573503793b1SChristoph Hellwig 								\n\
574503793b1SChristoph Hellwig 	ldq $31, 64($17)					\n\
575503793b1SChristoph Hellwig 	ldq $31, 64($18)					\n\
576503793b1SChristoph Hellwig 	ldq $31, 64($19)					\n\
577503793b1SChristoph Hellwig 	ldq $31, 64($20)					\n\
578503793b1SChristoph Hellwig 								\n\
579503793b1SChristoph Hellwig 	ldq $31, 128($17)					\n\
580503793b1SChristoph Hellwig 	ldq $31, 128($18)					\n\
581503793b1SChristoph Hellwig 	ldq $31, 128($19)					\n\
582503793b1SChristoph Hellwig 	ldq $31, 128($20)					\n\
583503793b1SChristoph Hellwig 								\n\
584503793b1SChristoph Hellwig 	ldq $31, 192($17)					\n\
585503793b1SChristoph Hellwig 	ldq $31, 192($18)					\n\
586503793b1SChristoph Hellwig 	ldq $31, 192($19)					\n\
587503793b1SChristoph Hellwig 	ldq $31, 192($20)					\n\
588503793b1SChristoph Hellwig 	.align 4						\n\
589503793b1SChristoph Hellwig 4:								\n\
590503793b1SChristoph Hellwig 	ldq $0,0($17)						\n\
591503793b1SChristoph Hellwig 	ldq $1,0($18)						\n\
592503793b1SChristoph Hellwig 	ldq $2,0($19)						\n\
593503793b1SChristoph Hellwig 	ldq $3,0($20)						\n\
594503793b1SChristoph Hellwig 								\n\
595503793b1SChristoph Hellwig 	ldq $4,8($17)						\n\
596503793b1SChristoph Hellwig 	ldq $5,8($18)						\n\
597503793b1SChristoph Hellwig 	ldq $6,8($19)						\n\
598503793b1SChristoph Hellwig 	ldq $7,8($20)						\n\
599503793b1SChristoph Hellwig 								\n\
600503793b1SChristoph Hellwig 	ldq $21,16($17)						\n\
601503793b1SChristoph Hellwig 	ldq $22,16($18)						\n\
602503793b1SChristoph Hellwig 	ldq $23,16($19)						\n\
603503793b1SChristoph Hellwig 	ldq $24,16($20)						\n\
604503793b1SChristoph Hellwig 								\n\
605503793b1SChristoph Hellwig 	ldq $25,24($17)						\n\
606503793b1SChristoph Hellwig 	xor $0,$1,$1		# 6 cycles from $1 load		\n\
607503793b1SChristoph Hellwig 	ldq $27,24($18)						\n\
608503793b1SChristoph Hellwig 	xor $2,$3,$3		# 6 cycles from $3 load		\n\
609503793b1SChristoph Hellwig 								\n\
610503793b1SChristoph Hellwig 	ldq $0,24($19)						\n\
611503793b1SChristoph Hellwig 	xor $1,$3,$3						\n\
612503793b1SChristoph Hellwig 	ldq $1,24($20)						\n\
613503793b1SChristoph Hellwig 	xor $4,$5,$5		# 7 cycles from $5 load		\n\
614503793b1SChristoph Hellwig 								\n\
615503793b1SChristoph Hellwig 	stq $3,0($17)						\n\
616503793b1SChristoph Hellwig 	xor $6,$7,$7						\n\
617503793b1SChristoph Hellwig 	xor $21,$22,$22		# 7 cycles from $22 load	\n\
618503793b1SChristoph Hellwig 	xor $5,$7,$7						\n\
619503793b1SChristoph Hellwig 								\n\
620503793b1SChristoph Hellwig 	stq $7,8($17)						\n\
621503793b1SChristoph Hellwig 	xor $23,$24,$24		# 7 cycles from $24 load	\n\
622503793b1SChristoph Hellwig 	ldq $2,32($17)						\n\
623503793b1SChristoph Hellwig 	xor $22,$24,$24						\n\
624503793b1SChristoph Hellwig 								\n\
625503793b1SChristoph Hellwig 	ldq $3,32($18)						\n\
626503793b1SChristoph Hellwig 	ldq $4,32($19)						\n\
627503793b1SChristoph Hellwig 	ldq $5,32($20)						\n\
628503793b1SChristoph Hellwig 	xor $25,$27,$27		# 8 cycles from $27 load	\n\
629503793b1SChristoph Hellwig 								\n\
630503793b1SChristoph Hellwig 	ldq $6,40($17)						\n\
631503793b1SChristoph Hellwig 	ldq $7,40($18)						\n\
632503793b1SChristoph Hellwig 	ldq $21,40($19)						\n\
633503793b1SChristoph Hellwig 	ldq $22,40($20)						\n\
634503793b1SChristoph Hellwig 								\n\
635503793b1SChristoph Hellwig 	stq $24,16($17)						\n\
636503793b1SChristoph Hellwig 	xor $0,$1,$1		# 9 cycles from $1 load		\n\
637503793b1SChristoph Hellwig 	xor $2,$3,$3		# 5 cycles from $3 load		\n\
638503793b1SChristoph Hellwig 	xor $27,$1,$1						\n\
639503793b1SChristoph Hellwig 								\n\
640503793b1SChristoph Hellwig 	stq $1,24($17)						\n\
641503793b1SChristoph Hellwig 	xor $4,$5,$5		# 5 cycles from $5 load		\n\
642503793b1SChristoph Hellwig 	ldq $23,48($17)						\n\
643503793b1SChristoph Hellwig 	xor $3,$5,$5						\n\
644503793b1SChristoph Hellwig 								\n\
645503793b1SChristoph Hellwig 	ldq $24,48($18)						\n\
646503793b1SChristoph Hellwig 	ldq $25,48($19)						\n\
647503793b1SChristoph Hellwig 	ldq $27,48($20)						\n\
648503793b1SChristoph Hellwig 	ldq $0,56($17)						\n\
649503793b1SChristoph Hellwig 								\n\
650503793b1SChristoph Hellwig 	ldq $1,56($18)						\n\
651503793b1SChristoph Hellwig 	ldq $2,56($19)						\n\
652503793b1SChristoph Hellwig 	ldq $3,56($20)						\n\
653503793b1SChristoph Hellwig 	xor $6,$7,$7		# 8 cycles from $6 load		\n\
654503793b1SChristoph Hellwig 								\n\
655503793b1SChristoph Hellwig 	ldq $31,256($17)					\n\
656503793b1SChristoph Hellwig 	xor $21,$22,$22		# 8 cycles from $22 load	\n\
657503793b1SChristoph Hellwig 	ldq $31,256($18)					\n\
658503793b1SChristoph Hellwig 	xor $7,$22,$22						\n\
659503793b1SChristoph Hellwig 								\n\
660503793b1SChristoph Hellwig 	ldq $31,256($19)					\n\
661503793b1SChristoph Hellwig 	xor $23,$24,$24		# 6 cycles from $24 load	\n\
662503793b1SChristoph Hellwig 	ldq $31,256($20)					\n\
663503793b1SChristoph Hellwig 	xor $25,$27,$27		# 6 cycles from $27 load	\n\
664503793b1SChristoph Hellwig 								\n\
665503793b1SChristoph Hellwig 	stq $5,32($17)						\n\
666503793b1SChristoph Hellwig 	xor $24,$27,$27						\n\
667503793b1SChristoph Hellwig 	xor $0,$1,$1		# 7 cycles from $1 load		\n\
668503793b1SChristoph Hellwig 	xor $2,$3,$3		# 6 cycles from $3 load		\n\
669503793b1SChristoph Hellwig 								\n\
670503793b1SChristoph Hellwig 	stq $22,40($17)						\n\
671503793b1SChristoph Hellwig 	xor $1,$3,$3						\n\
672503793b1SChristoph Hellwig 	stq $27,48($17)						\n\
673503793b1SChristoph Hellwig 	subq $16,1,$16						\n\
674503793b1SChristoph Hellwig 								\n\
675503793b1SChristoph Hellwig 	stq $3,56($17)						\n\
676503793b1SChristoph Hellwig 	addq $20,64,$20						\n\
677503793b1SChristoph Hellwig 	addq $19,64,$19						\n\
678503793b1SChristoph Hellwig 	addq $18,64,$18						\n\
679503793b1SChristoph Hellwig 								\n\
680503793b1SChristoph Hellwig 	addq $17,64,$17						\n\
681503793b1SChristoph Hellwig 	bgt $16,4b						\n\
682503793b1SChristoph Hellwig 	ret							\n\
683503793b1SChristoph Hellwig 	.end xor_alpha_prefetch_4				\n\
684503793b1SChristoph Hellwig 								\n\
685503793b1SChristoph Hellwig 	.align 3						\n\
686503793b1SChristoph Hellwig 	.ent xor_alpha_prefetch_5				\n\
687503793b1SChristoph Hellwig xor_alpha_prefetch_5:						\n\
688503793b1SChristoph Hellwig 	.prologue 0						\n\
689503793b1SChristoph Hellwig 	srl $16, 6, $16						\n\
690503793b1SChristoph Hellwig 								\n\
691503793b1SChristoph Hellwig 	ldq $31, 0($17)						\n\
692503793b1SChristoph Hellwig 	ldq $31, 0($18)						\n\
693503793b1SChristoph Hellwig 	ldq $31, 0($19)						\n\
694503793b1SChristoph Hellwig 	ldq $31, 0($20)						\n\
695503793b1SChristoph Hellwig 	ldq $31, 0($21)						\n\
696503793b1SChristoph Hellwig 								\n\
697503793b1SChristoph Hellwig 	ldq $31, 64($17)					\n\
698503793b1SChristoph Hellwig 	ldq $31, 64($18)					\n\
699503793b1SChristoph Hellwig 	ldq $31, 64($19)					\n\
700503793b1SChristoph Hellwig 	ldq $31, 64($20)					\n\
701503793b1SChristoph Hellwig 	ldq $31, 64($21)					\n\
702503793b1SChristoph Hellwig 								\n\
703503793b1SChristoph Hellwig 	ldq $31, 128($17)					\n\
704503793b1SChristoph Hellwig 	ldq $31, 128($18)					\n\
705503793b1SChristoph Hellwig 	ldq $31, 128($19)					\n\
706503793b1SChristoph Hellwig 	ldq $31, 128($20)					\n\
707503793b1SChristoph Hellwig 	ldq $31, 128($21)					\n\
708503793b1SChristoph Hellwig 								\n\
709503793b1SChristoph Hellwig 	ldq $31, 192($17)					\n\
710503793b1SChristoph Hellwig 	ldq $31, 192($18)					\n\
711503793b1SChristoph Hellwig 	ldq $31, 192($19)					\n\
712503793b1SChristoph Hellwig 	ldq $31, 192($20)					\n\
713503793b1SChristoph Hellwig 	ldq $31, 192($21)					\n\
714503793b1SChristoph Hellwig 	.align 4						\n\
715503793b1SChristoph Hellwig 5:								\n\
716503793b1SChristoph Hellwig 	ldq $0,0($17)						\n\
717503793b1SChristoph Hellwig 	ldq $1,0($18)						\n\
718503793b1SChristoph Hellwig 	ldq $2,0($19)						\n\
719503793b1SChristoph Hellwig 	ldq $3,0($20)						\n\
720503793b1SChristoph Hellwig 								\n\
721503793b1SChristoph Hellwig 	ldq $4,0($21)						\n\
722503793b1SChristoph Hellwig 	ldq $5,8($17)						\n\
723503793b1SChristoph Hellwig 	ldq $6,8($18)						\n\
724503793b1SChristoph Hellwig 	ldq $7,8($19)						\n\
725503793b1SChristoph Hellwig 								\n\
726503793b1SChristoph Hellwig 	ldq $22,8($20)						\n\
727503793b1SChristoph Hellwig 	ldq $23,8($21)						\n\
728503793b1SChristoph Hellwig 	ldq $24,16($17)						\n\
729503793b1SChristoph Hellwig 	ldq $25,16($18)						\n\
730503793b1SChristoph Hellwig 								\n\
731503793b1SChristoph Hellwig 	ldq $27,16($19)						\n\
732503793b1SChristoph Hellwig 	xor $0,$1,$1		# 6 cycles from $1 load		\n\
733503793b1SChristoph Hellwig 	ldq $28,16($20)						\n\
734503793b1SChristoph Hellwig 	xor $2,$3,$3		# 6 cycles from $3 load		\n\
735503793b1SChristoph Hellwig 								\n\
736503793b1SChristoph Hellwig 	ldq $0,16($21)						\n\
737503793b1SChristoph Hellwig 	xor $1,$3,$3						\n\
738503793b1SChristoph Hellwig 	ldq $1,24($17)						\n\
739503793b1SChristoph Hellwig 	xor $3,$4,$4		# 7 cycles from $4 load		\n\
740503793b1SChristoph Hellwig 								\n\
741503793b1SChristoph Hellwig 	stq $4,0($17)						\n\
742503793b1SChristoph Hellwig 	xor $5,$6,$6		# 7 cycles from $6 load		\n\
743503793b1SChristoph Hellwig 	xor $7,$22,$22		# 7 cycles from $22 load	\n\
744503793b1SChristoph Hellwig 	xor $6,$23,$23		# 7 cycles from $23 load	\n\
745503793b1SChristoph Hellwig 								\n\
746503793b1SChristoph Hellwig 	ldq $2,24($18)						\n\
747503793b1SChristoph Hellwig 	xor $22,$23,$23						\n\
748503793b1SChristoph Hellwig 	ldq $3,24($19)						\n\
749503793b1SChristoph Hellwig 	xor $24,$25,$25		# 8 cycles from $25 load	\n\
750503793b1SChristoph Hellwig 								\n\
751503793b1SChristoph Hellwig 	stq $23,8($17)						\n\
752503793b1SChristoph Hellwig 	xor $25,$27,$27		# 8 cycles from $27 load	\n\
753503793b1SChristoph Hellwig 	ldq $4,24($20)						\n\
754503793b1SChristoph Hellwig 	xor $28,$0,$0		# 7 cycles from $0 load		\n\
755503793b1SChristoph Hellwig 								\n\
756503793b1SChristoph Hellwig 	ldq $5,24($21)						\n\
757503793b1SChristoph Hellwig 	xor $27,$0,$0						\n\
758503793b1SChristoph Hellwig 	ldq $6,32($17)						\n\
759503793b1SChristoph Hellwig 	ldq $7,32($18)						\n\
760503793b1SChristoph Hellwig 								\n\
761503793b1SChristoph Hellwig 	stq $0,16($17)						\n\
762503793b1SChristoph Hellwig 	xor $1,$2,$2		# 6 cycles from $2 load		\n\
763503793b1SChristoph Hellwig 	ldq $22,32($19)						\n\
764503793b1SChristoph Hellwig 	xor $3,$4,$4		# 4 cycles from $4 load		\n\
765503793b1SChristoph Hellwig 								\n\
766503793b1SChristoph Hellwig 	ldq $23,32($20)						\n\
767503793b1SChristoph Hellwig 	xor $2,$4,$4						\n\
768503793b1SChristoph Hellwig 	ldq $24,32($21)						\n\
769503793b1SChristoph Hellwig 	ldq $25,40($17)						\n\
770503793b1SChristoph Hellwig 								\n\
771503793b1SChristoph Hellwig 	ldq $27,40($18)						\n\
772503793b1SChristoph Hellwig 	ldq $28,40($19)						\n\
773503793b1SChristoph Hellwig 	ldq $0,40($20)						\n\
774503793b1SChristoph Hellwig 	xor $4,$5,$5		# 7 cycles from $5 load		\n\
775503793b1SChristoph Hellwig 								\n\
776503793b1SChristoph Hellwig 	stq $5,24($17)						\n\
777503793b1SChristoph Hellwig 	xor $6,$7,$7		# 7 cycles from $7 load		\n\
778503793b1SChristoph Hellwig 	ldq $1,40($21)						\n\
779503793b1SChristoph Hellwig 	ldq $2,48($17)						\n\
780503793b1SChristoph Hellwig 								\n\
781503793b1SChristoph Hellwig 	ldq $3,48($18)						\n\
782503793b1SChristoph Hellwig 	xor $7,$22,$22		# 7 cycles from $22 load	\n\
783503793b1SChristoph Hellwig 	ldq $4,48($19)						\n\
784503793b1SChristoph Hellwig 	xor $23,$24,$24		# 6 cycles from $24 load	\n\
785503793b1SChristoph Hellwig 								\n\
786503793b1SChristoph Hellwig 	ldq $5,48($20)						\n\
787503793b1SChristoph Hellwig 	xor $22,$24,$24						\n\
788503793b1SChristoph Hellwig 	ldq $6,48($21)						\n\
789503793b1SChristoph Hellwig 	xor $25,$27,$27		# 7 cycles from $27 load	\n\
790503793b1SChristoph Hellwig 								\n\
791503793b1SChristoph Hellwig 	stq $24,32($17)						\n\
792503793b1SChristoph Hellwig 	xor $27,$28,$28		# 8 cycles from $28 load	\n\
793503793b1SChristoph Hellwig 	ldq $7,56($17)						\n\
794503793b1SChristoph Hellwig 	xor $0,$1,$1		# 6 cycles from $1 load		\n\
795503793b1SChristoph Hellwig 								\n\
796503793b1SChristoph Hellwig 	ldq $22,56($18)						\n\
797503793b1SChristoph Hellwig 	ldq $23,56($19)						\n\
798503793b1SChristoph Hellwig 	ldq $24,56($20)						\n\
799503793b1SChristoph Hellwig 	ldq $25,56($21)						\n\
800503793b1SChristoph Hellwig 								\n\
801503793b1SChristoph Hellwig 	ldq $31,256($17)					\n\
802503793b1SChristoph Hellwig 	xor $28,$1,$1						\n\
803503793b1SChristoph Hellwig 	ldq $31,256($18)					\n\
804503793b1SChristoph Hellwig 	xor $2,$3,$3		# 9 cycles from $3 load		\n\
805503793b1SChristoph Hellwig 								\n\
806503793b1SChristoph Hellwig 	ldq $31,256($19)					\n\
807503793b1SChristoph Hellwig 	xor $3,$4,$4		# 9 cycles from $4 load		\n\
808503793b1SChristoph Hellwig 	ldq $31,256($20)					\n\
809503793b1SChristoph Hellwig 	xor $5,$6,$6		# 8 cycles from $6 load		\n\
810503793b1SChristoph Hellwig 								\n\
811503793b1SChristoph Hellwig 	stq $1,40($17)						\n\
812503793b1SChristoph Hellwig 	xor $4,$6,$6						\n\
813503793b1SChristoph Hellwig 	xor $7,$22,$22		# 7 cycles from $22 load	\n\
814503793b1SChristoph Hellwig 	xor $23,$24,$24		# 6 cycles from $24 load	\n\
815503793b1SChristoph Hellwig 								\n\
816503793b1SChristoph Hellwig 	stq $6,48($17)						\n\
817503793b1SChristoph Hellwig 	xor $22,$24,$24						\n\
818503793b1SChristoph Hellwig 	ldq $31,256($21)					\n\
819503793b1SChristoph Hellwig 	xor $24,$25,$25		# 8 cycles from $25 load	\n\
820503793b1SChristoph Hellwig 								\n\
821503793b1SChristoph Hellwig 	stq $25,56($17)						\n\
822503793b1SChristoph Hellwig 	subq $16,1,$16						\n\
823503793b1SChristoph Hellwig 	addq $21,64,$21						\n\
824503793b1SChristoph Hellwig 	addq $20,64,$20						\n\
825503793b1SChristoph Hellwig 								\n\
826503793b1SChristoph Hellwig 	addq $19,64,$19						\n\
827503793b1SChristoph Hellwig 	addq $18,64,$18						\n\
828503793b1SChristoph Hellwig 	addq $17,64,$17						\n\
829503793b1SChristoph Hellwig 	bgt $16,5b						\n\
830503793b1SChristoph Hellwig 								\n\
831503793b1SChristoph Hellwig 	ret							\n\
832503793b1SChristoph Hellwig 	.end xor_alpha_prefetch_5				\n\
833503793b1SChristoph Hellwig ");
834503793b1SChristoph Hellwig 
835*80dcf0a7SChristoph Hellwig DO_XOR_BLOCKS(alpha, xor_alpha_2, xor_alpha_3, xor_alpha_4, xor_alpha_5);
836*80dcf0a7SChristoph Hellwig 
837503793b1SChristoph Hellwig struct xor_block_template xor_block_alpha = {
838503793b1SChristoph Hellwig 	.name		= "alpha",
839*80dcf0a7SChristoph Hellwig 	.xor_gen	= xor_gen_alpha,
840503793b1SChristoph Hellwig };
841503793b1SChristoph Hellwig 
842*80dcf0a7SChristoph Hellwig DO_XOR_BLOCKS(alpha_prefetch, xor_alpha_prefetch_2, xor_alpha_prefetch_3,
843*80dcf0a7SChristoph Hellwig 		xor_alpha_prefetch_4, xor_alpha_prefetch_5);
844*80dcf0a7SChristoph Hellwig 
845503793b1SChristoph Hellwig struct xor_block_template xor_block_alpha_prefetch = {
846503793b1SChristoph Hellwig 	.name		= "alpha prefetch",
847*80dcf0a7SChristoph Hellwig 	.xor_gen	= xor_gen_alpha_prefetch,
848503793b1SChristoph Hellwig };
849