OLD | NEW |
| (Empty) |
1 .machine "any" | |
2 | |
3 .text | |
4 | |
5 .align 7 | |
6 rcon: | |
7 .byte 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x
00,0x01 | |
8 .byte 0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x
00,0x1b | |
9 .byte 0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x
0e,0x0d | |
10 .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x
00,0x00 | |
11 Lconsts: | |
12 mflr 0 | |
13 bcl 20,31,$+4 | |
14 mflr 6 | |
15 addi 6,6,-0x48 | |
16 mtlr 0 | |
17 blr | |
18 .long 0 | |
19 .byte 0,12,0x14,0,0,0,0,0 | |
20 .byte 65,69,83,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44
,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,
101,110,115,115,108,46,111,114,103,62,0 | |
21 .align 2 | |
22 | |
23 .globl aes_hw_set_encrypt_key | |
24 .align 5 | |
25 aes_hw_set_encrypt_key: | |
26 Lset_encrypt_key: | |
27 mflr 11 | |
28 std 11,16(1) | |
29 | |
30 li 6,-1 | |
31 cmpldi 3,0 | |
32 beq- Lenc_key_abort | |
33 cmpldi 5,0 | |
34 beq- Lenc_key_abort | |
35 li 6,-2 | |
36 cmpwi 4,128 | |
37 blt- Lenc_key_abort | |
38 cmpwi 4,256 | |
39 bgt- Lenc_key_abort | |
40 andi. 0,4,0x3f | |
41 bne- Lenc_key_abort | |
42 | |
43 lis 0,0xfff0 | |
44 mfspr 12,256 | |
45 mtspr 256,0 | |
46 | |
47 bl Lconsts | |
48 mtlr 11 | |
49 | |
50 neg 9,3 | |
51 lvx 1,0,3 | |
52 addi 3,3,15 | |
53 lvsr 3,0,9 | |
54 li 8,0x20 | |
55 cmpwi 4,192 | |
56 lvx 2,0,3 | |
57 vspltisb 5,0x0f | |
58 lvx 4,0,6 | |
59 vxor 3,3,5 | |
60 lvx 5,8,6 | |
61 addi 6,6,0x10 | |
62 vperm 1,1,2,3 | |
63 li 7,8 | |
64 vxor 0,0,0 | |
65 mtctr 7 | |
66 | |
67 lvsl 8,0,5 | |
68 vspltisb 9,-1 | |
69 lvx 10,0,5 | |
70 vperm 9,9,0,8 | |
71 | |
72 blt Loop128 | |
73 addi 3,3,8 | |
74 beq L192 | |
75 addi 3,3,8 | |
76 b L256 | |
77 | |
78 .align 4 | |
79 Loop128: | |
80 vperm 3,1,1,5 | |
81 vsldoi 6,0,1,12 | |
82 vperm 11,1,1,8 | |
83 vsel 7,10,11,9 | |
84 vor 10,11,11 | |
85 .long 0x10632509 | |
86 stvx 7,0,5 | |
87 addi 5,5,16 | |
88 | |
89 vxor 1,1,6 | |
90 vsldoi 6,0,6,12 | |
91 vxor 1,1,6 | |
92 vsldoi 6,0,6,12 | |
93 vxor 1,1,6 | |
94 vadduwm 4,4,4 | |
95 vxor 1,1,3 | |
96 bc 16,0,Loop128 | |
97 | |
98 lvx 4,0,6 | |
99 | |
100 vperm 3,1,1,5 | |
101 vsldoi 6,0,1,12 | |
102 vperm 11,1,1,8 | |
103 vsel 7,10,11,9 | |
104 vor 10,11,11 | |
105 .long 0x10632509 | |
106 stvx 7,0,5 | |
107 addi 5,5,16 | |
108 | |
109 vxor 1,1,6 | |
110 vsldoi 6,0,6,12 | |
111 vxor 1,1,6 | |
112 vsldoi 6,0,6,12 | |
113 vxor 1,1,6 | |
114 vadduwm 4,4,4 | |
115 vxor 1,1,3 | |
116 | |
117 vperm 3,1,1,5 | |
118 vsldoi 6,0,1,12 | |
119 vperm 11,1,1,8 | |
120 vsel 7,10,11,9 | |
121 vor 10,11,11 | |
122 .long 0x10632509 | |
123 stvx 7,0,5 | |
124 addi 5,5,16 | |
125 | |
126 vxor 1,1,6 | |
127 vsldoi 6,0,6,12 | |
128 vxor 1,1,6 | |
129 vsldoi 6,0,6,12 | |
130 vxor 1,1,6 | |
131 vxor 1,1,3 | |
132 vperm 11,1,1,8 | |
133 vsel 7,10,11,9 | |
134 vor 10,11,11 | |
135 stvx 7,0,5 | |
136 | |
137 addi 3,5,15 | |
138 addi 5,5,0x50 | |
139 | |
140 li 8,10 | |
141 b Ldone | |
142 | |
143 .align 4 | |
144 L192: | |
145 lvx 6,0,3 | |
146 li 7,4 | |
147 vperm 11,1,1,8 | |
148 vsel 7,10,11,9 | |
149 vor 10,11,11 | |
150 stvx 7,0,5 | |
151 addi 5,5,16 | |
152 vperm 2,2,6,3 | |
153 vspltisb 3,8 | |
154 mtctr 7 | |
155 vsububm 5,5,3 | |
156 | |
157 Loop192: | |
158 vperm 3,2,2,5 | |
159 vsldoi 6,0,1,12 | |
160 .long 0x10632509 | |
161 | |
162 vxor 1,1,6 | |
163 vsldoi 6,0,6,12 | |
164 vxor 1,1,6 | |
165 vsldoi 6,0,6,12 | |
166 vxor 1,1,6 | |
167 | |
168 vsldoi 7,0,2,8 | |
169 vspltw 6,1,3 | |
170 vxor 6,6,2 | |
171 vsldoi 2,0,2,12 | |
172 vadduwm 4,4,4 | |
173 vxor 2,2,6 | |
174 vxor 1,1,3 | |
175 vxor 2,2,3 | |
176 vsldoi 7,7,1,8 | |
177 | |
178 vperm 3,2,2,5 | |
179 vsldoi 6,0,1,12 | |
180 vperm 11,7,7,8 | |
181 vsel 7,10,11,9 | |
182 vor 10,11,11 | |
183 .long 0x10632509 | |
184 stvx 7,0,5 | |
185 addi 5,5,16 | |
186 | |
187 vsldoi 7,1,2,8 | |
188 vxor 1,1,6 | |
189 vsldoi 6,0,6,12 | |
190 vperm 11,7,7,8 | |
191 vsel 7,10,11,9 | |
192 vor 10,11,11 | |
193 vxor 1,1,6 | |
194 vsldoi 6,0,6,12 | |
195 vxor 1,1,6 | |
196 stvx 7,0,5 | |
197 addi 5,5,16 | |
198 | |
199 vspltw 6,1,3 | |
200 vxor 6,6,2 | |
201 vsldoi 2,0,2,12 | |
202 vadduwm 4,4,4 | |
203 vxor 2,2,6 | |
204 vxor 1,1,3 | |
205 vxor 2,2,3 | |
206 vperm 11,1,1,8 | |
207 vsel 7,10,11,9 | |
208 vor 10,11,11 | |
209 stvx 7,0,5 | |
210 addi 3,5,15 | |
211 addi 5,5,16 | |
212 bc 16,0,Loop192 | |
213 | |
214 li 8,12 | |
215 addi 5,5,0x20 | |
216 b Ldone | |
217 | |
218 .align 4 | |
219 L256: | |
220 lvx 6,0,3 | |
221 li 7,7 | |
222 li 8,14 | |
223 vperm 11,1,1,8 | |
224 vsel 7,10,11,9 | |
225 vor 10,11,11 | |
226 stvx 7,0,5 | |
227 addi 5,5,16 | |
228 vperm 2,2,6,3 | |
229 mtctr 7 | |
230 | |
231 Loop256: | |
232 vperm 3,2,2,5 | |
233 vsldoi 6,0,1,12 | |
234 vperm 11,2,2,8 | |
235 vsel 7,10,11,9 | |
236 vor 10,11,11 | |
237 .long 0x10632509 | |
238 stvx 7,0,5 | |
239 addi 5,5,16 | |
240 | |
241 vxor 1,1,6 | |
242 vsldoi 6,0,6,12 | |
243 vxor 1,1,6 | |
244 vsldoi 6,0,6,12 | |
245 vxor 1,1,6 | |
246 vadduwm 4,4,4 | |
247 vxor 1,1,3 | |
248 vperm 11,1,1,8 | |
249 vsel 7,10,11,9 | |
250 vor 10,11,11 | |
251 stvx 7,0,5 | |
252 addi 3,5,15 | |
253 addi 5,5,16 | |
254 bdz Ldone | |
255 | |
256 vspltw 3,1,3 | |
257 vsldoi 6,0,2,12 | |
258 .long 0x106305C8 | |
259 | |
260 vxor 2,2,6 | |
261 vsldoi 6,0,6,12 | |
262 vxor 2,2,6 | |
263 vsldoi 6,0,6,12 | |
264 vxor 2,2,6 | |
265 | |
266 vxor 2,2,3 | |
267 b Loop256 | |
268 | |
269 .align 4 | |
270 Ldone: | |
271 lvx 2,0,3 | |
272 vsel 2,10,2,9 | |
273 stvx 2,0,3 | |
274 li 6,0 | |
275 mtspr 256,12 | |
276 stw 8,0(5) | |
277 | |
278 Lenc_key_abort: | |
279 mr 3,6 | |
280 blr | |
281 .long 0 | |
282 .byte 0,12,0x14,1,0,0,3,0 | |
283 .long 0 | |
284 | |
285 | |
286 .globl aes_hw_set_decrypt_key | |
287 .align 5 | |
288 aes_hw_set_decrypt_key: | |
289 stdu 1,-64(1) | |
290 mflr 10 | |
291 std 10,64+16(1) | |
292 bl Lset_encrypt_key | |
293 mtlr 10 | |
294 | |
295 cmpwi 3,0 | |
296 bne- Ldec_key_abort | |
297 | |
298 slwi 7,8,4 | |
299 subi 3,5,240 | |
300 srwi 8,8,1 | |
301 add 5,3,7 | |
302 mtctr 8 | |
303 | |
304 Ldeckey: | |
305 lwz 0, 0(3) | |
306 lwz 6, 4(3) | |
307 lwz 7, 8(3) | |
308 lwz 8, 12(3) | |
309 addi 3,3,16 | |
310 lwz 9, 0(5) | |
311 lwz 10,4(5) | |
312 lwz 11,8(5) | |
313 lwz 12,12(5) | |
314 stw 0, 0(5) | |
315 stw 6, 4(5) | |
316 stw 7, 8(5) | |
317 stw 8, 12(5) | |
318 subi 5,5,16 | |
319 stw 9, -16(3) | |
320 stw 10,-12(3) | |
321 stw 11,-8(3) | |
322 stw 12,-4(3) | |
323 bc 16,0,Ldeckey | |
324 | |
325 xor 3,3,3 | |
326 Ldec_key_abort: | |
327 addi 1,1,64 | |
328 blr | |
329 .long 0 | |
330 .byte 0,12,4,1,0x80,0,3,0 | |
331 .long 0 | |
332 | |
333 .globl aes_hw_encrypt | |
334 .align 5 | |
335 aes_hw_encrypt: | |
336 lwz 6,240(5) | |
337 lis 0,0xfc00 | |
338 mfspr 12,256 | |
339 li 7,15 | |
340 mtspr 256,0 | |
341 | |
342 lvx 0,0,3 | |
343 neg 11,4 | |
344 lvx 1,7,3 | |
345 lvsl 2,0,3 | |
346 vspltisb 4,0x0f | |
347 lvsr 3,0,11 | |
348 vxor 2,2,4 | |
349 li 7,16 | |
350 vperm 0,0,1,2 | |
351 lvx 1,0,5 | |
352 lvsr 5,0,5 | |
353 srwi 6,6,1 | |
354 lvx 2,7,5 | |
355 addi 7,7,16 | |
356 subi 6,6,1 | |
357 vperm 1,2,1,5 | |
358 | |
359 vxor 0,0,1 | |
360 lvx 1,7,5 | |
361 addi 7,7,16 | |
362 mtctr 6 | |
363 | |
364 Loop_enc: | |
365 vperm 2,1,2,5 | |
366 .long 0x10001508 | |
367 lvx 2,7,5 | |
368 addi 7,7,16 | |
369 vperm 1,2,1,5 | |
370 .long 0x10000D08 | |
371 lvx 1,7,5 | |
372 addi 7,7,16 | |
373 bc 16,0,Loop_enc | |
374 | |
375 vperm 2,1,2,5 | |
376 .long 0x10001508 | |
377 lvx 2,7,5 | |
378 vperm 1,2,1,5 | |
379 .long 0x10000D09 | |
380 | |
381 vspltisb 2,-1 | |
382 vxor 1,1,1 | |
383 li 7,15 | |
384 vperm 2,2,1,3 | |
385 vxor 3,3,4 | |
386 lvx 1,0,4 | |
387 vperm 0,0,0,3 | |
388 vsel 1,1,0,2 | |
389 lvx 4,7,4 | |
390 stvx 1,0,4 | |
391 vsel 0,0,4,2 | |
392 stvx 0,7,4 | |
393 | |
394 mtspr 256,12 | |
395 blr | |
396 .long 0 | |
397 .byte 0,12,0x14,0,0,0,3,0 | |
398 .long 0 | |
399 | |
400 .globl aes_hw_decrypt | |
401 .align 5 | |
402 aes_hw_decrypt: | |
403 lwz 6,240(5) | |
404 lis 0,0xfc00 | |
405 mfspr 12,256 | |
406 li 7,15 | |
407 mtspr 256,0 | |
408 | |
409 lvx 0,0,3 | |
410 neg 11,4 | |
411 lvx 1,7,3 | |
412 lvsl 2,0,3 | |
413 vspltisb 4,0x0f | |
414 lvsr 3,0,11 | |
415 vxor 2,2,4 | |
416 li 7,16 | |
417 vperm 0,0,1,2 | |
418 lvx 1,0,5 | |
419 lvsr 5,0,5 | |
420 srwi 6,6,1 | |
421 lvx 2,7,5 | |
422 addi 7,7,16 | |
423 subi 6,6,1 | |
424 vperm 1,2,1,5 | |
425 | |
426 vxor 0,0,1 | |
427 lvx 1,7,5 | |
428 addi 7,7,16 | |
429 mtctr 6 | |
430 | |
431 Loop_dec: | |
432 vperm 2,1,2,5 | |
433 .long 0x10001548 | |
434 lvx 2,7,5 | |
435 addi 7,7,16 | |
436 vperm 1,2,1,5 | |
437 .long 0x10000D48 | |
438 lvx 1,7,5 | |
439 addi 7,7,16 | |
440 bc 16,0,Loop_dec | |
441 | |
442 vperm 2,1,2,5 | |
443 .long 0x10001548 | |
444 lvx 2,7,5 | |
445 vperm 1,2,1,5 | |
446 .long 0x10000D49 | |
447 | |
448 vspltisb 2,-1 | |
449 vxor 1,1,1 | |
450 li 7,15 | |
451 vperm 2,2,1,3 | |
452 vxor 3,3,4 | |
453 lvx 1,0,4 | |
454 vperm 0,0,0,3 | |
455 vsel 1,1,0,2 | |
456 lvx 4,7,4 | |
457 stvx 1,0,4 | |
458 vsel 0,0,4,2 | |
459 stvx 0,7,4 | |
460 | |
461 mtspr 256,12 | |
462 blr | |
463 .long 0 | |
464 .byte 0,12,0x14,0,0,0,3,0 | |
465 .long 0 | |
466 | |
467 .globl aes_hw_cbc_encrypt | |
468 .align 5 | |
469 aes_hw_cbc_encrypt: | |
470 cmpldi 5,16 | |
471 bclr 14,0 | |
472 | |
473 cmpwi 8,0 | |
474 lis 0,0xffe0 | |
475 mfspr 12,256 | |
476 mtspr 256,0 | |
477 | |
478 li 10,15 | |
479 vxor 0,0,0 | |
480 vspltisb 3,0x0f | |
481 | |
482 lvx 4,0,7 | |
483 lvsl 6,0,7 | |
484 lvx 5,10,7 | |
485 vxor 6,6,3 | |
486 vperm 4,4,5,6 | |
487 | |
488 neg 11,3 | |
489 lvsr 10,0,6 | |
490 lwz 9,240(6) | |
491 | |
492 lvsr 6,0,11 | |
493 lvx 5,0,3 | |
494 addi 3,3,15 | |
495 vxor 6,6,3 | |
496 | |
497 lvsl 8,0,4 | |
498 vspltisb 9,-1 | |
499 lvx 7,0,4 | |
500 vperm 9,9,0,8 | |
501 vxor 8,8,3 | |
502 | |
503 srwi 9,9,1 | |
504 li 10,16 | |
505 subi 9,9,1 | |
506 beq Lcbc_dec | |
507 | |
508 Lcbc_enc: | |
509 vor 2,5,5 | |
510 lvx 5,0,3 | |
511 addi 3,3,16 | |
512 mtctr 9 | |
513 subi 5,5,16 | |
514 | |
515 lvx 0,0,6 | |
516 vperm 2,2,5,6 | |
517 lvx 1,10,6 | |
518 addi 10,10,16 | |
519 vperm 0,1,0,10 | |
520 vxor 2,2,0 | |
521 lvx 0,10,6 | |
522 addi 10,10,16 | |
523 vxor 2,2,4 | |
524 | |
525 Loop_cbc_enc: | |
526 vperm 1,0,1,10 | |
527 .long 0x10420D08 | |
528 lvx 1,10,6 | |
529 addi 10,10,16 | |
530 vperm 0,1,0,10 | |
531 .long 0x10420508 | |
532 lvx 0,10,6 | |
533 addi 10,10,16 | |
534 bc 16,0,Loop_cbc_enc | |
535 | |
536 vperm 1,0,1,10 | |
537 .long 0x10420D08 | |
538 lvx 1,10,6 | |
539 li 10,16 | |
540 vperm 0,1,0,10 | |
541 .long 0x10820509 | |
542 cmpldi 5,16 | |
543 | |
544 vperm 3,4,4,8 | |
545 vsel 2,7,3,9 | |
546 vor 7,3,3 | |
547 stvx 2,0,4 | |
548 addi 4,4,16 | |
549 bge Lcbc_enc | |
550 | |
551 b Lcbc_done | |
552 | |
553 .align 4 | |
554 Lcbc_dec: | |
555 cmpldi 5,128 | |
556 bge _aesp8_cbc_decrypt8x | |
557 vor 3,5,5 | |
558 lvx 5,0,3 | |
559 addi 3,3,16 | |
560 mtctr 9 | |
561 subi 5,5,16 | |
562 | |
563 lvx 0,0,6 | |
564 vperm 3,3,5,6 | |
565 lvx 1,10,6 | |
566 addi 10,10,16 | |
567 vperm 0,1,0,10 | |
568 vxor 2,3,0 | |
569 lvx 0,10,6 | |
570 addi 10,10,16 | |
571 | |
572 Loop_cbc_dec: | |
573 vperm 1,0,1,10 | |
574 .long 0x10420D48 | |
575 lvx 1,10,6 | |
576 addi 10,10,16 | |
577 vperm 0,1,0,10 | |
578 .long 0x10420548 | |
579 lvx 0,10,6 | |
580 addi 10,10,16 | |
581 bc 16,0,Loop_cbc_dec | |
582 | |
583 vperm 1,0,1,10 | |
584 .long 0x10420D48 | |
585 lvx 1,10,6 | |
586 li 10,16 | |
587 vperm 0,1,0,10 | |
588 .long 0x10420549 | |
589 cmpldi 5,16 | |
590 | |
591 vxor 2,2,4 | |
592 vor 4,3,3 | |
593 vperm 3,2,2,8 | |
594 vsel 2,7,3,9 | |
595 vor 7,3,3 | |
596 stvx 2,0,4 | |
597 addi 4,4,16 | |
598 bge Lcbc_dec | |
599 | |
600 Lcbc_done: | |
601 addi 4,4,-1 | |
602 lvx 2,0,4 | |
603 vsel 2,7,2,9 | |
604 stvx 2,0,4 | |
605 | |
606 neg 8,7 | |
607 li 10,15 | |
608 vxor 0,0,0 | |
609 vspltisb 9,-1 | |
610 vspltisb 3,0x0f | |
611 lvsr 8,0,8 | |
612 vperm 9,9,0,8 | |
613 vxor 8,8,3 | |
614 lvx 7,0,7 | |
615 vperm 4,4,4,8 | |
616 vsel 2,7,4,9 | |
617 lvx 5,10,7 | |
618 stvx 2,0,7 | |
619 vsel 2,4,5,9 | |
620 stvx 2,10,7 | |
621 | |
622 mtspr 256,12 | |
623 blr | |
624 .long 0 | |
625 .byte 0,12,0x14,0,0,0,6,0 | |
626 .long 0 | |
627 .align 5 | |
628 _aesp8_cbc_decrypt8x: | |
629 stdu 1,-448(1) | |
630 li 10,207 | |
631 li 11,223 | |
632 stvx 20,10,1 | |
633 addi 10,10,32 | |
634 stvx 21,11,1 | |
635 addi 11,11,32 | |
636 stvx 22,10,1 | |
637 addi 10,10,32 | |
638 stvx 23,11,1 | |
639 addi 11,11,32 | |
640 stvx 24,10,1 | |
641 addi 10,10,32 | |
642 stvx 25,11,1 | |
643 addi 11,11,32 | |
644 stvx 26,10,1 | |
645 addi 10,10,32 | |
646 stvx 27,11,1 | |
647 addi 11,11,32 | |
648 stvx 28,10,1 | |
649 addi 10,10,32 | |
650 stvx 29,11,1 | |
651 addi 11,11,32 | |
652 stvx 30,10,1 | |
653 stvx 31,11,1 | |
654 li 0,-1 | |
655 stw 12,396(1) | |
656 li 8,0x10 | |
657 std 26,400(1) | |
658 li 26,0x20 | |
659 std 27,408(1) | |
660 li 27,0x30 | |
661 std 28,416(1) | |
662 li 28,0x40 | |
663 std 29,424(1) | |
664 li 29,0x50 | |
665 std 30,432(1) | |
666 li 30,0x60 | |
667 std 31,440(1) | |
668 li 31,0x70 | |
669 mtspr 256,0 | |
670 | |
671 subi 9,9,3 | |
672 subi 5,5,128 | |
673 | |
674 lvx 23,0,6 | |
675 lvx 30,8,6 | |
676 addi 6,6,0x20 | |
677 lvx 31,0,6 | |
678 vperm 23,30,23,10 | |
679 addi 11,1,64+15 | |
680 mtctr 9 | |
681 | |
682 Load_cbc_dec_key: | |
683 vperm 24,31,30,10 | |
684 lvx 30,8,6 | |
685 addi 6,6,0x20 | |
686 stvx 24,0,11 | |
687 vperm 25,30,31,10 | |
688 lvx 31,0,6 | |
689 stvx 25,8,11 | |
690 addi 11,11,0x20 | |
691 bc 16,0,Load_cbc_dec_key | |
692 | |
693 lvx 26,8,6 | |
694 vperm 24,31,30,10 | |
695 lvx 27,26,6 | |
696 stvx 24,0,11 | |
697 vperm 25,26,31,10 | |
698 lvx 28,27,6 | |
699 stvx 25,8,11 | |
700 addi 11,1,64+15 | |
701 vperm 26,27,26,10 | |
702 lvx 29,28,6 | |
703 vperm 27,28,27,10 | |
704 lvx 30,29,6 | |
705 vperm 28,29,28,10 | |
706 lvx 31,30,6 | |
707 vperm 29,30,29,10 | |
708 lvx 14,31,6 | |
709 vperm 30,31,30,10 | |
710 lvx 24,0,11 | |
711 vperm 31,14,31,10 | |
712 lvx 25,8,11 | |
713 | |
714 | |
715 | |
716 subi 3,3,15 | |
717 | |
718 li 10,8 | |
719 .long 0x7C001E99 | |
720 lvsl 6,0,10 | |
721 vspltisb 3,0x0f | |
722 .long 0x7C281E99 | |
723 vxor 6,6,3 | |
724 .long 0x7C5A1E99 | |
725 vperm 0,0,0,6 | |
726 .long 0x7C7B1E99 | |
727 vperm 1,1,1,6 | |
728 .long 0x7D5C1E99 | |
729 vperm 2,2,2,6 | |
730 vxor 14,0,23 | |
731 .long 0x7D7D1E99 | |
732 vperm 3,3,3,6 | |
733 vxor 15,1,23 | |
734 .long 0x7D9E1E99 | |
735 vperm 10,10,10,6 | |
736 vxor 16,2,23 | |
737 .long 0x7DBF1E99 | |
738 addi 3,3,0x80 | |
739 vperm 11,11,11,6 | |
740 vxor 17,3,23 | |
741 vperm 12,12,12,6 | |
742 vxor 18,10,23 | |
743 vperm 13,13,13,6 | |
744 vxor 19,11,23 | |
745 vxor 20,12,23 | |
746 vxor 21,13,23 | |
747 | |
748 mtctr 9 | |
749 b Loop_cbc_dec8x | |
750 .align 5 | |
751 Loop_cbc_dec8x: | |
752 .long 0x11CEC548 | |
753 .long 0x11EFC548 | |
754 .long 0x1210C548 | |
755 .long 0x1231C548 | |
756 .long 0x1252C548 | |
757 .long 0x1273C548 | |
758 .long 0x1294C548 | |
759 .long 0x12B5C548 | |
760 lvx 24,26,11 | |
761 addi 11,11,0x20 | |
762 | |
763 .long 0x11CECD48 | |
764 .long 0x11EFCD48 | |
765 .long 0x1210CD48 | |
766 .long 0x1231CD48 | |
767 .long 0x1252CD48 | |
768 .long 0x1273CD48 | |
769 .long 0x1294CD48 | |
770 .long 0x12B5CD48 | |
771 lvx 25,8,11 | |
772 bc 16,0,Loop_cbc_dec8x | |
773 | |
774 subic 5,5,128 | |
775 .long 0x11CEC548 | |
776 .long 0x11EFC548 | |
777 .long 0x1210C548 | |
778 .long 0x1231C548 | |
779 .long 0x1252C548 | |
780 .long 0x1273C548 | |
781 .long 0x1294C548 | |
782 .long 0x12B5C548 | |
783 | |
784 subfe. 0,0,0 | |
785 .long 0x11CECD48 | |
786 .long 0x11EFCD48 | |
787 .long 0x1210CD48 | |
788 .long 0x1231CD48 | |
789 .long 0x1252CD48 | |
790 .long 0x1273CD48 | |
791 .long 0x1294CD48 | |
792 .long 0x12B5CD48 | |
793 | |
794 and 0,0,5 | |
795 .long 0x11CED548 | |
796 .long 0x11EFD548 | |
797 .long 0x1210D548 | |
798 .long 0x1231D548 | |
799 .long 0x1252D548 | |
800 .long 0x1273D548 | |
801 .long 0x1294D548 | |
802 .long 0x12B5D548 | |
803 | |
804 add 3,3,0 | |
805 | |
806 | |
807 | |
808 .long 0x11CEDD48 | |
809 .long 0x11EFDD48 | |
810 .long 0x1210DD48 | |
811 .long 0x1231DD48 | |
812 .long 0x1252DD48 | |
813 .long 0x1273DD48 | |
814 .long 0x1294DD48 | |
815 .long 0x12B5DD48 | |
816 | |
817 addi 11,1,64+15 | |
818 .long 0x11CEE548 | |
819 .long 0x11EFE548 | |
820 .long 0x1210E548 | |
821 .long 0x1231E548 | |
822 .long 0x1252E548 | |
823 .long 0x1273E548 | |
824 .long 0x1294E548 | |
825 .long 0x12B5E548 | |
826 lvx 24,0,11 | |
827 | |
828 .long 0x11CEED48 | |
829 .long 0x11EFED48 | |
830 .long 0x1210ED48 | |
831 .long 0x1231ED48 | |
832 .long 0x1252ED48 | |
833 .long 0x1273ED48 | |
834 .long 0x1294ED48 | |
835 .long 0x12B5ED48 | |
836 lvx 25,8,11 | |
837 | |
838 .long 0x11CEF548 | |
839 vxor 4,4,31 | |
840 .long 0x11EFF548 | |
841 vxor 0,0,31 | |
842 .long 0x1210F548 | |
843 vxor 1,1,31 | |
844 .long 0x1231F548 | |
845 vxor 2,2,31 | |
846 .long 0x1252F548 | |
847 vxor 3,3,31 | |
848 .long 0x1273F548 | |
849 vxor 10,10,31 | |
850 .long 0x1294F548 | |
851 vxor 11,11,31 | |
852 .long 0x12B5F548 | |
853 vxor 12,12,31 | |
854 | |
855 .long 0x11CE2549 | |
856 .long 0x11EF0549 | |
857 .long 0x7C001E99 | |
858 .long 0x12100D49 | |
859 .long 0x7C281E99 | |
860 .long 0x12311549 | |
861 vperm 0,0,0,6 | |
862 .long 0x7C5A1E99 | |
863 .long 0x12521D49 | |
864 vperm 1,1,1,6 | |
865 .long 0x7C7B1E99 | |
866 .long 0x12735549 | |
867 vperm 2,2,2,6 | |
868 .long 0x7D5C1E99 | |
869 .long 0x12945D49 | |
870 vperm 3,3,3,6 | |
871 .long 0x7D7D1E99 | |
872 .long 0x12B56549 | |
873 vperm 10,10,10,6 | |
874 .long 0x7D9E1E99 | |
875 vor 4,13,13 | |
876 vperm 11,11,11,6 | |
877 .long 0x7DBF1E99 | |
878 addi 3,3,0x80 | |
879 | |
880 vperm 14,14,14,6 | |
881 vperm 15,15,15,6 | |
882 .long 0x7DC02799 | |
883 vperm 12,12,12,6 | |
884 vxor 14,0,23 | |
885 vperm 16,16,16,6 | |
886 .long 0x7DE82799 | |
887 vperm 13,13,13,6 | |
888 vxor 15,1,23 | |
889 vperm 17,17,17,6 | |
890 .long 0x7E1A2799 | |
891 vxor 16,2,23 | |
892 vperm 18,18,18,6 | |
893 .long 0x7E3B2799 | |
894 vxor 17,3,23 | |
895 vperm 19,19,19,6 | |
896 .long 0x7E5C2799 | |
897 vxor 18,10,23 | |
898 vperm 20,20,20,6 | |
899 .long 0x7E7D2799 | |
900 vxor 19,11,23 | |
901 vperm 21,21,21,6 | |
902 .long 0x7E9E2799 | |
903 vxor 20,12,23 | |
904 .long 0x7EBF2799 | |
905 addi 4,4,0x80 | |
906 vxor 21,13,23 | |
907 | |
908 mtctr 9 | |
909 beq Loop_cbc_dec8x | |
910 | |
911 addic. 5,5,128 | |
912 beq Lcbc_dec8x_done | |
913 nop | |
914 nop | |
915 | |
916 Loop_cbc_dec8x_tail: | |
917 .long 0x11EFC548 | |
918 .long 0x1210C548 | |
919 .long 0x1231C548 | |
920 .long 0x1252C548 | |
921 .long 0x1273C548 | |
922 .long 0x1294C548 | |
923 .long 0x12B5C548 | |
924 lvx 24,26,11 | |
925 addi 11,11,0x20 | |
926 | |
927 .long 0x11EFCD48 | |
928 .long 0x1210CD48 | |
929 .long 0x1231CD48 | |
930 .long 0x1252CD48 | |
931 .long 0x1273CD48 | |
932 .long 0x1294CD48 | |
933 .long 0x12B5CD48 | |
934 lvx 25,8,11 | |
935 bc 16,0,Loop_cbc_dec8x_tail | |
936 | |
937 .long 0x11EFC548 | |
938 .long 0x1210C548 | |
939 .long 0x1231C548 | |
940 .long 0x1252C548 | |
941 .long 0x1273C548 | |
942 .long 0x1294C548 | |
943 .long 0x12B5C548 | |
944 | |
945 .long 0x11EFCD48 | |
946 .long 0x1210CD48 | |
947 .long 0x1231CD48 | |
948 .long 0x1252CD48 | |
949 .long 0x1273CD48 | |
950 .long 0x1294CD48 | |
951 .long 0x12B5CD48 | |
952 | |
953 .long 0x11EFD548 | |
954 .long 0x1210D548 | |
955 .long 0x1231D548 | |
956 .long 0x1252D548 | |
957 .long 0x1273D548 | |
958 .long 0x1294D548 | |
959 .long 0x12B5D548 | |
960 | |
961 .long 0x11EFDD48 | |
962 .long 0x1210DD48 | |
963 .long 0x1231DD48 | |
964 .long 0x1252DD48 | |
965 .long 0x1273DD48 | |
966 .long 0x1294DD48 | |
967 .long 0x12B5DD48 | |
968 | |
969 .long 0x11EFE548 | |
970 .long 0x1210E548 | |
971 .long 0x1231E548 | |
972 .long 0x1252E548 | |
973 .long 0x1273E548 | |
974 .long 0x1294E548 | |
975 .long 0x12B5E548 | |
976 | |
977 .long 0x11EFED48 | |
978 .long 0x1210ED48 | |
979 .long 0x1231ED48 | |
980 .long 0x1252ED48 | |
981 .long 0x1273ED48 | |
982 .long 0x1294ED48 | |
983 .long 0x12B5ED48 | |
984 | |
985 .long 0x11EFF548 | |
986 vxor 4,4,31 | |
987 .long 0x1210F548 | |
988 vxor 1,1,31 | |
989 .long 0x1231F548 | |
990 vxor 2,2,31 | |
991 .long 0x1252F548 | |
992 vxor 3,3,31 | |
993 .long 0x1273F548 | |
994 vxor 10,10,31 | |
995 .long 0x1294F548 | |
996 vxor 11,11,31 | |
997 .long 0x12B5F548 | |
998 vxor 12,12,31 | |
999 | |
1000 cmplwi 5,32 | |
1001 blt Lcbc_dec8x_one | |
1002 nop | |
1003 beq Lcbc_dec8x_two | |
1004 cmplwi 5,64 | |
1005 blt Lcbc_dec8x_three | |
1006 nop | |
1007 beq Lcbc_dec8x_four | |
1008 cmplwi 5,96 | |
1009 blt Lcbc_dec8x_five | |
1010 nop | |
1011 beq Lcbc_dec8x_six | |
1012 | |
1013 Lcbc_dec8x_seven: | |
1014 .long 0x11EF2549 | |
1015 .long 0x12100D49 | |
1016 .long 0x12311549 | |
1017 .long 0x12521D49 | |
1018 .long 0x12735549 | |
1019 .long 0x12945D49 | |
1020 .long 0x12B56549 | |
1021 vor 4,13,13 | |
1022 | |
1023 vperm 15,15,15,6 | |
1024 vperm 16,16,16,6 | |
1025 .long 0x7DE02799 | |
1026 vperm 17,17,17,6 | |
1027 .long 0x7E082799 | |
1028 vperm 18,18,18,6 | |
1029 .long 0x7E3A2799 | |
1030 vperm 19,19,19,6 | |
1031 .long 0x7E5B2799 | |
1032 vperm 20,20,20,6 | |
1033 .long 0x7E7C2799 | |
1034 vperm 21,21,21,6 | |
1035 .long 0x7E9D2799 | |
1036 .long 0x7EBE2799 | |
1037 addi 4,4,0x70 | |
1038 b Lcbc_dec8x_done | |
1039 | |
1040 .align 5 | |
1041 Lcbc_dec8x_six: | |
1042 .long 0x12102549 | |
1043 .long 0x12311549 | |
1044 .long 0x12521D49 | |
1045 .long 0x12735549 | |
1046 .long 0x12945D49 | |
1047 .long 0x12B56549 | |
1048 vor 4,13,13 | |
1049 | |
1050 vperm 16,16,16,6 | |
1051 vperm 17,17,17,6 | |
1052 .long 0x7E002799 | |
1053 vperm 18,18,18,6 | |
1054 .long 0x7E282799 | |
1055 vperm 19,19,19,6 | |
1056 .long 0x7E5A2799 | |
1057 vperm 20,20,20,6 | |
1058 .long 0x7E7B2799 | |
1059 vperm 21,21,21,6 | |
1060 .long 0x7E9C2799 | |
1061 .long 0x7EBD2799 | |
1062 addi 4,4,0x60 | |
1063 b Lcbc_dec8x_done | |
1064 | |
1065 .align 5 | |
1066 Lcbc_dec8x_five: | |
1067 .long 0x12312549 | |
1068 .long 0x12521D49 | |
1069 .long 0x12735549 | |
1070 .long 0x12945D49 | |
1071 .long 0x12B56549 | |
1072 vor 4,13,13 | |
1073 | |
1074 vperm 17,17,17,6 | |
1075 vperm 18,18,18,6 | |
1076 .long 0x7E202799 | |
1077 vperm 19,19,19,6 | |
1078 .long 0x7E482799 | |
1079 vperm 20,20,20,6 | |
1080 .long 0x7E7A2799 | |
1081 vperm 21,21,21,6 | |
1082 .long 0x7E9B2799 | |
1083 .long 0x7EBC2799 | |
1084 addi 4,4,0x50 | |
1085 b Lcbc_dec8x_done | |
1086 | |
1087 .align 5 | |
1088 Lcbc_dec8x_four: | |
1089 .long 0x12522549 | |
1090 .long 0x12735549 | |
1091 .long 0x12945D49 | |
1092 .long 0x12B56549 | |
1093 vor 4,13,13 | |
1094 | |
1095 vperm 18,18,18,6 | |
1096 vperm 19,19,19,6 | |
1097 .long 0x7E402799 | |
1098 vperm 20,20,20,6 | |
1099 .long 0x7E682799 | |
1100 vperm 21,21,21,6 | |
1101 .long 0x7E9A2799 | |
1102 .long 0x7EBB2799 | |
1103 addi 4,4,0x40 | |
1104 b Lcbc_dec8x_done | |
1105 | |
1106 .align 5 | |
1107 Lcbc_dec8x_three: | |
1108 .long 0x12732549 | |
1109 .long 0x12945D49 | |
1110 .long 0x12B56549 | |
1111 vor 4,13,13 | |
1112 | |
1113 vperm 19,19,19,6 | |
1114 vperm 20,20,20,6 | |
1115 .long 0x7E602799 | |
1116 vperm 21,21,21,6 | |
1117 .long 0x7E882799 | |
1118 .long 0x7EBA2799 | |
1119 addi 4,4,0x30 | |
1120 b Lcbc_dec8x_done | |
1121 | |
1122 .align 5 | |
1123 Lcbc_dec8x_two: | |
1124 .long 0x12942549 | |
1125 .long 0x12B56549 | |
1126 vor 4,13,13 | |
1127 | |
1128 vperm 20,20,20,6 | |
1129 vperm 21,21,21,6 | |
1130 .long 0x7E802799 | |
1131 .long 0x7EA82799 | |
1132 addi 4,4,0x20 | |
1133 b Lcbc_dec8x_done | |
1134 | |
1135 .align 5 | |
1136 Lcbc_dec8x_one: | |
1137 .long 0x12B52549 | |
1138 vor 4,13,13 | |
1139 | |
1140 vperm 21,21,21,6 | |
1141 .long 0x7EA02799 | |
1142 addi 4,4,0x10 | |
1143 | |
1144 Lcbc_dec8x_done: | |
1145 vperm 4,4,4,6 | |
1146 .long 0x7C803F99 | |
1147 | |
1148 li 10,79 | |
1149 li 11,95 | |
1150 stvx 6,10,1 | |
1151 addi 10,10,32 | |
1152 stvx 6,11,1 | |
1153 addi 11,11,32 | |
1154 stvx 6,10,1 | |
1155 addi 10,10,32 | |
1156 stvx 6,11,1 | |
1157 addi 11,11,32 | |
1158 stvx 6,10,1 | |
1159 addi 10,10,32 | |
1160 stvx 6,11,1 | |
1161 addi 11,11,32 | |
1162 stvx 6,10,1 | |
1163 addi 10,10,32 | |
1164 stvx 6,11,1 | |
1165 addi 11,11,32 | |
1166 | |
1167 mtspr 256,12 | |
1168 lvx 20,10,1 | |
1169 addi 10,10,32 | |
1170 lvx 21,11,1 | |
1171 addi 11,11,32 | |
1172 lvx 22,10,1 | |
1173 addi 10,10,32 | |
1174 lvx 23,11,1 | |
1175 addi 11,11,32 | |
1176 lvx 24,10,1 | |
1177 addi 10,10,32 | |
1178 lvx 25,11,1 | |
1179 addi 11,11,32 | |
1180 lvx 26,10,1 | |
1181 addi 10,10,32 | |
1182 lvx 27,11,1 | |
1183 addi 11,11,32 | |
1184 lvx 28,10,1 | |
1185 addi 10,10,32 | |
1186 lvx 29,11,1 | |
1187 addi 11,11,32 | |
1188 lvx 30,10,1 | |
1189 lvx 31,11,1 | |
1190 ld 26,400(1) | |
1191 ld 27,408(1) | |
1192 ld 28,416(1) | |
1193 ld 29,424(1) | |
1194 ld 30,432(1) | |
1195 ld 31,440(1) | |
1196 addi 1,1,448 | |
1197 blr | |
1198 .long 0 | |
1199 .byte 0,12,0x04,0,0x80,6,6,0 | |
1200 .long 0 | |
1201 | |
1202 .globl aes_hw_ctr32_encrypt_blocks | |
1203 .align 5 | |
1204 aes_hw_ctr32_encrypt_blocks: | |
1205 cmpldi 5,1 | |
1206 bclr 14,0 | |
1207 | |
1208 lis 0,0xfff0 | |
1209 mfspr 12,256 | |
1210 mtspr 256,0 | |
1211 | |
1212 li 10,15 | |
1213 vxor 0,0,0 | |
1214 vspltisb 3,0x0f | |
1215 | |
1216 lvx 4,0,7 | |
1217 lvsl 6,0,7 | |
1218 lvx 5,10,7 | |
1219 vspltisb 11,1 | |
1220 vxor 6,6,3 | |
1221 vperm 4,4,5,6 | |
1222 vsldoi 11,0,11,1 | |
1223 | |
1224 neg 11,3 | |
1225 lvsr 10,0,6 | |
1226 lwz 9,240(6) | |
1227 | |
1228 lvsr 6,0,11 | |
1229 lvx 5,0,3 | |
1230 addi 3,3,15 | |
1231 vxor 6,6,3 | |
1232 | |
1233 srwi 9,9,1 | |
1234 li 10,16 | |
1235 subi 9,9,1 | |
1236 | |
1237 cmpldi 5,8 | |
1238 bge _aesp8_ctr32_encrypt8x | |
1239 | |
1240 lvsl 8,0,4 | |
1241 vspltisb 9,-1 | |
1242 lvx 7,0,4 | |
1243 vperm 9,9,0,8 | |
1244 vxor 8,8,3 | |
1245 | |
1246 lvx 0,0,6 | |
1247 mtctr 9 | |
1248 lvx 1,10,6 | |
1249 addi 10,10,16 | |
1250 vperm 0,1,0,10 | |
1251 vxor 2,4,0 | |
1252 lvx 0,10,6 | |
1253 addi 10,10,16 | |
1254 b Loop_ctr32_enc | |
1255 | |
1256 .align 5 | |
1257 Loop_ctr32_enc: | |
1258 vperm 1,0,1,10 | |
1259 .long 0x10420D08 | |
1260 lvx 1,10,6 | |
1261 addi 10,10,16 | |
1262 vperm 0,1,0,10 | |
1263 .long 0x10420508 | |
1264 lvx 0,10,6 | |
1265 addi 10,10,16 | |
1266 bc 16,0,Loop_ctr32_enc | |
1267 | |
1268 vadduwm 4,4,11 | |
1269 vor 3,5,5 | |
1270 lvx 5,0,3 | |
1271 addi 3,3,16 | |
1272 subic. 5,5,1 | |
1273 | |
1274 vperm 1,0,1,10 | |
1275 .long 0x10420D08 | |
1276 lvx 1,10,6 | |
1277 vperm 3,3,5,6 | |
1278 li 10,16 | |
1279 vperm 1,1,0,10 | |
1280 lvx 0,0,6 | |
1281 vxor 3,3,1 | |
1282 .long 0x10421D09 | |
1283 | |
1284 lvx 1,10,6 | |
1285 addi 10,10,16 | |
1286 vperm 2,2,2,8 | |
1287 vsel 3,7,2,9 | |
1288 mtctr 9 | |
1289 vperm 0,1,0,10 | |
1290 vor 7,2,2 | |
1291 vxor 2,4,0 | |
1292 lvx 0,10,6 | |
1293 addi 10,10,16 | |
1294 stvx 3,0,4 | |
1295 addi 4,4,16 | |
1296 bne Loop_ctr32_enc | |
1297 | |
1298 addi 4,4,-1 | |
1299 lvx 2,0,4 | |
1300 vsel 2,7,2,9 | |
1301 stvx 2,0,4 | |
1302 | |
1303 mtspr 256,12 | |
1304 blr | |
1305 .long 0 | |
1306 .byte 0,12,0x14,0,0,0,6,0 | |
1307 .long 0 | |
1308 .align 5 | |
1309 _aesp8_ctr32_encrypt8x: | |
1310 stdu 1,-448(1) | |
1311 li 10,207 | |
1312 li 11,223 | |
1313 stvx 20,10,1 | |
1314 addi 10,10,32 | |
1315 stvx 21,11,1 | |
1316 addi 11,11,32 | |
1317 stvx 22,10,1 | |
1318 addi 10,10,32 | |
1319 stvx 23,11,1 | |
1320 addi 11,11,32 | |
1321 stvx 24,10,1 | |
1322 addi 10,10,32 | |
1323 stvx 25,11,1 | |
1324 addi 11,11,32 | |
1325 stvx 26,10,1 | |
1326 addi 10,10,32 | |
1327 stvx 27,11,1 | |
1328 addi 11,11,32 | |
1329 stvx 28,10,1 | |
1330 addi 10,10,32 | |
1331 stvx 29,11,1 | |
1332 addi 11,11,32 | |
1333 stvx 30,10,1 | |
1334 stvx 31,11,1 | |
1335 li 0,-1 | |
1336 stw 12,396(1) | |
1337 li 8,0x10 | |
1338 std 26,400(1) | |
1339 li 26,0x20 | |
1340 std 27,408(1) | |
1341 li 27,0x30 | |
1342 std 28,416(1) | |
1343 li 28,0x40 | |
1344 std 29,424(1) | |
1345 li 29,0x50 | |
1346 std 30,432(1) | |
1347 li 30,0x60 | |
1348 std 31,440(1) | |
1349 li 31,0x70 | |
1350 mtspr 256,0 | |
1351 | |
1352 subi 9,9,3 | |
1353 | |
1354 lvx 23,0,6 | |
1355 lvx 30,8,6 | |
1356 addi 6,6,0x20 | |
1357 lvx 31,0,6 | |
1358 vperm 23,30,23,10 | |
1359 addi 11,1,64+15 | |
1360 mtctr 9 | |
1361 | |
1362 Load_ctr32_enc_key: | |
1363 vperm 24,31,30,10 | |
1364 lvx 30,8,6 | |
1365 addi 6,6,0x20 | |
1366 stvx 24,0,11 | |
1367 vperm 25,30,31,10 | |
1368 lvx 31,0,6 | |
1369 stvx 25,8,11 | |
1370 addi 11,11,0x20 | |
1371 bc 16,0,Load_ctr32_enc_key | |
1372 | |
1373 lvx 26,8,6 | |
1374 vperm 24,31,30,10 | |
1375 lvx 27,26,6 | |
1376 stvx 24,0,11 | |
1377 vperm 25,26,31,10 | |
1378 lvx 28,27,6 | |
1379 stvx 25,8,11 | |
1380 addi 11,1,64+15 | |
1381 vperm 26,27,26,10 | |
1382 lvx 29,28,6 | |
1383 vperm 27,28,27,10 | |
1384 lvx 30,29,6 | |
1385 vperm 28,29,28,10 | |
1386 lvx 31,30,6 | |
1387 vperm 29,30,29,10 | |
1388 lvx 15,31,6 | |
1389 vperm 30,31,30,10 | |
1390 lvx 24,0,11 | |
1391 vperm 31,15,31,10 | |
1392 lvx 25,8,11 | |
1393 | |
1394 vadduwm 7,11,11 | |
1395 subi 3,3,15 | |
1396 sldi 5,5,4 | |
1397 | |
1398 vadduwm 16,4,11 | |
1399 vadduwm 17,4,7 | |
1400 vxor 15,4,23 | |
1401 li 10,8 | |
1402 vadduwm 18,16,7 | |
1403 vxor 16,16,23 | |
1404 lvsl 6,0,10 | |
1405 vadduwm 19,17,7 | |
1406 vxor 17,17,23 | |
1407 vspltisb 3,0x0f | |
1408 vadduwm 20,18,7 | |
1409 vxor 18,18,23 | |
1410 vxor 6,6,3 | |
1411 vadduwm 21,19,7 | |
1412 vxor 19,19,23 | |
1413 vadduwm 22,20,7 | |
1414 vxor 20,20,23 | |
1415 vadduwm 4,21,7 | |
1416 vxor 21,21,23 | |
1417 vxor 22,22,23 | |
1418 | |
1419 mtctr 9 | |
1420 b Loop_ctr32_enc8x | |
1421 .align 5 | |
1422 Loop_ctr32_enc8x: | |
1423 .long 0x11EFC508 | |
1424 .long 0x1210C508 | |
1425 .long 0x1231C508 | |
1426 .long 0x1252C508 | |
1427 .long 0x1273C508 | |
1428 .long 0x1294C508 | |
1429 .long 0x12B5C508 | |
1430 .long 0x12D6C508 | |
1431 Loop_ctr32_enc8x_middle: | |
1432 lvx 24,26,11 | |
1433 addi 11,11,0x20 | |
1434 | |
1435 .long 0x11EFCD08 | |
1436 .long 0x1210CD08 | |
1437 .long 0x1231CD08 | |
1438 .long 0x1252CD08 | |
1439 .long 0x1273CD08 | |
1440 .long 0x1294CD08 | |
1441 .long 0x12B5CD08 | |
1442 .long 0x12D6CD08 | |
1443 lvx 25,8,11 | |
1444 bc 16,0,Loop_ctr32_enc8x | |
1445 | |
1446 subic 11,5,256 | |
1447 .long 0x11EFC508 | |
1448 .long 0x1210C508 | |
1449 .long 0x1231C508 | |
1450 .long 0x1252C508 | |
1451 .long 0x1273C508 | |
1452 .long 0x1294C508 | |
1453 .long 0x12B5C508 | |
1454 .long 0x12D6C508 | |
1455 | |
1456 subfe 0,0,0 | |
1457 .long 0x11EFCD08 | |
1458 .long 0x1210CD08 | |
1459 .long 0x1231CD08 | |
1460 .long 0x1252CD08 | |
1461 .long 0x1273CD08 | |
1462 .long 0x1294CD08 | |
1463 .long 0x12B5CD08 | |
1464 .long 0x12D6CD08 | |
1465 | |
1466 and 0,0,11 | |
1467 addi 11,1,64+15 | |
1468 .long 0x11EFD508 | |
1469 .long 0x1210D508 | |
1470 .long 0x1231D508 | |
1471 .long 0x1252D508 | |
1472 .long 0x1273D508 | |
1473 .long 0x1294D508 | |
1474 .long 0x12B5D508 | |
1475 .long 0x12D6D508 | |
1476 lvx 24,0,11 | |
1477 | |
1478 subic 5,5,129 | |
1479 .long 0x11EFDD08 | |
1480 addi 5,5,1 | |
1481 .long 0x1210DD08 | |
1482 .long 0x1231DD08 | |
1483 .long 0x1252DD08 | |
1484 .long 0x1273DD08 | |
1485 .long 0x1294DD08 | |
1486 .long 0x12B5DD08 | |
1487 .long 0x12D6DD08 | |
1488 lvx 25,8,11 | |
1489 | |
1490 .long 0x11EFE508 | |
1491 .long 0x7C001E99 | |
1492 .long 0x1210E508 | |
1493 .long 0x7C281E99 | |
1494 .long 0x1231E508 | |
1495 .long 0x7C5A1E99 | |
1496 .long 0x1252E508 | |
1497 .long 0x7C7B1E99 | |
1498 .long 0x1273E508 | |
1499 .long 0x7D5C1E99 | |
1500 .long 0x1294E508 | |
1501 .long 0x7D9D1E99 | |
1502 .long 0x12B5E508 | |
1503 .long 0x7DBE1E99 | |
1504 .long 0x12D6E508 | |
1505 .long 0x7DDF1E99 | |
1506 addi 3,3,0x80 | |
1507 | |
1508 .long 0x11EFED08 | |
1509 vperm 0,0,0,6 | |
1510 .long 0x1210ED08 | |
1511 vperm 1,1,1,6 | |
1512 .long 0x1231ED08 | |
1513 vperm 2,2,2,6 | |
1514 .long 0x1252ED08 | |
1515 vperm 3,3,3,6 | |
1516 .long 0x1273ED08 | |
1517 vperm 10,10,10,6 | |
1518 .long 0x1294ED08 | |
1519 vperm 12,12,12,6 | |
1520 .long 0x12B5ED08 | |
1521 vperm 13,13,13,6 | |
1522 .long 0x12D6ED08 | |
1523 vperm 14,14,14,6 | |
1524 | |
1525 add 3,3,0 | |
1526 | |
1527 | |
1528 | |
1529 subfe. 0,0,0 | |
1530 .long 0x11EFF508 | |
1531 vxor 0,0,31 | |
1532 .long 0x1210F508 | |
1533 vxor 1,1,31 | |
1534 .long 0x1231F508 | |
1535 vxor 2,2,31 | |
1536 .long 0x1252F508 | |
1537 vxor 3,3,31 | |
1538 .long 0x1273F508 | |
1539 vxor 10,10,31 | |
1540 .long 0x1294F508 | |
1541 vxor 12,12,31 | |
1542 .long 0x12B5F508 | |
1543 vxor 13,13,31 | |
1544 .long 0x12D6F508 | |
1545 vxor 14,14,31 | |
1546 | |
1547 bne Lctr32_enc8x_break | |
1548 | |
1549 .long 0x100F0509 | |
1550 .long 0x10300D09 | |
1551 vadduwm 16,4,11 | |
1552 .long 0x10511509 | |
1553 vadduwm 17,4,7 | |
1554 vxor 15,4,23 | |
1555 .long 0x10721D09 | |
1556 vadduwm 18,16,7 | |
1557 vxor 16,16,23 | |
1558 .long 0x11535509 | |
1559 vadduwm 19,17,7 | |
1560 vxor 17,17,23 | |
1561 .long 0x11946509 | |
1562 vadduwm 20,18,7 | |
1563 vxor 18,18,23 | |
1564 .long 0x11B56D09 | |
1565 vadduwm 21,19,7 | |
1566 vxor 19,19,23 | |
1567 .long 0x11D67509 | |
1568 vadduwm 22,20,7 | |
1569 vxor 20,20,23 | |
1570 vperm 0,0,0,6 | |
1571 vadduwm 4,21,7 | |
1572 vxor 21,21,23 | |
1573 vperm 1,1,1,6 | |
1574 vxor 22,22,23 | |
1575 mtctr 9 | |
1576 | |
1577 .long 0x11EFC508 | |
1578 .long 0x7C002799 | |
1579 vperm 2,2,2,6 | |
1580 .long 0x1210C508 | |
1581 .long 0x7C282799 | |
1582 vperm 3,3,3,6 | |
1583 .long 0x1231C508 | |
1584 .long 0x7C5A2799 | |
1585 vperm 10,10,10,6 | |
1586 .long 0x1252C508 | |
1587 .long 0x7C7B2799 | |
1588 vperm 12,12,12,6 | |
1589 .long 0x1273C508 | |
1590 .long 0x7D5C2799 | |
1591 vperm 13,13,13,6 | |
1592 .long 0x1294C508 | |
1593 .long 0x7D9D2799 | |
1594 vperm 14,14,14,6 | |
1595 .long 0x12B5C508 | |
1596 .long 0x7DBE2799 | |
1597 .long 0x12D6C508 | |
1598 .long 0x7DDF2799 | |
1599 addi 4,4,0x80 | |
1600 | |
1601 b Loop_ctr32_enc8x_middle | |
1602 | |
1603 .align 5 | |
1604 Lctr32_enc8x_break: | |
1605 cmpwi 5,-0x60 | |
1606 blt Lctr32_enc8x_one | |
1607 nop | |
1608 beq Lctr32_enc8x_two | |
1609 cmpwi 5,-0x40 | |
1610 blt Lctr32_enc8x_three | |
1611 nop | |
1612 beq Lctr32_enc8x_four | |
1613 cmpwi 5,-0x20 | |
1614 blt Lctr32_enc8x_five | |
1615 nop | |
1616 beq Lctr32_enc8x_six | |
1617 cmpwi 5,0x00 | |
1618 blt Lctr32_enc8x_seven | |
1619 | |
1620 Lctr32_enc8x_eight: | |
1621 .long 0x11EF0509 | |
1622 .long 0x12100D09 | |
1623 .long 0x12311509 | |
1624 .long 0x12521D09 | |
1625 .long 0x12735509 | |
1626 .long 0x12946509 | |
1627 .long 0x12B56D09 | |
1628 .long 0x12D67509 | |
1629 | |
1630 vperm 15,15,15,6 | |
1631 vperm 16,16,16,6 | |
1632 .long 0x7DE02799 | |
1633 vperm 17,17,17,6 | |
1634 .long 0x7E082799 | |
1635 vperm 18,18,18,6 | |
1636 .long 0x7E3A2799 | |
1637 vperm 19,19,19,6 | |
1638 .long 0x7E5B2799 | |
1639 vperm 20,20,20,6 | |
1640 .long 0x7E7C2799 | |
1641 vperm 21,21,21,6 | |
1642 .long 0x7E9D2799 | |
1643 vperm 22,22,22,6 | |
1644 .long 0x7EBE2799 | |
1645 .long 0x7EDF2799 | |
1646 addi 4,4,0x80 | |
1647 b Lctr32_enc8x_done | |
1648 | |
1649 .align 5 | |
1650 Lctr32_enc8x_seven: | |
1651 .long 0x11EF0D09 | |
1652 .long 0x12101509 | |
1653 .long 0x12311D09 | |
1654 .long 0x12525509 | |
1655 .long 0x12736509 | |
1656 .long 0x12946D09 | |
1657 .long 0x12B57509 | |
1658 | |
1659 vperm 15,15,15,6 | |
1660 vperm 16,16,16,6 | |
1661 .long 0x7DE02799 | |
1662 vperm 17,17,17,6 | |
1663 .long 0x7E082799 | |
1664 vperm 18,18,18,6 | |
1665 .long 0x7E3A2799 | |
1666 vperm 19,19,19,6 | |
1667 .long 0x7E5B2799 | |
1668 vperm 20,20,20,6 | |
1669 .long 0x7E7C2799 | |
1670 vperm 21,21,21,6 | |
1671 .long 0x7E9D2799 | |
1672 .long 0x7EBE2799 | |
1673 addi 4,4,0x70 | |
1674 b Lctr32_enc8x_done | |
1675 | |
1676 .align 5 | |
1677 Lctr32_enc8x_six: | |
1678 .long 0x11EF1509 | |
1679 .long 0x12101D09 | |
1680 .long 0x12315509 | |
1681 .long 0x12526509 | |
1682 .long 0x12736D09 | |
1683 .long 0x12947509 | |
1684 | |
1685 vperm 15,15,15,6 | |
1686 vperm 16,16,16,6 | |
1687 .long 0x7DE02799 | |
1688 vperm 17,17,17,6 | |
1689 .long 0x7E082799 | |
1690 vperm 18,18,18,6 | |
1691 .long 0x7E3A2799 | |
1692 vperm 19,19,19,6 | |
1693 .long 0x7E5B2799 | |
1694 vperm 20,20,20,6 | |
1695 .long 0x7E7C2799 | |
1696 .long 0x7E9D2799 | |
1697 addi 4,4,0x60 | |
1698 b Lctr32_enc8x_done | |
1699 | |
1700 .align 5 | |
1701 Lctr32_enc8x_five: | |
1702 .long 0x11EF1D09 | |
1703 .long 0x12105509 | |
1704 .long 0x12316509 | |
1705 .long 0x12526D09 | |
1706 .long 0x12737509 | |
1707 | |
1708 vperm 15,15,15,6 | |
1709 vperm 16,16,16,6 | |
1710 .long 0x7DE02799 | |
1711 vperm 17,17,17,6 | |
1712 .long 0x7E082799 | |
1713 vperm 18,18,18,6 | |
1714 .long 0x7E3A2799 | |
1715 vperm 19,19,19,6 | |
1716 .long 0x7E5B2799 | |
1717 .long 0x7E7C2799 | |
1718 addi 4,4,0x50 | |
1719 b Lctr32_enc8x_done | |
1720 | |
1721 .align 5 | |
1722 Lctr32_enc8x_four: | |
1723 .long 0x11EF5509 | |
1724 .long 0x12106509 | |
1725 .long 0x12316D09 | |
1726 .long 0x12527509 | |
1727 | |
1728 vperm 15,15,15,6 | |
1729 vperm 16,16,16,6 | |
1730 .long 0x7DE02799 | |
1731 vperm 17,17,17,6 | |
1732 .long 0x7E082799 | |
1733 vperm 18,18,18,6 | |
1734 .long 0x7E3A2799 | |
1735 .long 0x7E5B2799 | |
1736 addi 4,4,0x40 | |
1737 b Lctr32_enc8x_done | |
1738 | |
1739 .align 5 | |
1740 Lctr32_enc8x_three: | |
1741 .long 0x11EF6509 | |
1742 .long 0x12106D09 | |
1743 .long 0x12317509 | |
1744 | |
1745 vperm 15,15,15,6 | |
1746 vperm 16,16,16,6 | |
1747 .long 0x7DE02799 | |
1748 vperm 17,17,17,6 | |
1749 .long 0x7E082799 | |
1750 .long 0x7E3A2799 | |
1751 addi 4,4,0x30 | |
1752 b Lcbc_dec8x_done | |
1753 | |
1754 .align 5 | |
1755 Lctr32_enc8x_two: | |
1756 .long 0x11EF6D09 | |
1757 .long 0x12107509 | |
1758 | |
1759 vperm 15,15,15,6 | |
1760 vperm 16,16,16,6 | |
1761 .long 0x7DE02799 | |
1762 .long 0x7E082799 | |
1763 addi 4,4,0x20 | |
1764 b Lcbc_dec8x_done | |
1765 | |
1766 .align 5 | |
1767 Lctr32_enc8x_one: | |
1768 .long 0x11EF7509 | |
1769 | |
1770 vperm 15,15,15,6 | |
1771 .long 0x7DE02799 | |
1772 addi 4,4,0x10 | |
1773 | |
1774 Lctr32_enc8x_done: | |
1775 li 10,79 | |
1776 li 11,95 | |
1777 stvx 6,10,1 | |
1778 addi 10,10,32 | |
1779 stvx 6,11,1 | |
1780 addi 11,11,32 | |
1781 stvx 6,10,1 | |
1782 addi 10,10,32 | |
1783 stvx 6,11,1 | |
1784 addi 11,11,32 | |
1785 stvx 6,10,1 | |
1786 addi 10,10,32 | |
1787 stvx 6,11,1 | |
1788 addi 11,11,32 | |
1789 stvx 6,10,1 | |
1790 addi 10,10,32 | |
1791 stvx 6,11,1 | |
1792 addi 11,11,32 | |
1793 | |
1794 mtspr 256,12 | |
1795 lvx 20,10,1 | |
1796 addi 10,10,32 | |
1797 lvx 21,11,1 | |
1798 addi 11,11,32 | |
1799 lvx 22,10,1 | |
1800 addi 10,10,32 | |
1801 lvx 23,11,1 | |
1802 addi 11,11,32 | |
1803 lvx 24,10,1 | |
1804 addi 10,10,32 | |
1805 lvx 25,11,1 | |
1806 addi 11,11,32 | |
1807 lvx 26,10,1 | |
1808 addi 10,10,32 | |
1809 lvx 27,11,1 | |
1810 addi 11,11,32 | |
1811 lvx 28,10,1 | |
1812 addi 10,10,32 | |
1813 lvx 29,11,1 | |
1814 addi 11,11,32 | |
1815 lvx 30,10,1 | |
1816 lvx 31,11,1 | |
1817 ld 26,400(1) | |
1818 ld 27,408(1) | |
1819 ld 28,416(1) | |
1820 ld 29,424(1) | |
1821 ld 30,432(1) | |
1822 ld 31,440(1) | |
1823 addi 1,1,448 | |
1824 blr | |
1825 .long 0 | |
1826 .byte 0,12,0x04,0,0x80,6,6,0 | |
1827 .long 0 | |
1828 | |
1829 .globl aes_hw_xts_encrypt | |
1830 .align 5 | |
1831 aes_hw_xts_encrypt: | |
1832 mr 10,3 | |
1833 li 3,-1 | |
1834 cmpldi 5,16 | |
1835 bclr 14,0 | |
1836 | |
1837 lis 0,0xfff0 | |
1838 mfspr 12,256 | |
1839 li 11,0 | |
1840 mtspr 256,0 | |
1841 | |
1842 vspltisb 9,0x07 | |
1843 lvsl 6,11,11 | |
1844 vspltisb 11,0x0f | |
1845 vxor 6,6,9 | |
1846 | |
1847 li 3,15 | |
1848 lvx 8,0,8 | |
1849 lvsl 5,0,8 | |
1850 lvx 4,3,8 | |
1851 vxor 5,5,11 | |
1852 vperm 8,8,4,5 | |
1853 | |
1854 neg 11,10 | |
1855 lvsr 5,0,11 | |
1856 lvx 2,0,10 | |
1857 addi 10,10,15 | |
1858 vxor 5,5,11 | |
1859 | |
1860 cmpldi 7,0 | |
1861 beq Lxts_enc_no_key2 | |
1862 | |
1863 lvsr 7,0,7 | |
1864 lwz 9,240(7) | |
1865 srwi 9,9,1 | |
1866 subi 9,9,1 | |
1867 li 3,16 | |
1868 | |
1869 lvx 0,0,7 | |
1870 lvx 1,3,7 | |
1871 addi 3,3,16 | |
1872 vperm 0,1,0,7 | |
1873 vxor 8,8,0 | |
1874 lvx 0,3,7 | |
1875 addi 3,3,16 | |
1876 mtctr 9 | |
1877 | |
1878 Ltweak_xts_enc: | |
1879 vperm 1,0,1,7 | |
1880 .long 0x11080D08 | |
1881 lvx 1,3,7 | |
1882 addi 3,3,16 | |
1883 vperm 0,1,0,7 | |
1884 .long 0x11080508 | |
1885 lvx 0,3,7 | |
1886 addi 3,3,16 | |
1887 bc 16,0,Ltweak_xts_enc | |
1888 | |
1889 vperm 1,0,1,7 | |
1890 .long 0x11080D08 | |
1891 lvx 1,3,7 | |
1892 vperm 0,1,0,7 | |
1893 .long 0x11080509 | |
1894 | |
1895 li 8,0 | |
1896 b Lxts_enc | |
1897 | |
1898 Lxts_enc_no_key2: | |
1899 li 3,-16 | |
1900 and 5,5,3 | |
1901 | |
1902 | |
1903 Lxts_enc: | |
1904 lvx 4,0,10 | |
1905 addi 10,10,16 | |
1906 | |
1907 lvsr 7,0,6 | |
1908 lwz 9,240(6) | |
1909 srwi 9,9,1 | |
1910 subi 9,9,1 | |
1911 li 3,16 | |
1912 | |
1913 vslb 10,9,9 | |
1914 vor 10,10,9 | |
1915 vspltisb 11,1 | |
1916 vsldoi 10,10,11,15 | |
1917 | |
1918 cmpldi 5,96 | |
1919 bge _aesp8_xts_encrypt6x | |
1920 | |
1921 andi. 7,5,15 | |
1922 subic 0,5,32 | |
1923 subi 7,7,16 | |
1924 subfe 0,0,0 | |
1925 and 0,0,7 | |
1926 add 10,10,0 | |
1927 | |
1928 lvx 0,0,6 | |
1929 lvx 1,3,6 | |
1930 addi 3,3,16 | |
1931 vperm 2,2,4,5 | |
1932 vperm 0,1,0,7 | |
1933 vxor 2,2,8 | |
1934 vxor 2,2,0 | |
1935 lvx 0,3,6 | |
1936 addi 3,3,16 | |
1937 mtctr 9 | |
1938 b Loop_xts_enc | |
1939 | |
1940 .align 5 | |
1941 Loop_xts_enc: | |
1942 vperm 1,0,1,7 | |
1943 .long 0x10420D08 | |
1944 lvx 1,3,6 | |
1945 addi 3,3,16 | |
1946 vperm 0,1,0,7 | |
1947 .long 0x10420508 | |
1948 lvx 0,3,6 | |
1949 addi 3,3,16 | |
1950 bc 16,0,Loop_xts_enc | |
1951 | |
1952 vperm 1,0,1,7 | |
1953 .long 0x10420D08 | |
1954 lvx 1,3,6 | |
1955 li 3,16 | |
1956 vperm 0,1,0,7 | |
1957 vxor 0,0,8 | |
1958 .long 0x10620509 | |
1959 | |
1960 vperm 11,3,3,6 | |
1961 | |
1962 .long 0x7D602799 | |
1963 | |
1964 addi 4,4,16 | |
1965 | |
1966 subic. 5,5,16 | |
1967 beq Lxts_enc_done | |
1968 | |
1969 vor 2,4,4 | |
1970 lvx 4,0,10 | |
1971 addi 10,10,16 | |
1972 lvx 0,0,6 | |
1973 lvx 1,3,6 | |
1974 addi 3,3,16 | |
1975 | |
1976 subic 0,5,32 | |
1977 subfe 0,0,0 | |
1978 and 0,0,7 | |
1979 add 10,10,0 | |
1980 | |
1981 vsrab 11,8,9 | |
1982 vaddubm 8,8,8 | |
1983 vsldoi 11,11,11,15 | |
1984 vand 11,11,10 | |
1985 vxor 8,8,11 | |
1986 | |
1987 vperm 2,2,4,5 | |
1988 vperm 0,1,0,7 | |
1989 vxor 2,2,8 | |
1990 vxor 3,3,0 | |
1991 vxor 2,2,0 | |
1992 lvx 0,3,6 | |
1993 addi 3,3,16 | |
1994 | |
1995 mtctr 9 | |
1996 cmpldi 5,16 | |
1997 bge Loop_xts_enc | |
1998 | |
1999 vxor 3,3,8 | |
2000 lvsr 5,0,5 | |
2001 vxor 4,4,4 | |
2002 vspltisb 11,-1 | |
2003 vperm 4,4,11,5 | |
2004 vsel 2,2,3,4 | |
2005 | |
2006 subi 11,4,17 | |
2007 subi 4,4,16 | |
2008 mtctr 5 | |
2009 li 5,16 | |
2010 Loop_xts_enc_steal: | |
2011 lbzu 0,1(11) | |
2012 stb 0,16(11) | |
2013 bc 16,0,Loop_xts_enc_steal | |
2014 | |
2015 mtctr 9 | |
2016 b Loop_xts_enc | |
2017 | |
2018 Lxts_enc_done: | |
2019 cmpldi 8,0 | |
2020 beq Lxts_enc_ret | |
2021 | |
2022 vsrab 11,8,9 | |
2023 vaddubm 8,8,8 | |
2024 vsldoi 11,11,11,15 | |
2025 vand 11,11,10 | |
2026 vxor 8,8,11 | |
2027 | |
2028 vperm 8,8,8,6 | |
2029 .long 0x7D004799 | |
2030 | |
2031 Lxts_enc_ret: | |
2032 mtspr 256,12 | |
2033 li 3,0 | |
2034 blr | |
2035 .long 0 | |
2036 .byte 0,12,0x04,0,0x80,6,6,0 | |
2037 .long 0 | |
2038 | |
2039 | |
2040 .globl aes_hw_xts_decrypt | |
2041 .align 5 | |
2042 aes_hw_xts_decrypt: | |
2043 mr 10,3 | |
2044 li 3,-1 | |
2045 cmpldi 5,16 | |
2046 bclr 14,0 | |
2047 | |
2048 lis 0,0xfff8 | |
2049 mfspr 12,256 | |
2050 li 11,0 | |
2051 mtspr 256,0 | |
2052 | |
2053 andi. 0,5,15 | |
2054 neg 0,0 | |
2055 andi. 0,0,16 | |
2056 sub 5,5,0 | |
2057 | |
2058 vspltisb 9,0x07 | |
2059 lvsl 6,11,11 | |
2060 vspltisb 11,0x0f | |
2061 vxor 6,6,9 | |
2062 | |
2063 li 3,15 | |
2064 lvx 8,0,8 | |
2065 lvsl 5,0,8 | |
2066 lvx 4,3,8 | |
2067 vxor 5,5,11 | |
2068 vperm 8,8,4,5 | |
2069 | |
2070 neg 11,10 | |
2071 lvsr 5,0,11 | |
2072 lvx 2,0,10 | |
2073 addi 10,10,15 | |
2074 vxor 5,5,11 | |
2075 | |
2076 cmpldi 7,0 | |
2077 beq Lxts_dec_no_key2 | |
2078 | |
2079 lvsr 7,0,7 | |
2080 lwz 9,240(7) | |
2081 srwi 9,9,1 | |
2082 subi 9,9,1 | |
2083 li 3,16 | |
2084 | |
2085 lvx 0,0,7 | |
2086 lvx 1,3,7 | |
2087 addi 3,3,16 | |
2088 vperm 0,1,0,7 | |
2089 vxor 8,8,0 | |
2090 lvx 0,3,7 | |
2091 addi 3,3,16 | |
2092 mtctr 9 | |
2093 | |
2094 Ltweak_xts_dec: | |
2095 vperm 1,0,1,7 | |
2096 .long 0x11080D08 | |
2097 lvx 1,3,7 | |
2098 addi 3,3,16 | |
2099 vperm 0,1,0,7 | |
2100 .long 0x11080508 | |
2101 lvx 0,3,7 | |
2102 addi 3,3,16 | |
2103 bc 16,0,Ltweak_xts_dec | |
2104 | |
2105 vperm 1,0,1,7 | |
2106 .long 0x11080D08 | |
2107 lvx 1,3,7 | |
2108 vperm 0,1,0,7 | |
2109 .long 0x11080509 | |
2110 | |
2111 li 8,0 | |
2112 b Lxts_dec | |
2113 | |
2114 Lxts_dec_no_key2: | |
2115 neg 3,5 | |
2116 andi. 3,3,15 | |
2117 add 5,5,3 | |
2118 | |
2119 | |
2120 Lxts_dec: | |
2121 lvx 4,0,10 | |
2122 addi 10,10,16 | |
2123 | |
2124 lvsr 7,0,6 | |
2125 lwz 9,240(6) | |
2126 srwi 9,9,1 | |
2127 subi 9,9,1 | |
2128 li 3,16 | |
2129 | |
2130 vslb 10,9,9 | |
2131 vor 10,10,9 | |
2132 vspltisb 11,1 | |
2133 vsldoi 10,10,11,15 | |
2134 | |
2135 cmpldi 5,96 | |
2136 bge _aesp8_xts_decrypt6x | |
2137 | |
2138 lvx 0,0,6 | |
2139 lvx 1,3,6 | |
2140 addi 3,3,16 | |
2141 vperm 2,2,4,5 | |
2142 vperm 0,1,0,7 | |
2143 vxor 2,2,8 | |
2144 vxor 2,2,0 | |
2145 lvx 0,3,6 | |
2146 addi 3,3,16 | |
2147 mtctr 9 | |
2148 | |
2149 cmpldi 5,16 | |
2150 blt Ltail_xts_dec | |
2151 | |
2152 | |
2153 .align 5 | |
2154 Loop_xts_dec: | |
2155 vperm 1,0,1,7 | |
2156 .long 0x10420D48 | |
2157 lvx 1,3,6 | |
2158 addi 3,3,16 | |
2159 vperm 0,1,0,7 | |
2160 .long 0x10420548 | |
2161 lvx 0,3,6 | |
2162 addi 3,3,16 | |
2163 bc 16,0,Loop_xts_dec | |
2164 | |
2165 vperm 1,0,1,7 | |
2166 .long 0x10420D48 | |
2167 lvx 1,3,6 | |
2168 li 3,16 | |
2169 vperm 0,1,0,7 | |
2170 vxor 0,0,8 | |
2171 .long 0x10620549 | |
2172 | |
2173 vperm 11,3,3,6 | |
2174 | |
2175 .long 0x7D602799 | |
2176 | |
2177 addi 4,4,16 | |
2178 | |
2179 subic. 5,5,16 | |
2180 beq Lxts_dec_done | |
2181 | |
2182 vor 2,4,4 | |
2183 lvx 4,0,10 | |
2184 addi 10,10,16 | |
2185 lvx 0,0,6 | |
2186 lvx 1,3,6 | |
2187 addi 3,3,16 | |
2188 | |
2189 vsrab 11,8,9 | |
2190 vaddubm 8,8,8 | |
2191 vsldoi 11,11,11,15 | |
2192 vand 11,11,10 | |
2193 vxor 8,8,11 | |
2194 | |
2195 vperm 2,2,4,5 | |
2196 vperm 0,1,0,7 | |
2197 vxor 2,2,8 | |
2198 vxor 2,2,0 | |
2199 lvx 0,3,6 | |
2200 addi 3,3,16 | |
2201 | |
2202 mtctr 9 | |
2203 cmpldi 5,16 | |
2204 bge Loop_xts_dec | |
2205 | |
2206 Ltail_xts_dec: | |
2207 vsrab 11,8,9 | |
2208 vaddubm 12,8,8 | |
2209 vsldoi 11,11,11,15 | |
2210 vand 11,11,10 | |
2211 vxor 12,12,11 | |
2212 | |
2213 subi 10,10,16 | |
2214 add 10,10,5 | |
2215 | |
2216 vxor 2,2,8 | |
2217 vxor 2,2,12 | |
2218 | |
2219 Loop_xts_dec_short: | |
2220 vperm 1,0,1,7 | |
2221 .long 0x10420D48 | |
2222 lvx 1,3,6 | |
2223 addi 3,3,16 | |
2224 vperm 0,1,0,7 | |
2225 .long 0x10420548 | |
2226 lvx 0,3,6 | |
2227 addi 3,3,16 | |
2228 bc 16,0,Loop_xts_dec_short | |
2229 | |
2230 vperm 1,0,1,7 | |
2231 .long 0x10420D48 | |
2232 lvx 1,3,6 | |
2233 li 3,16 | |
2234 vperm 0,1,0,7 | |
2235 vxor 0,0,12 | |
2236 .long 0x10620549 | |
2237 | |
2238 vperm 11,3,3,6 | |
2239 | |
2240 .long 0x7D602799 | |
2241 | |
2242 | |
2243 vor 2,4,4 | |
2244 lvx 4,0,10 | |
2245 | |
2246 lvx 0,0,6 | |
2247 lvx 1,3,6 | |
2248 addi 3,3,16 | |
2249 vperm 2,2,4,5 | |
2250 vperm 0,1,0,7 | |
2251 | |
2252 lvsr 5,0,5 | |
2253 vxor 4,4,4 | |
2254 vspltisb 11,-1 | |
2255 vperm 4,4,11,5 | |
2256 vsel 2,2,3,4 | |
2257 | |
2258 vxor 0,0,8 | |
2259 vxor 2,2,0 | |
2260 lvx 0,3,6 | |
2261 addi 3,3,16 | |
2262 | |
2263 subi 11,4,1 | |
2264 mtctr 5 | |
2265 li 5,16 | |
2266 Loop_xts_dec_steal: | |
2267 lbzu 0,1(11) | |
2268 stb 0,16(11) | |
2269 bc 16,0,Loop_xts_dec_steal | |
2270 | |
2271 mtctr 9 | |
2272 b Loop_xts_dec | |
2273 | |
2274 Lxts_dec_done: | |
2275 cmpldi 8,0 | |
2276 beq Lxts_dec_ret | |
2277 | |
2278 vsrab 11,8,9 | |
2279 vaddubm 8,8,8 | |
2280 vsldoi 11,11,11,15 | |
2281 vand 11,11,10 | |
2282 vxor 8,8,11 | |
2283 | |
2284 vperm 8,8,8,6 | |
2285 .long 0x7D004799 | |
2286 | |
2287 Lxts_dec_ret: | |
2288 mtspr 256,12 | |
2289 li 3,0 | |
2290 blr | |
2291 .long 0 | |
2292 .byte 0,12,0x04,0,0x80,6,6,0 | |
2293 .long 0 | |
2294 | |
2295 .align 5 | |
2296 _aesp8_xts_encrypt6x: | |
2297 stdu 1,-448(1) | |
2298 mflr 11 | |
2299 li 7,207 | |
2300 li 3,223 | |
2301 std 11,464(1) | |
2302 stvx 20,7,1 | |
2303 addi 7,7,32 | |
2304 stvx 21,3,1 | |
2305 addi 3,3,32 | |
2306 stvx 22,7,1 | |
2307 addi 7,7,32 | |
2308 stvx 23,3,1 | |
2309 addi 3,3,32 | |
2310 stvx 24,7,1 | |
2311 addi 7,7,32 | |
2312 stvx 25,3,1 | |
2313 addi 3,3,32 | |
2314 stvx 26,7,1 | |
2315 addi 7,7,32 | |
2316 stvx 27,3,1 | |
2317 addi 3,3,32 | |
2318 stvx 28,7,1 | |
2319 addi 7,7,32 | |
2320 stvx 29,3,1 | |
2321 addi 3,3,32 | |
2322 stvx 30,7,1 | |
2323 stvx 31,3,1 | |
2324 li 0,-1 | |
2325 stw 12,396(1) | |
2326 li 3,0x10 | |
2327 std 26,400(1) | |
2328 li 26,0x20 | |
2329 std 27,408(1) | |
2330 li 27,0x30 | |
2331 std 28,416(1) | |
2332 li 28,0x40 | |
2333 std 29,424(1) | |
2334 li 29,0x50 | |
2335 std 30,432(1) | |
2336 li 30,0x60 | |
2337 std 31,440(1) | |
2338 li 31,0x70 | |
2339 mtspr 256,0 | |
2340 | |
2341 subi 9,9,3 | |
2342 | |
2343 lvx 23,0,6 | |
2344 lvx 30,3,6 | |
2345 addi 6,6,0x20 | |
2346 lvx 31,0,6 | |
2347 vperm 23,30,23,7 | |
2348 addi 7,1,64+15 | |
2349 mtctr 9 | |
2350 | |
2351 Load_xts_enc_key: | |
2352 vperm 24,31,30,7 | |
2353 lvx 30,3,6 | |
2354 addi 6,6,0x20 | |
2355 stvx 24,0,7 | |
2356 vperm 25,30,31,7 | |
2357 lvx 31,0,6 | |
2358 stvx 25,3,7 | |
2359 addi 7,7,0x20 | |
2360 bc 16,0,Load_xts_enc_key | |
2361 | |
2362 lvx 26,3,6 | |
2363 vperm 24,31,30,7 | |
2364 lvx 27,26,6 | |
2365 stvx 24,0,7 | |
2366 vperm 25,26,31,7 | |
2367 lvx 28,27,6 | |
2368 stvx 25,3,7 | |
2369 addi 7,1,64+15 | |
2370 vperm 26,27,26,7 | |
2371 lvx 29,28,6 | |
2372 vperm 27,28,27,7 | |
2373 lvx 30,29,6 | |
2374 vperm 28,29,28,7 | |
2375 lvx 31,30,6 | |
2376 vperm 29,30,29,7 | |
2377 lvx 22,31,6 | |
2378 vperm 30,31,30,7 | |
2379 lvx 24,0,7 | |
2380 vperm 31,22,31,7 | |
2381 lvx 25,3,7 | |
2382 | |
2383 vperm 0,2,4,5 | |
2384 subi 10,10,31 | |
2385 vxor 17,8,23 | |
2386 vsrab 11,8,9 | |
2387 vaddubm 8,8,8 | |
2388 vsldoi 11,11,11,15 | |
2389 vand 11,11,10 | |
2390 vxor 7,0,17 | |
2391 vxor 8,8,11 | |
2392 | |
2393 .long 0x7C235699 | |
2394 vxor 18,8,23 | |
2395 vsrab 11,8,9 | |
2396 vaddubm 8,8,8 | |
2397 vsldoi 11,11,11,15 | |
2398 vperm 1,1,1,6 | |
2399 vand 11,11,10 | |
2400 vxor 12,1,18 | |
2401 vxor 8,8,11 | |
2402 | |
2403 .long 0x7C5A5699 | |
2404 andi. 31,5,15 | |
2405 vxor 19,8,23 | |
2406 vsrab 11,8,9 | |
2407 vaddubm 8,8,8 | |
2408 vsldoi 11,11,11,15 | |
2409 vperm 2,2,2,6 | |
2410 vand 11,11,10 | |
2411 vxor 13,2,19 | |
2412 vxor 8,8,11 | |
2413 | |
2414 .long 0x7C7B5699 | |
2415 sub 5,5,31 | |
2416 vxor 20,8,23 | |
2417 vsrab 11,8,9 | |
2418 vaddubm 8,8,8 | |
2419 vsldoi 11,11,11,15 | |
2420 vperm 3,3,3,6 | |
2421 vand 11,11,10 | |
2422 vxor 14,3,20 | |
2423 vxor 8,8,11 | |
2424 | |
2425 .long 0x7C9C5699 | |
2426 subi 5,5,0x60 | |
2427 vxor 21,8,23 | |
2428 vsrab 11,8,9 | |
2429 vaddubm 8,8,8 | |
2430 vsldoi 11,11,11,15 | |
2431 vperm 4,4,4,6 | |
2432 vand 11,11,10 | |
2433 vxor 15,4,21 | |
2434 vxor 8,8,11 | |
2435 | |
2436 .long 0x7CBD5699 | |
2437 addi 10,10,0x60 | |
2438 vxor 22,8,23 | |
2439 vsrab 11,8,9 | |
2440 vaddubm 8,8,8 | |
2441 vsldoi 11,11,11,15 | |
2442 vperm 5,5,5,6 | |
2443 vand 11,11,10 | |
2444 vxor 16,5,22 | |
2445 vxor 8,8,11 | |
2446 | |
2447 vxor 31,31,23 | |
2448 mtctr 9 | |
2449 b Loop_xts_enc6x | |
2450 | |
2451 .align 5 | |
2452 Loop_xts_enc6x: | |
2453 .long 0x10E7C508 | |
2454 .long 0x118CC508 | |
2455 .long 0x11ADC508 | |
2456 .long 0x11CEC508 | |
2457 .long 0x11EFC508 | |
2458 .long 0x1210C508 | |
2459 lvx 24,26,7 | |
2460 addi 7,7,0x20 | |
2461 | |
2462 .long 0x10E7CD08 | |
2463 .long 0x118CCD08 | |
2464 .long 0x11ADCD08 | |
2465 .long 0x11CECD08 | |
2466 .long 0x11EFCD08 | |
2467 .long 0x1210CD08 | |
2468 lvx 25,3,7 | |
2469 bc 16,0,Loop_xts_enc6x | |
2470 | |
2471 subic 5,5,96 | |
2472 vxor 0,17,31 | |
2473 .long 0x10E7C508 | |
2474 .long 0x118CC508 | |
2475 vsrab 11,8,9 | |
2476 vxor 17,8,23 | |
2477 vaddubm 8,8,8 | |
2478 .long 0x11ADC508 | |
2479 .long 0x11CEC508 | |
2480 vsldoi 11,11,11,15 | |
2481 .long 0x11EFC508 | |
2482 .long 0x1210C508 | |
2483 | |
2484 subfe. 0,0,0 | |
2485 vand 11,11,10 | |
2486 .long 0x10E7CD08 | |
2487 .long 0x118CCD08 | |
2488 vxor 8,8,11 | |
2489 .long 0x11ADCD08 | |
2490 .long 0x11CECD08 | |
2491 vxor 1,18,31 | |
2492 vsrab 11,8,9 | |
2493 vxor 18,8,23 | |
2494 .long 0x11EFCD08 | |
2495 .long 0x1210CD08 | |
2496 | |
2497 and 0,0,5 | |
2498 vaddubm 8,8,8 | |
2499 vsldoi 11,11,11,15 | |
2500 .long 0x10E7D508 | |
2501 .long 0x118CD508 | |
2502 vand 11,11,10 | |
2503 .long 0x11ADD508 | |
2504 .long 0x11CED508 | |
2505 vxor 8,8,11 | |
2506 .long 0x11EFD508 | |
2507 .long 0x1210D508 | |
2508 | |
2509 add 10,10,0 | |
2510 | |
2511 | |
2512 | |
2513 vxor 2,19,31 | |
2514 vsrab 11,8,9 | |
2515 vxor 19,8,23 | |
2516 vaddubm 8,8,8 | |
2517 .long 0x10E7DD08 | |
2518 .long 0x118CDD08 | |
2519 vsldoi 11,11,11,15 | |
2520 .long 0x11ADDD08 | |
2521 .long 0x11CEDD08 | |
2522 vand 11,11,10 | |
2523 .long 0x11EFDD08 | |
2524 .long 0x1210DD08 | |
2525 | |
2526 addi 7,1,64+15 | |
2527 vxor 8,8,11 | |
2528 .long 0x10E7E508 | |
2529 .long 0x118CE508 | |
2530 vxor 3,20,31 | |
2531 vsrab 11,8,9 | |
2532 vxor 20,8,23 | |
2533 .long 0x11ADE508 | |
2534 .long 0x11CEE508 | |
2535 vaddubm 8,8,8 | |
2536 vsldoi 11,11,11,15 | |
2537 .long 0x11EFE508 | |
2538 .long 0x1210E508 | |
2539 lvx 24,0,7 | |
2540 vand 11,11,10 | |
2541 | |
2542 .long 0x10E7ED08 | |
2543 .long 0x118CED08 | |
2544 vxor 8,8,11 | |
2545 .long 0x11ADED08 | |
2546 .long 0x11CEED08 | |
2547 vxor 4,21,31 | |
2548 vsrab 11,8,9 | |
2549 vxor 21,8,23 | |
2550 .long 0x11EFED08 | |
2551 .long 0x1210ED08 | |
2552 lvx 25,3,7 | |
2553 vaddubm 8,8,8 | |
2554 vsldoi 11,11,11,15 | |
2555 | |
2556 .long 0x10E7F508 | |
2557 .long 0x118CF508 | |
2558 vand 11,11,10 | |
2559 .long 0x11ADF508 | |
2560 .long 0x11CEF508 | |
2561 vxor 8,8,11 | |
2562 .long 0x11EFF508 | |
2563 .long 0x1210F508 | |
2564 vxor 5,22,31 | |
2565 vsrab 11,8,9 | |
2566 vxor 22,8,23 | |
2567 | |
2568 .long 0x10E70509 | |
2569 .long 0x7C005699 | |
2570 vaddubm 8,8,8 | |
2571 vsldoi 11,11,11,15 | |
2572 .long 0x118C0D09 | |
2573 .long 0x7C235699 | |
2574 .long 0x11AD1509 | |
2575 vperm 0,0,0,6 | |
2576 .long 0x7C5A5699 | |
2577 vand 11,11,10 | |
2578 .long 0x11CE1D09 | |
2579 vperm 1,1,1,6 | |
2580 .long 0x7C7B5699 | |
2581 .long 0x11EF2509 | |
2582 vperm 2,2,2,6 | |
2583 .long 0x7C9C5699 | |
2584 vxor 8,8,11 | |
2585 .long 0x11702D09 | |
2586 | |
2587 vperm 3,3,3,6 | |
2588 .long 0x7CBD5699 | |
2589 addi 10,10,0x60 | |
2590 vperm 4,4,4,6 | |
2591 vperm 5,5,5,6 | |
2592 | |
2593 vperm 7,7,7,6 | |
2594 vperm 12,12,12,6 | |
2595 .long 0x7CE02799 | |
2596 vxor 7,0,17 | |
2597 vperm 13,13,13,6 | |
2598 .long 0x7D832799 | |
2599 vxor 12,1,18 | |
2600 vperm 14,14,14,6 | |
2601 .long 0x7DBA2799 | |
2602 vxor 13,2,19 | |
2603 vperm 15,15,15,6 | |
2604 .long 0x7DDB2799 | |
2605 vxor 14,3,20 | |
2606 vperm 16,11,11,6 | |
2607 .long 0x7DFC2799 | |
2608 vxor 15,4,21 | |
2609 .long 0x7E1D2799 | |
2610 | |
2611 vxor 16,5,22 | |
2612 addi 4,4,0x60 | |
2613 | |
2614 mtctr 9 | |
2615 beq Loop_xts_enc6x | |
2616 | |
2617 addic. 5,5,0x60 | |
2618 beq Lxts_enc6x_zero | |
2619 cmpwi 5,0x20 | |
2620 blt Lxts_enc6x_one | |
2621 nop | |
2622 beq Lxts_enc6x_two | |
2623 cmpwi 5,0x40 | |
2624 blt Lxts_enc6x_three | |
2625 nop | |
2626 beq Lxts_enc6x_four | |
2627 | |
2628 Lxts_enc6x_five: | |
2629 vxor 7,1,17 | |
2630 vxor 12,2,18 | |
2631 vxor 13,3,19 | |
2632 vxor 14,4,20 | |
2633 vxor 15,5,21 | |
2634 | |
2635 bl _aesp8_xts_enc5x | |
2636 | |
2637 vperm 7,7,7,6 | |
2638 vor 17,22,22 | |
2639 vperm 12,12,12,6 | |
2640 .long 0x7CE02799 | |
2641 vperm 13,13,13,6 | |
2642 .long 0x7D832799 | |
2643 vperm 14,14,14,6 | |
2644 .long 0x7DBA2799 | |
2645 vxor 11,15,22 | |
2646 vperm 15,15,15,6 | |
2647 .long 0x7DDB2799 | |
2648 .long 0x7DFC2799 | |
2649 addi 4,4,0x50 | |
2650 bne Lxts_enc6x_steal | |
2651 b Lxts_enc6x_done | |
2652 | |
2653 .align 4 | |
2654 Lxts_enc6x_four: | |
2655 vxor 7,2,17 | |
2656 vxor 12,3,18 | |
2657 vxor 13,4,19 | |
2658 vxor 14,5,20 | |
2659 vxor 15,15,15 | |
2660 | |
2661 bl _aesp8_xts_enc5x | |
2662 | |
2663 vperm 7,7,7,6 | |
2664 vor 17,21,21 | |
2665 vperm 12,12,12,6 | |
2666 .long 0x7CE02799 | |
2667 vperm 13,13,13,6 | |
2668 .long 0x7D832799 | |
2669 vxor 11,14,21 | |
2670 vperm 14,14,14,6 | |
2671 .long 0x7DBA2799 | |
2672 .long 0x7DDB2799 | |
2673 addi 4,4,0x40 | |
2674 bne Lxts_enc6x_steal | |
2675 b Lxts_enc6x_done | |
2676 | |
2677 .align 4 | |
2678 Lxts_enc6x_three: | |
2679 vxor 7,3,17 | |
2680 vxor 12,4,18 | |
2681 vxor 13,5,19 | |
2682 vxor 14,14,14 | |
2683 vxor 15,15,15 | |
2684 | |
2685 bl _aesp8_xts_enc5x | |
2686 | |
2687 vperm 7,7,7,6 | |
2688 vor 17,20,20 | |
2689 vperm 12,12,12,6 | |
2690 .long 0x7CE02799 | |
2691 vxor 11,13,20 | |
2692 vperm 13,13,13,6 | |
2693 .long 0x7D832799 | |
2694 .long 0x7DBA2799 | |
2695 addi 4,4,0x30 | |
2696 bne Lxts_enc6x_steal | |
2697 b Lxts_enc6x_done | |
2698 | |
2699 .align 4 | |
2700 Lxts_enc6x_two: | |
2701 vxor 7,4,17 | |
2702 vxor 12,5,18 | |
2703 vxor 13,13,13 | |
2704 vxor 14,14,14 | |
2705 vxor 15,15,15 | |
2706 | |
2707 bl _aesp8_xts_enc5x | |
2708 | |
2709 vperm 7,7,7,6 | |
2710 vor 17,19,19 | |
2711 vxor 11,12,19 | |
2712 vperm 12,12,12,6 | |
2713 .long 0x7CE02799 | |
2714 .long 0x7D832799 | |
2715 addi 4,4,0x20 | |
2716 bne Lxts_enc6x_steal | |
2717 b Lxts_enc6x_done | |
2718 | |
2719 .align 4 | |
2720 Lxts_enc6x_one: | |
2721 vxor 7,5,17 | |
2722 nop | |
2723 Loop_xts_enc1x: | |
2724 .long 0x10E7C508 | |
2725 lvx 24,26,7 | |
2726 addi 7,7,0x20 | |
2727 | |
2728 .long 0x10E7CD08 | |
2729 lvx 25,3,7 | |
2730 bc 16,0,Loop_xts_enc1x | |
2731 | |
2732 add 10,10,31 | |
2733 cmpwi 31,0 | |
2734 .long 0x10E7C508 | |
2735 | |
2736 subi 10,10,16 | |
2737 .long 0x10E7CD08 | |
2738 | |
2739 lvsr 5,0,31 | |
2740 .long 0x10E7D508 | |
2741 | |
2742 .long 0x7C005699 | |
2743 .long 0x10E7DD08 | |
2744 | |
2745 addi 7,1,64+15 | |
2746 .long 0x10E7E508 | |
2747 lvx 24,0,7 | |
2748 | |
2749 .long 0x10E7ED08 | |
2750 lvx 25,3,7 | |
2751 vxor 17,17,31 | |
2752 | |
2753 vperm 0,0,0,6 | |
2754 .long 0x10E7F508 | |
2755 | |
2756 vperm 0,0,0,5 | |
2757 .long 0x10E78D09 | |
2758 | |
2759 vor 17,18,18 | |
2760 vxor 11,7,18 | |
2761 vperm 7,7,7,6 | |
2762 .long 0x7CE02799 | |
2763 addi 4,4,0x10 | |
2764 bne Lxts_enc6x_steal | |
2765 b Lxts_enc6x_done | |
2766 | |
2767 .align 4 | |
2768 Lxts_enc6x_zero: | |
2769 cmpwi 31,0 | |
2770 beq Lxts_enc6x_done | |
2771 | |
2772 add 10,10,31 | |
2773 subi 10,10,16 | |
2774 .long 0x7C005699 | |
2775 lvsr 5,0,31 | |
2776 vperm 0,0,0,6 | |
2777 vperm 0,0,0,5 | |
2778 vxor 11,11,17 | |
2779 Lxts_enc6x_steal: | |
2780 vxor 0,0,17 | |
2781 vxor 7,7,7 | |
2782 vspltisb 12,-1 | |
2783 vperm 7,7,12,5 | |
2784 vsel 7,0,11,7 | |
2785 | |
2786 subi 30,4,17 | |
2787 subi 4,4,16 | |
2788 mtctr 31 | |
2789 Loop_xts_enc6x_steal: | |
2790 lbzu 0,1(30) | |
2791 stb 0,16(30) | |
2792 bc 16,0,Loop_xts_enc6x_steal | |
2793 | |
2794 li 31,0 | |
2795 mtctr 9 | |
2796 b Loop_xts_enc1x | |
2797 | |
2798 .align 4 | |
2799 Lxts_enc6x_done: | |
2800 cmpldi 8,0 | |
2801 beq Lxts_enc6x_ret | |
2802 | |
2803 vxor 8,17,23 | |
2804 vperm 8,8,8,6 | |
2805 .long 0x7D004799 | |
2806 | |
2807 Lxts_enc6x_ret: | |
2808 mtlr 11 | |
2809 li 10,79 | |
2810 li 11,95 | |
2811 stvx 9,10,1 | |
2812 addi 10,10,32 | |
2813 stvx 9,11,1 | |
2814 addi 11,11,32 | |
2815 stvx 9,10,1 | |
2816 addi 10,10,32 | |
2817 stvx 9,11,1 | |
2818 addi 11,11,32 | |
2819 stvx 9,10,1 | |
2820 addi 10,10,32 | |
2821 stvx 9,11,1 | |
2822 addi 11,11,32 | |
2823 stvx 9,10,1 | |
2824 addi 10,10,32 | |
2825 stvx 9,11,1 | |
2826 addi 11,11,32 | |
2827 | |
2828 mtspr 256,12 | |
2829 lvx 20,10,1 | |
2830 addi 10,10,32 | |
2831 lvx 21,11,1 | |
2832 addi 11,11,32 | |
2833 lvx 22,10,1 | |
2834 addi 10,10,32 | |
2835 lvx 23,11,1 | |
2836 addi 11,11,32 | |
2837 lvx 24,10,1 | |
2838 addi 10,10,32 | |
2839 lvx 25,11,1 | |
2840 addi 11,11,32 | |
2841 lvx 26,10,1 | |
2842 addi 10,10,32 | |
2843 lvx 27,11,1 | |
2844 addi 11,11,32 | |
2845 lvx 28,10,1 | |
2846 addi 10,10,32 | |
2847 lvx 29,11,1 | |
2848 addi 11,11,32 | |
2849 lvx 30,10,1 | |
2850 lvx 31,11,1 | |
2851 ld 26,400(1) | |
2852 ld 27,408(1) | |
2853 ld 28,416(1) | |
2854 ld 29,424(1) | |
2855 ld 30,432(1) | |
2856 ld 31,440(1) | |
2857 addi 1,1,448 | |
2858 blr | |
2859 .long 0 | |
2860 .byte 0,12,0x04,1,0x80,6,6,0 | |
2861 .long 0 | |
2862 | |
2863 .align 5 | |
2864 _aesp8_xts_enc5x: | |
2865 .long 0x10E7C508 | |
2866 .long 0x118CC508 | |
2867 .long 0x11ADC508 | |
2868 .long 0x11CEC508 | |
2869 .long 0x11EFC508 | |
2870 lvx 24,26,7 | |
2871 addi 7,7,0x20 | |
2872 | |
2873 .long 0x10E7CD08 | |
2874 .long 0x118CCD08 | |
2875 .long 0x11ADCD08 | |
2876 .long 0x11CECD08 | |
2877 .long 0x11EFCD08 | |
2878 lvx 25,3,7 | |
2879 bc 16,0,_aesp8_xts_enc5x | |
2880 | |
2881 add 10,10,31 | |
2882 cmpwi 31,0 | |
2883 .long 0x10E7C508 | |
2884 .long 0x118CC508 | |
2885 .long 0x11ADC508 | |
2886 .long 0x11CEC508 | |
2887 .long 0x11EFC508 | |
2888 | |
2889 subi 10,10,16 | |
2890 .long 0x10E7CD08 | |
2891 .long 0x118CCD08 | |
2892 .long 0x11ADCD08 | |
2893 .long 0x11CECD08 | |
2894 .long 0x11EFCD08 | |
2895 vxor 17,17,31 | |
2896 | |
2897 .long 0x10E7D508 | |
2898 lvsr 5,0,31 | |
2899 .long 0x118CD508 | |
2900 .long 0x11ADD508 | |
2901 .long 0x11CED508 | |
2902 .long 0x11EFD508 | |
2903 vxor 1,18,31 | |
2904 | |
2905 .long 0x10E7DD08 | |
2906 .long 0x7C005699 | |
2907 .long 0x118CDD08 | |
2908 .long 0x11ADDD08 | |
2909 .long 0x11CEDD08 | |
2910 .long 0x11EFDD08 | |
2911 vxor 2,19,31 | |
2912 | |
2913 addi 7,1,64+15 | |
2914 .long 0x10E7E508 | |
2915 .long 0x118CE508 | |
2916 .long 0x11ADE508 | |
2917 .long 0x11CEE508 | |
2918 .long 0x11EFE508 | |
2919 lvx 24,0,7 | |
2920 vxor 3,20,31 | |
2921 | |
2922 .long 0x10E7ED08 | |
2923 vperm 0,0,0,6 | |
2924 .long 0x118CED08 | |
2925 .long 0x11ADED08 | |
2926 .long 0x11CEED08 | |
2927 .long 0x11EFED08 | |
2928 lvx 25,3,7 | |
2929 vxor 4,21,31 | |
2930 | |
2931 .long 0x10E7F508 | |
2932 vperm 0,0,0,5 | |
2933 .long 0x118CF508 | |
2934 .long 0x11ADF508 | |
2935 .long 0x11CEF508 | |
2936 .long 0x11EFF508 | |
2937 | |
2938 .long 0x10E78D09 | |
2939 .long 0x118C0D09 | |
2940 .long 0x11AD1509 | |
2941 .long 0x11CE1D09 | |
2942 .long 0x11EF2509 | |
2943 blr | |
2944 .long 0 | |
2945 .byte 0,12,0x14,0,0,0,0,0 | |
2946 | |
2947 .align 5 | |
2948 _aesp8_xts_decrypt6x: | |
2949 stdu 1,-448(1) | |
2950 mflr 11 | |
2951 li 7,207 | |
2952 li 3,223 | |
2953 std 11,464(1) | |
2954 stvx 20,7,1 | |
2955 addi 7,7,32 | |
2956 stvx 21,3,1 | |
2957 addi 3,3,32 | |
2958 stvx 22,7,1 | |
2959 addi 7,7,32 | |
2960 stvx 23,3,1 | |
2961 addi 3,3,32 | |
2962 stvx 24,7,1 | |
2963 addi 7,7,32 | |
2964 stvx 25,3,1 | |
2965 addi 3,3,32 | |
2966 stvx 26,7,1 | |
2967 addi 7,7,32 | |
2968 stvx 27,3,1 | |
2969 addi 3,3,32 | |
2970 stvx 28,7,1 | |
2971 addi 7,7,32 | |
2972 stvx 29,3,1 | |
2973 addi 3,3,32 | |
2974 stvx 30,7,1 | |
2975 stvx 31,3,1 | |
2976 li 0,-1 | |
2977 stw 12,396(1) | |
2978 li 3,0x10 | |
2979 std 26,400(1) | |
2980 li 26,0x20 | |
2981 std 27,408(1) | |
2982 li 27,0x30 | |
2983 std 28,416(1) | |
2984 li 28,0x40 | |
2985 std 29,424(1) | |
2986 li 29,0x50 | |
2987 std 30,432(1) | |
2988 li 30,0x60 | |
2989 std 31,440(1) | |
2990 li 31,0x70 | |
2991 mtspr 256,0 | |
2992 | |
2993 subi 9,9,3 | |
2994 | |
2995 lvx 23,0,6 | |
2996 lvx 30,3,6 | |
2997 addi 6,6,0x20 | |
2998 lvx 31,0,6 | |
2999 vperm 23,30,23,7 | |
3000 addi 7,1,64+15 | |
3001 mtctr 9 | |
3002 | |
3003 Load_xts_dec_key: | |
3004 vperm 24,31,30,7 | |
3005 lvx 30,3,6 | |
3006 addi 6,6,0x20 | |
3007 stvx 24,0,7 | |
3008 vperm 25,30,31,7 | |
3009 lvx 31,0,6 | |
3010 stvx 25,3,7 | |
3011 addi 7,7,0x20 | |
3012 bc 16,0,Load_xts_dec_key | |
3013 | |
3014 lvx 26,3,6 | |
3015 vperm 24,31,30,7 | |
3016 lvx 27,26,6 | |
3017 stvx 24,0,7 | |
3018 vperm 25,26,31,7 | |
3019 lvx 28,27,6 | |
3020 stvx 25,3,7 | |
3021 addi 7,1,64+15 | |
3022 vperm 26,27,26,7 | |
3023 lvx 29,28,6 | |
3024 vperm 27,28,27,7 | |
3025 lvx 30,29,6 | |
3026 vperm 28,29,28,7 | |
3027 lvx 31,30,6 | |
3028 vperm 29,30,29,7 | |
3029 lvx 22,31,6 | |
3030 vperm 30,31,30,7 | |
3031 lvx 24,0,7 | |
3032 vperm 31,22,31,7 | |
3033 lvx 25,3,7 | |
3034 | |
3035 vperm 0,2,4,5 | |
3036 subi 10,10,31 | |
3037 vxor 17,8,23 | |
3038 vsrab 11,8,9 | |
3039 vaddubm 8,8,8 | |
3040 vsldoi 11,11,11,15 | |
3041 vand 11,11,10 | |
3042 vxor 7,0,17 | |
3043 vxor 8,8,11 | |
3044 | |
3045 .long 0x7C235699 | |
3046 vxor 18,8,23 | |
3047 vsrab 11,8,9 | |
3048 vaddubm 8,8,8 | |
3049 vsldoi 11,11,11,15 | |
3050 vperm 1,1,1,6 | |
3051 vand 11,11,10 | |
3052 vxor 12,1,18 | |
3053 vxor 8,8,11 | |
3054 | |
3055 .long 0x7C5A5699 | |
3056 andi. 31,5,15 | |
3057 vxor 19,8,23 | |
3058 vsrab 11,8,9 | |
3059 vaddubm 8,8,8 | |
3060 vsldoi 11,11,11,15 | |
3061 vperm 2,2,2,6 | |
3062 vand 11,11,10 | |
3063 vxor 13,2,19 | |
3064 vxor 8,8,11 | |
3065 | |
3066 .long 0x7C7B5699 | |
3067 sub 5,5,31 | |
3068 vxor 20,8,23 | |
3069 vsrab 11,8,9 | |
3070 vaddubm 8,8,8 | |
3071 vsldoi 11,11,11,15 | |
3072 vperm 3,3,3,6 | |
3073 vand 11,11,10 | |
3074 vxor 14,3,20 | |
3075 vxor 8,8,11 | |
3076 | |
3077 .long 0x7C9C5699 | |
3078 subi 5,5,0x60 | |
3079 vxor 21,8,23 | |
3080 vsrab 11,8,9 | |
3081 vaddubm 8,8,8 | |
3082 vsldoi 11,11,11,15 | |
3083 vperm 4,4,4,6 | |
3084 vand 11,11,10 | |
3085 vxor 15,4,21 | |
3086 vxor 8,8,11 | |
3087 | |
3088 .long 0x7CBD5699 | |
3089 addi 10,10,0x60 | |
3090 vxor 22,8,23 | |
3091 vsrab 11,8,9 | |
3092 vaddubm 8,8,8 | |
3093 vsldoi 11,11,11,15 | |
3094 vperm 5,5,5,6 | |
3095 vand 11,11,10 | |
3096 vxor 16,5,22 | |
3097 vxor 8,8,11 | |
3098 | |
3099 vxor 31,31,23 | |
3100 mtctr 9 | |
3101 b Loop_xts_dec6x | |
3102 | |
3103 .align 5 | |
3104 Loop_xts_dec6x: | |
3105 .long 0x10E7C548 | |
3106 .long 0x118CC548 | |
3107 .long 0x11ADC548 | |
3108 .long 0x11CEC548 | |
3109 .long 0x11EFC548 | |
3110 .long 0x1210C548 | |
3111 lvx 24,26,7 | |
3112 addi 7,7,0x20 | |
3113 | |
3114 .long 0x10E7CD48 | |
3115 .long 0x118CCD48 | |
3116 .long 0x11ADCD48 | |
3117 .long 0x11CECD48 | |
3118 .long 0x11EFCD48 | |
3119 .long 0x1210CD48 | |
3120 lvx 25,3,7 | |
3121 bc 16,0,Loop_xts_dec6x | |
3122 | |
3123 subic 5,5,96 | |
3124 vxor 0,17,31 | |
3125 .long 0x10E7C548 | |
3126 .long 0x118CC548 | |
3127 vsrab 11,8,9 | |
3128 vxor 17,8,23 | |
3129 vaddubm 8,8,8 | |
3130 .long 0x11ADC548 | |
3131 .long 0x11CEC548 | |
3132 vsldoi 11,11,11,15 | |
3133 .long 0x11EFC548 | |
3134 .long 0x1210C548 | |
3135 | |
3136 subfe. 0,0,0 | |
3137 vand 11,11,10 | |
3138 .long 0x10E7CD48 | |
3139 .long 0x118CCD48 | |
3140 vxor 8,8,11 | |
3141 .long 0x11ADCD48 | |
3142 .long 0x11CECD48 | |
3143 vxor 1,18,31 | |
3144 vsrab 11,8,9 | |
3145 vxor 18,8,23 | |
3146 .long 0x11EFCD48 | |
3147 .long 0x1210CD48 | |
3148 | |
3149 and 0,0,5 | |
3150 vaddubm 8,8,8 | |
3151 vsldoi 11,11,11,15 | |
3152 .long 0x10E7D548 | |
3153 .long 0x118CD548 | |
3154 vand 11,11,10 | |
3155 .long 0x11ADD548 | |
3156 .long 0x11CED548 | |
3157 vxor 8,8,11 | |
3158 .long 0x11EFD548 | |
3159 .long 0x1210D548 | |
3160 | |
3161 add 10,10,0 | |
3162 | |
3163 | |
3164 | |
3165 vxor 2,19,31 | |
3166 vsrab 11,8,9 | |
3167 vxor 19,8,23 | |
3168 vaddubm 8,8,8 | |
3169 .long 0x10E7DD48 | |
3170 .long 0x118CDD48 | |
3171 vsldoi 11,11,11,15 | |
3172 .long 0x11ADDD48 | |
3173 .long 0x11CEDD48 | |
3174 vand 11,11,10 | |
3175 .long 0x11EFDD48 | |
3176 .long 0x1210DD48 | |
3177 | |
3178 addi 7,1,64+15 | |
3179 vxor 8,8,11 | |
3180 .long 0x10E7E548 | |
3181 .long 0x118CE548 | |
3182 vxor 3,20,31 | |
3183 vsrab 11,8,9 | |
3184 vxor 20,8,23 | |
3185 .long 0x11ADE548 | |
3186 .long 0x11CEE548 | |
3187 vaddubm 8,8,8 | |
3188 vsldoi 11,11,11,15 | |
3189 .long 0x11EFE548 | |
3190 .long 0x1210E548 | |
3191 lvx 24,0,7 | |
3192 vand 11,11,10 | |
3193 | |
3194 .long 0x10E7ED48 | |
3195 .long 0x118CED48 | |
3196 vxor 8,8,11 | |
3197 .long 0x11ADED48 | |
3198 .long 0x11CEED48 | |
3199 vxor 4,21,31 | |
3200 vsrab 11,8,9 | |
3201 vxor 21,8,23 | |
3202 .long 0x11EFED48 | |
3203 .long 0x1210ED48 | |
3204 lvx 25,3,7 | |
3205 vaddubm 8,8,8 | |
3206 vsldoi 11,11,11,15 | |
3207 | |
3208 .long 0x10E7F548 | |
3209 .long 0x118CF548 | |
3210 vand 11,11,10 | |
3211 .long 0x11ADF548 | |
3212 .long 0x11CEF548 | |
3213 vxor 8,8,11 | |
3214 .long 0x11EFF548 | |
3215 .long 0x1210F548 | |
3216 vxor 5,22,31 | |
3217 vsrab 11,8,9 | |
3218 vxor 22,8,23 | |
3219 | |
3220 .long 0x10E70549 | |
3221 .long 0x7C005699 | |
3222 vaddubm 8,8,8 | |
3223 vsldoi 11,11,11,15 | |
3224 .long 0x118C0D49 | |
3225 .long 0x7C235699 | |
3226 .long 0x11AD1549 | |
3227 vperm 0,0,0,6 | |
3228 .long 0x7C5A5699 | |
3229 vand 11,11,10 | |
3230 .long 0x11CE1D49 | |
3231 vperm 1,1,1,6 | |
3232 .long 0x7C7B5699 | |
3233 .long 0x11EF2549 | |
3234 vperm 2,2,2,6 | |
3235 .long 0x7C9C5699 | |
3236 vxor 8,8,11 | |
3237 .long 0x12102D49 | |
3238 vperm 3,3,3,6 | |
3239 .long 0x7CBD5699 | |
3240 addi 10,10,0x60 | |
3241 vperm 4,4,4,6 | |
3242 vperm 5,5,5,6 | |
3243 | |
3244 vperm 7,7,7,6 | |
3245 vperm 12,12,12,6 | |
3246 .long 0x7CE02799 | |
3247 vxor 7,0,17 | |
3248 vperm 13,13,13,6 | |
3249 .long 0x7D832799 | |
3250 vxor 12,1,18 | |
3251 vperm 14,14,14,6 | |
3252 .long 0x7DBA2799 | |
3253 vxor 13,2,19 | |
3254 vperm 15,15,15,6 | |
3255 .long 0x7DDB2799 | |
3256 vxor 14,3,20 | |
3257 vperm 16,16,16,6 | |
3258 .long 0x7DFC2799 | |
3259 vxor 15,4,21 | |
3260 .long 0x7E1D2799 | |
3261 vxor 16,5,22 | |
3262 addi 4,4,0x60 | |
3263 | |
3264 mtctr 9 | |
3265 beq Loop_xts_dec6x | |
3266 | |
3267 addic. 5,5,0x60 | |
3268 beq Lxts_dec6x_zero | |
3269 cmpwi 5,0x20 | |
3270 blt Lxts_dec6x_one | |
3271 nop | |
3272 beq Lxts_dec6x_two | |
3273 cmpwi 5,0x40 | |
3274 blt Lxts_dec6x_three | |
3275 nop | |
3276 beq Lxts_dec6x_four | |
3277 | |
3278 Lxts_dec6x_five: | |
3279 vxor 7,1,17 | |
3280 vxor 12,2,18 | |
3281 vxor 13,3,19 | |
3282 vxor 14,4,20 | |
3283 vxor 15,5,21 | |
3284 | |
3285 bl _aesp8_xts_dec5x | |
3286 | |
3287 vperm 7,7,7,6 | |
3288 vor 17,22,22 | |
3289 vxor 18,8,23 | |
3290 vperm 12,12,12,6 | |
3291 .long 0x7CE02799 | |
3292 vxor 7,0,18 | |
3293 vperm 13,13,13,6 | |
3294 .long 0x7D832799 | |
3295 vperm 14,14,14,6 | |
3296 .long 0x7DBA2799 | |
3297 vperm 15,15,15,6 | |
3298 .long 0x7DDB2799 | |
3299 .long 0x7DFC2799 | |
3300 addi 4,4,0x50 | |
3301 bne Lxts_dec6x_steal | |
3302 b Lxts_dec6x_done | |
3303 | |
3304 .align 4 | |
3305 Lxts_dec6x_four: | |
3306 vxor 7,2,17 | |
3307 vxor 12,3,18 | |
3308 vxor 13,4,19 | |
3309 vxor 14,5,20 | |
3310 vxor 15,15,15 | |
3311 | |
3312 bl _aesp8_xts_dec5x | |
3313 | |
3314 vperm 7,7,7,6 | |
3315 vor 17,21,21 | |
3316 vor 18,22,22 | |
3317 vperm 12,12,12,6 | |
3318 .long 0x7CE02799 | |
3319 vxor 7,0,22 | |
3320 vperm 13,13,13,6 | |
3321 .long 0x7D832799 | |
3322 vperm 14,14,14,6 | |
3323 .long 0x7DBA2799 | |
3324 .long 0x7DDB2799 | |
3325 addi 4,4,0x40 | |
3326 bne Lxts_dec6x_steal | |
3327 b Lxts_dec6x_done | |
3328 | |
3329 .align 4 | |
3330 Lxts_dec6x_three: | |
3331 vxor 7,3,17 | |
3332 vxor 12,4,18 | |
3333 vxor 13,5,19 | |
3334 vxor 14,14,14 | |
3335 vxor 15,15,15 | |
3336 | |
3337 bl _aesp8_xts_dec5x | |
3338 | |
3339 vperm 7,7,7,6 | |
3340 vor 17,20,20 | |
3341 vor 18,21,21 | |
3342 vperm 12,12,12,6 | |
3343 .long 0x7CE02799 | |
3344 vxor 7,0,21 | |
3345 vperm 13,13,13,6 | |
3346 .long 0x7D832799 | |
3347 .long 0x7DBA2799 | |
3348 addi 4,4,0x30 | |
3349 bne Lxts_dec6x_steal | |
3350 b Lxts_dec6x_done | |
3351 | |
3352 .align 4 | |
3353 Lxts_dec6x_two: | |
3354 vxor 7,4,17 | |
3355 vxor 12,5,18 | |
3356 vxor 13,13,13 | |
3357 vxor 14,14,14 | |
3358 vxor 15,15,15 | |
3359 | |
3360 bl _aesp8_xts_dec5x | |
3361 | |
3362 vperm 7,7,7,6 | |
3363 vor 17,19,19 | |
3364 vor 18,20,20 | |
3365 vperm 12,12,12,6 | |
3366 .long 0x7CE02799 | |
3367 vxor 7,0,20 | |
3368 .long 0x7D832799 | |
3369 addi 4,4,0x20 | |
3370 bne Lxts_dec6x_steal | |
3371 b Lxts_dec6x_done | |
3372 | |
3373 .align 4 | |
3374 Lxts_dec6x_one: | |
3375 vxor 7,5,17 | |
3376 nop | |
3377 Loop_xts_dec1x: | |
3378 .long 0x10E7C548 | |
3379 lvx 24,26,7 | |
3380 addi 7,7,0x20 | |
3381 | |
3382 .long 0x10E7CD48 | |
3383 lvx 25,3,7 | |
3384 bc 16,0,Loop_xts_dec1x | |
3385 | |
3386 subi 0,31,1 | |
3387 .long 0x10E7C548 | |
3388 | |
3389 andi. 0,0,16 | |
3390 cmpwi 31,0 | |
3391 .long 0x10E7CD48 | |
3392 | |
3393 sub 10,10,0 | |
3394 .long 0x10E7D548 | |
3395 | |
3396 .long 0x7C005699 | |
3397 .long 0x10E7DD48 | |
3398 | |
3399 addi 7,1,64+15 | |
3400 .long 0x10E7E548 | |
3401 lvx 24,0,7 | |
3402 | |
3403 .long 0x10E7ED48 | |
3404 lvx 25,3,7 | |
3405 vxor 17,17,31 | |
3406 | |
3407 vperm 0,0,0,6 | |
3408 .long 0x10E7F548 | |
3409 | |
3410 mtctr 9 | |
3411 .long 0x10E78D49 | |
3412 | |
3413 vor 17,18,18 | |
3414 vor 18,19,19 | |
3415 vperm 7,7,7,6 | |
3416 .long 0x7CE02799 | |
3417 addi 4,4,0x10 | |
3418 vxor 7,0,19 | |
3419 bne Lxts_dec6x_steal | |
3420 b Lxts_dec6x_done | |
3421 | |
3422 .align 4 | |
3423 Lxts_dec6x_zero: | |
3424 cmpwi 31,0 | |
3425 beq Lxts_dec6x_done | |
3426 | |
3427 .long 0x7C005699 | |
3428 vperm 0,0,0,6 | |
3429 vxor 7,0,18 | |
3430 Lxts_dec6x_steal: | |
3431 .long 0x10E7C548 | |
3432 lvx 24,26,7 | |
3433 addi 7,7,0x20 | |
3434 | |
3435 .long 0x10E7CD48 | |
3436 lvx 25,3,7 | |
3437 bc 16,0,Lxts_dec6x_steal | |
3438 | |
3439 add 10,10,31 | |
3440 .long 0x10E7C548 | |
3441 | |
3442 cmpwi 31,0 | |
3443 .long 0x10E7CD48 | |
3444 | |
3445 .long 0x7C005699 | |
3446 .long 0x10E7D548 | |
3447 | |
3448 lvsr 5,0,31 | |
3449 .long 0x10E7DD48 | |
3450 | |
3451 addi 7,1,64+15 | |
3452 .long 0x10E7E548 | |
3453 lvx 24,0,7 | |
3454 | |
3455 .long 0x10E7ED48 | |
3456 lvx 25,3,7 | |
3457 vxor 18,18,31 | |
3458 | |
3459 vperm 0,0,0,6 | |
3460 .long 0x10E7F548 | |
3461 | |
3462 vperm 0,0,0,5 | |
3463 .long 0x11679549 | |
3464 | |
3465 vperm 7,11,11,6 | |
3466 .long 0x7CE02799 | |
3467 | |
3468 | |
3469 vxor 7,7,7 | |
3470 vspltisb 12,-1 | |
3471 vperm 7,7,12,5 | |
3472 vsel 7,0,11,7 | |
3473 vxor 7,7,17 | |
3474 | |
3475 subi 30,4,1 | |
3476 mtctr 31 | |
3477 Loop_xts_dec6x_steal: | |
3478 lbzu 0,1(30) | |
3479 stb 0,16(30) | |
3480 bc 16,0,Loop_xts_dec6x_steal | |
3481 | |
3482 li 31,0 | |
3483 mtctr 9 | |
3484 b Loop_xts_dec1x | |
3485 | |
3486 .align 4 | |
3487 Lxts_dec6x_done: | |
3488 cmpldi 8,0 | |
3489 beq Lxts_dec6x_ret | |
3490 | |
3491 vxor 8,17,23 | |
3492 vperm 8,8,8,6 | |
3493 .long 0x7D004799 | |
3494 | |
3495 Lxts_dec6x_ret: | |
3496 mtlr 11 | |
3497 li 10,79 | |
3498 li 11,95 | |
3499 stvx 9,10,1 | |
3500 addi 10,10,32 | |
3501 stvx 9,11,1 | |
3502 addi 11,11,32 | |
3503 stvx 9,10,1 | |
3504 addi 10,10,32 | |
3505 stvx 9,11,1 | |
3506 addi 11,11,32 | |
3507 stvx 9,10,1 | |
3508 addi 10,10,32 | |
3509 stvx 9,11,1 | |
3510 addi 11,11,32 | |
3511 stvx 9,10,1 | |
3512 addi 10,10,32 | |
3513 stvx 9,11,1 | |
3514 addi 11,11,32 | |
3515 | |
3516 mtspr 256,12 | |
3517 lvx 20,10,1 | |
3518 addi 10,10,32 | |
3519 lvx 21,11,1 | |
3520 addi 11,11,32 | |
3521 lvx 22,10,1 | |
3522 addi 10,10,32 | |
3523 lvx 23,11,1 | |
3524 addi 11,11,32 | |
3525 lvx 24,10,1 | |
3526 addi 10,10,32 | |
3527 lvx 25,11,1 | |
3528 addi 11,11,32 | |
3529 lvx 26,10,1 | |
3530 addi 10,10,32 | |
3531 lvx 27,11,1 | |
3532 addi 11,11,32 | |
3533 lvx 28,10,1 | |
3534 addi 10,10,32 | |
3535 lvx 29,11,1 | |
3536 addi 11,11,32 | |
3537 lvx 30,10,1 | |
3538 lvx 31,11,1 | |
3539 ld 26,400(1) | |
3540 ld 27,408(1) | |
3541 ld 28,416(1) | |
3542 ld 29,424(1) | |
3543 ld 30,432(1) | |
3544 ld 31,440(1) | |
3545 addi 1,1,448 | |
3546 blr | |
3547 .long 0 | |
3548 .byte 0,12,0x04,1,0x80,6,6,0 | |
3549 .long 0 | |
3550 | |
3551 .align 5 | |
3552 _aesp8_xts_dec5x: | |
3553 .long 0x10E7C548 | |
3554 .long 0x118CC548 | |
3555 .long 0x11ADC548 | |
3556 .long 0x11CEC548 | |
3557 .long 0x11EFC548 | |
3558 lvx 24,26,7 | |
3559 addi 7,7,0x20 | |
3560 | |
3561 .long 0x10E7CD48 | |
3562 .long 0x118CCD48 | |
3563 .long 0x11ADCD48 | |
3564 .long 0x11CECD48 | |
3565 .long 0x11EFCD48 | |
3566 lvx 25,3,7 | |
3567 bc 16,0,_aesp8_xts_dec5x | |
3568 | |
3569 subi 0,31,1 | |
3570 .long 0x10E7C548 | |
3571 .long 0x118CC548 | |
3572 .long 0x11ADC548 | |
3573 .long 0x11CEC548 | |
3574 .long 0x11EFC548 | |
3575 | |
3576 andi. 0,0,16 | |
3577 cmpwi 31,0 | |
3578 .long 0x10E7CD48 | |
3579 .long 0x118CCD48 | |
3580 .long 0x11ADCD48 | |
3581 .long 0x11CECD48 | |
3582 .long 0x11EFCD48 | |
3583 vxor 17,17,31 | |
3584 | |
3585 sub 10,10,0 | |
3586 .long 0x10E7D548 | |
3587 .long 0x118CD548 | |
3588 .long 0x11ADD548 | |
3589 .long 0x11CED548 | |
3590 .long 0x11EFD548 | |
3591 vxor 1,18,31 | |
3592 | |
3593 .long 0x10E7DD48 | |
3594 .long 0x7C005699 | |
3595 .long 0x118CDD48 | |
3596 .long 0x11ADDD48 | |
3597 .long 0x11CEDD48 | |
3598 .long 0x11EFDD48 | |
3599 vxor 2,19,31 | |
3600 | |
3601 addi 7,1,64+15 | |
3602 .long 0x10E7E548 | |
3603 .long 0x118CE548 | |
3604 .long 0x11ADE548 | |
3605 .long 0x11CEE548 | |
3606 .long 0x11EFE548 | |
3607 lvx 24,0,7 | |
3608 vxor 3,20,31 | |
3609 | |
3610 .long 0x10E7ED48 | |
3611 vperm 0,0,0,6 | |
3612 .long 0x118CED48 | |
3613 .long 0x11ADED48 | |
3614 .long 0x11CEED48 | |
3615 .long 0x11EFED48 | |
3616 lvx 25,3,7 | |
3617 vxor 4,21,31 | |
3618 | |
3619 .long 0x10E7F548 | |
3620 .long 0x118CF548 | |
3621 .long 0x11ADF548 | |
3622 .long 0x11CEF548 | |
3623 .long 0x11EFF548 | |
3624 | |
3625 .long 0x10E78D49 | |
3626 .long 0x118C0D49 | |
3627 .long 0x11AD1549 | |
3628 .long 0x11CE1D49 | |
3629 .long 0x11EF2549 | |
3630 mtctr 9 | |
3631 blr | |
3632 .long 0 | |
3633 .byte 0,12,0x14,0,0,0,0,0 | |
OLD | NEW |