Index: linux-ppc64le/crypto/aes/aesp8-ppc.S |
diff --git a/linux-ppc64le/crypto/aes/aesp8-ppc.S b/linux-ppc64le/crypto/aes/aesp8-ppc.S |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3424ea60364f0b03e4a9a0e260a815d975b2d16a |
--- /dev/null |
+++ b/linux-ppc64le/crypto/aes/aesp8-ppc.S |
@@ -0,0 +1,3633 @@ |
+.machine "any" |
+ |
+.text |
+ |
+.align 7 |
+rcon: |
+.byte 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01 |
+.byte 0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b |
+.byte 0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d |
+.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 |
+Lconsts: |
+ mflr 0 |
+ bcl 20,31,$+4 |
+ mflr 6 |
+ addi 6,6,-0x48 |
+ mtlr 0 |
+ blr |
+.long 0 |
+.byte 0,12,0x14,0,0,0,0,0 |
+.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 |
+.align 2 |
+ |
+.globl aes_hw_set_encrypt_key |
+.align 5 |
+aes_hw_set_encrypt_key: |
+Lset_encrypt_key: |
+ mflr 11 |
+ std 11,16(1) |
+ |
+ li 6,-1 |
+ cmpldi 3,0 |
+ beq- Lenc_key_abort |
+ cmpldi 5,0 |
+ beq- Lenc_key_abort |
+ li 6,-2 |
+ cmpwi 4,128 |
+ blt- Lenc_key_abort |
+ cmpwi 4,256 |
+ bgt- Lenc_key_abort |
+ andi. 0,4,0x3f |
+ bne- Lenc_key_abort |
+ |
+ lis 0,0xfff0 |
+ mfspr 12,256 |
+ mtspr 256,0 |
+ |
+ bl Lconsts |
+ mtlr 11 |
+ |
+ neg 9,3 |
+ lvx 1,0,3 |
+ addi 3,3,15 |
+ lvsr 3,0,9 |
+ li 8,0x20 |
+ cmpwi 4,192 |
+ lvx 2,0,3 |
+ vspltisb 5,0x0f |
+ lvx 4,0,6 |
+ vxor 3,3,5 |
+ lvx 5,8,6 |
+ addi 6,6,0x10 |
+ vperm 1,1,2,3 |
+ li 7,8 |
+ vxor 0,0,0 |
+ mtctr 7 |
+ |
+ lvsl 8,0,5 |
+ vspltisb 9,-1 |
+ lvx 10,0,5 |
+ vperm 9,9,0,8 |
+ |
+ blt Loop128 |
+ addi 3,3,8 |
+ beq L192 |
+ addi 3,3,8 |
+ b L256 |
+ |
+.align 4 |
+Loop128: |
+ vperm 3,1,1,5 |
+ vsldoi 6,0,1,12 |
+ vperm 11,1,1,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ .long 0x10632509 |
+ stvx 7,0,5 |
+ addi 5,5,16 |
+ |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ vadduwm 4,4,4 |
+ vxor 1,1,3 |
+ bc 16,0,Loop128 |
+ |
+ lvx 4,0,6 |
+ |
+ vperm 3,1,1,5 |
+ vsldoi 6,0,1,12 |
+ vperm 11,1,1,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ .long 0x10632509 |
+ stvx 7,0,5 |
+ addi 5,5,16 |
+ |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ vadduwm 4,4,4 |
+ vxor 1,1,3 |
+ |
+ vperm 3,1,1,5 |
+ vsldoi 6,0,1,12 |
+ vperm 11,1,1,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ .long 0x10632509 |
+ stvx 7,0,5 |
+ addi 5,5,16 |
+ |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ vxor 1,1,3 |
+ vperm 11,1,1,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ stvx 7,0,5 |
+ |
+ addi 3,5,15 |
+ addi 5,5,0x50 |
+ |
+ li 8,10 |
+ b Ldone |
+ |
+.align 4 |
+L192: |
+ lvx 6,0,3 |
+ li 7,4 |
+ vperm 11,1,1,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ stvx 7,0,5 |
+ addi 5,5,16 |
+ vperm 2,2,6,3 |
+ vspltisb 3,8 |
+ mtctr 7 |
+ vsububm 5,5,3 |
+ |
+Loop192: |
+ vperm 3,2,2,5 |
+ vsldoi 6,0,1,12 |
+ .long 0x10632509 |
+ |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ |
+ vsldoi 7,0,2,8 |
+ vspltw 6,1,3 |
+ vxor 6,6,2 |
+ vsldoi 2,0,2,12 |
+ vadduwm 4,4,4 |
+ vxor 2,2,6 |
+ vxor 1,1,3 |
+ vxor 2,2,3 |
+ vsldoi 7,7,1,8 |
+ |
+ vperm 3,2,2,5 |
+ vsldoi 6,0,1,12 |
+ vperm 11,7,7,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ .long 0x10632509 |
+ stvx 7,0,5 |
+ addi 5,5,16 |
+ |
+ vsldoi 7,1,2,8 |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vperm 11,7,7,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ stvx 7,0,5 |
+ addi 5,5,16 |
+ |
+ vspltw 6,1,3 |
+ vxor 6,6,2 |
+ vsldoi 2,0,2,12 |
+ vadduwm 4,4,4 |
+ vxor 2,2,6 |
+ vxor 1,1,3 |
+ vxor 2,2,3 |
+ vperm 11,1,1,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ stvx 7,0,5 |
+ addi 3,5,15 |
+ addi 5,5,16 |
+ bc 16,0,Loop192 |
+ |
+ li 8,12 |
+ addi 5,5,0x20 |
+ b Ldone |
+ |
+.align 4 |
+L256: |
+ lvx 6,0,3 |
+ li 7,7 |
+ li 8,14 |
+ vperm 11,1,1,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ stvx 7,0,5 |
+ addi 5,5,16 |
+ vperm 2,2,6,3 |
+ mtctr 7 |
+ |
+Loop256: |
+ vperm 3,2,2,5 |
+ vsldoi 6,0,1,12 |
+ vperm 11,2,2,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ .long 0x10632509 |
+ stvx 7,0,5 |
+ addi 5,5,16 |
+ |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ vsldoi 6,0,6,12 |
+ vxor 1,1,6 |
+ vadduwm 4,4,4 |
+ vxor 1,1,3 |
+ vperm 11,1,1,8 |
+ vsel 7,10,11,9 |
+ vor 10,11,11 |
+ stvx 7,0,5 |
+ addi 3,5,15 |
+ addi 5,5,16 |
+ bdz Ldone |
+ |
+ vspltw 3,1,3 |
+ vsldoi 6,0,2,12 |
+ .long 0x106305C8 |
+ |
+ vxor 2,2,6 |
+ vsldoi 6,0,6,12 |
+ vxor 2,2,6 |
+ vsldoi 6,0,6,12 |
+ vxor 2,2,6 |
+ |
+ vxor 2,2,3 |
+ b Loop256 |
+ |
+.align 4 |
+Ldone: |
+ lvx 2,0,3 |
+ vsel 2,10,2,9 |
+ stvx 2,0,3 |
+ li 6,0 |
+ mtspr 256,12 |
+ stw 8,0(5) |
+ |
+Lenc_key_abort: |
+ mr 3,6 |
+ blr |
+.long 0 |
+.byte 0,12,0x14,1,0,0,3,0 |
+.long 0 |
+ |
+ |
+.globl aes_hw_set_decrypt_key |
+.align 5 |
+aes_hw_set_decrypt_key: |
+ stdu 1,-64(1) |
+ mflr 10 |
+ std 10,64+16(1) |
+ bl Lset_encrypt_key |
+ mtlr 10 |
+ |
+ cmpwi 3,0 |
+ bne- Ldec_key_abort |
+ |
+ slwi 7,8,4 |
+ subi 3,5,240 |
+ srwi 8,8,1 |
+ add 5,3,7 |
+ mtctr 8 |
+ |
+Ldeckey: |
+ lwz 0, 0(3) |
+ lwz 6, 4(3) |
+ lwz 7, 8(3) |
+ lwz 8, 12(3) |
+ addi 3,3,16 |
+ lwz 9, 0(5) |
+ lwz 10,4(5) |
+ lwz 11,8(5) |
+ lwz 12,12(5) |
+ stw 0, 0(5) |
+ stw 6, 4(5) |
+ stw 7, 8(5) |
+ stw 8, 12(5) |
+ subi 5,5,16 |
+ stw 9, -16(3) |
+ stw 10,-12(3) |
+ stw 11,-8(3) |
+ stw 12,-4(3) |
+ bc 16,0,Ldeckey |
+ |
+ xor 3,3,3 |
+Ldec_key_abort: |
+ addi 1,1,64 |
+ blr |
+.long 0 |
+.byte 0,12,4,1,0x80,0,3,0 |
+.long 0 |
+ |
+.globl aes_hw_encrypt |
+.align 5 |
+aes_hw_encrypt: |
+ lwz 6,240(5) |
+ lis 0,0xfc00 |
+ mfspr 12,256 |
+ li 7,15 |
+ mtspr 256,0 |
+ |
+ lvx 0,0,3 |
+ neg 11,4 |
+ lvx 1,7,3 |
+ lvsl 2,0,3 |
+ vspltisb 4,0x0f |
+ lvsr 3,0,11 |
+ vxor 2,2,4 |
+ li 7,16 |
+ vperm 0,0,1,2 |
+ lvx 1,0,5 |
+ lvsr 5,0,5 |
+ srwi 6,6,1 |
+ lvx 2,7,5 |
+ addi 7,7,16 |
+ subi 6,6,1 |
+ vperm 1,2,1,5 |
+ |
+ vxor 0,0,1 |
+ lvx 1,7,5 |
+ addi 7,7,16 |
+ mtctr 6 |
+ |
+Loop_enc: |
+ vperm 2,1,2,5 |
+ .long 0x10001508 |
+ lvx 2,7,5 |
+ addi 7,7,16 |
+ vperm 1,2,1,5 |
+ .long 0x10000D08 |
+ lvx 1,7,5 |
+ addi 7,7,16 |
+ bc 16,0,Loop_enc |
+ |
+ vperm 2,1,2,5 |
+ .long 0x10001508 |
+ lvx 2,7,5 |
+ vperm 1,2,1,5 |
+ .long 0x10000D09 |
+ |
+ vspltisb 2,-1 |
+ vxor 1,1,1 |
+ li 7,15 |
+ vperm 2,2,1,3 |
+ vxor 3,3,4 |
+ lvx 1,0,4 |
+ vperm 0,0,0,3 |
+ vsel 1,1,0,2 |
+ lvx 4,7,4 |
+ stvx 1,0,4 |
+ vsel 0,0,4,2 |
+ stvx 0,7,4 |
+ |
+ mtspr 256,12 |
+ blr |
+.long 0 |
+.byte 0,12,0x14,0,0,0,3,0 |
+.long 0 |
+ |
+.globl aes_hw_decrypt |
+.align 5 |
+aes_hw_decrypt: |
+ lwz 6,240(5) |
+ lis 0,0xfc00 |
+ mfspr 12,256 |
+ li 7,15 |
+ mtspr 256,0 |
+ |
+ lvx 0,0,3 |
+ neg 11,4 |
+ lvx 1,7,3 |
+ lvsl 2,0,3 |
+ vspltisb 4,0x0f |
+ lvsr 3,0,11 |
+ vxor 2,2,4 |
+ li 7,16 |
+ vperm 0,0,1,2 |
+ lvx 1,0,5 |
+ lvsr 5,0,5 |
+ srwi 6,6,1 |
+ lvx 2,7,5 |
+ addi 7,7,16 |
+ subi 6,6,1 |
+ vperm 1,2,1,5 |
+ |
+ vxor 0,0,1 |
+ lvx 1,7,5 |
+ addi 7,7,16 |
+ mtctr 6 |
+ |
+Loop_dec: |
+ vperm 2,1,2,5 |
+ .long 0x10001548 |
+ lvx 2,7,5 |
+ addi 7,7,16 |
+ vperm 1,2,1,5 |
+ .long 0x10000D48 |
+ lvx 1,7,5 |
+ addi 7,7,16 |
+ bc 16,0,Loop_dec |
+ |
+ vperm 2,1,2,5 |
+ .long 0x10001548 |
+ lvx 2,7,5 |
+ vperm 1,2,1,5 |
+ .long 0x10000D49 |
+ |
+ vspltisb 2,-1 |
+ vxor 1,1,1 |
+ li 7,15 |
+ vperm 2,2,1,3 |
+ vxor 3,3,4 |
+ lvx 1,0,4 |
+ vperm 0,0,0,3 |
+ vsel 1,1,0,2 |
+ lvx 4,7,4 |
+ stvx 1,0,4 |
+ vsel 0,0,4,2 |
+ stvx 0,7,4 |
+ |
+ mtspr 256,12 |
+ blr |
+.long 0 |
+.byte 0,12,0x14,0,0,0,3,0 |
+.long 0 |
+ |
+.globl aes_hw_cbc_encrypt |
+.align 5 |
+aes_hw_cbc_encrypt: |
+ cmpldi 5,16 |
+ bclr 14,0 |
+ |
+ cmpwi 8,0 |
+ lis 0,0xffe0 |
+ mfspr 12,256 |
+ mtspr 256,0 |
+ |
+ li 10,15 |
+ vxor 0,0,0 |
+ vspltisb 3,0x0f |
+ |
+ lvx 4,0,7 |
+ lvsl 6,0,7 |
+ lvx 5,10,7 |
+ vxor 6,6,3 |
+ vperm 4,4,5,6 |
+ |
+ neg 11,3 |
+ lvsr 10,0,6 |
+ lwz 9,240(6) |
+ |
+ lvsr 6,0,11 |
+ lvx 5,0,3 |
+ addi 3,3,15 |
+ vxor 6,6,3 |
+ |
+ lvsl 8,0,4 |
+ vspltisb 9,-1 |
+ lvx 7,0,4 |
+ vperm 9,9,0,8 |
+ vxor 8,8,3 |
+ |
+ srwi 9,9,1 |
+ li 10,16 |
+ subi 9,9,1 |
+ beq Lcbc_dec |
+ |
+Lcbc_enc: |
+ vor 2,5,5 |
+ lvx 5,0,3 |
+ addi 3,3,16 |
+ mtctr 9 |
+ subi 5,5,16 |
+ |
+ lvx 0,0,6 |
+ vperm 2,2,5,6 |
+ lvx 1,10,6 |
+ addi 10,10,16 |
+ vperm 0,1,0,10 |
+ vxor 2,2,0 |
+ lvx 0,10,6 |
+ addi 10,10,16 |
+ vxor 2,2,4 |
+ |
+Loop_cbc_enc: |
+ vperm 1,0,1,10 |
+ .long 0x10420D08 |
+ lvx 1,10,6 |
+ addi 10,10,16 |
+ vperm 0,1,0,10 |
+ .long 0x10420508 |
+ lvx 0,10,6 |
+ addi 10,10,16 |
+ bc 16,0,Loop_cbc_enc |
+ |
+ vperm 1,0,1,10 |
+ .long 0x10420D08 |
+ lvx 1,10,6 |
+ li 10,16 |
+ vperm 0,1,0,10 |
+ .long 0x10820509 |
+ cmpldi 5,16 |
+ |
+ vperm 3,4,4,8 |
+ vsel 2,7,3,9 |
+ vor 7,3,3 |
+ stvx 2,0,4 |
+ addi 4,4,16 |
+ bge Lcbc_enc |
+ |
+ b Lcbc_done |
+ |
+.align 4 |
+Lcbc_dec: |
+ cmpldi 5,128 |
+ bge _aesp8_cbc_decrypt8x |
+ vor 3,5,5 |
+ lvx 5,0,3 |
+ addi 3,3,16 |
+ mtctr 9 |
+ subi 5,5,16 |
+ |
+ lvx 0,0,6 |
+ vperm 3,3,5,6 |
+ lvx 1,10,6 |
+ addi 10,10,16 |
+ vperm 0,1,0,10 |
+ vxor 2,3,0 |
+ lvx 0,10,6 |
+ addi 10,10,16 |
+ |
+Loop_cbc_dec: |
+ vperm 1,0,1,10 |
+ .long 0x10420D48 |
+ lvx 1,10,6 |
+ addi 10,10,16 |
+ vperm 0,1,0,10 |
+ .long 0x10420548 |
+ lvx 0,10,6 |
+ addi 10,10,16 |
+ bc 16,0,Loop_cbc_dec |
+ |
+ vperm 1,0,1,10 |
+ .long 0x10420D48 |
+ lvx 1,10,6 |
+ li 10,16 |
+ vperm 0,1,0,10 |
+ .long 0x10420549 |
+ cmpldi 5,16 |
+ |
+ vxor 2,2,4 |
+ vor 4,3,3 |
+ vperm 3,2,2,8 |
+ vsel 2,7,3,9 |
+ vor 7,3,3 |
+ stvx 2,0,4 |
+ addi 4,4,16 |
+ bge Lcbc_dec |
+ |
+Lcbc_done: |
+ addi 4,4,-1 |
+ lvx 2,0,4 |
+ vsel 2,7,2,9 |
+ stvx 2,0,4 |
+ |
+ neg 8,7 |
+ li 10,15 |
+ vxor 0,0,0 |
+ vspltisb 9,-1 |
+ vspltisb 3,0x0f |
+ lvsr 8,0,8 |
+ vperm 9,9,0,8 |
+ vxor 8,8,3 |
+ lvx 7,0,7 |
+ vperm 4,4,4,8 |
+ vsel 2,7,4,9 |
+ lvx 5,10,7 |
+ stvx 2,0,7 |
+ vsel 2,4,5,9 |
+ stvx 2,10,7 |
+ |
+ mtspr 256,12 |
+ blr |
+.long 0 |
+.byte 0,12,0x14,0,0,0,6,0 |
+.long 0 |
+.align 5 |
+_aesp8_cbc_decrypt8x: |
+ stdu 1,-448(1) |
+ li 10,207 |
+ li 11,223 |
+ stvx 20,10,1 |
+ addi 10,10,32 |
+ stvx 21,11,1 |
+ addi 11,11,32 |
+ stvx 22,10,1 |
+ addi 10,10,32 |
+ stvx 23,11,1 |
+ addi 11,11,32 |
+ stvx 24,10,1 |
+ addi 10,10,32 |
+ stvx 25,11,1 |
+ addi 11,11,32 |
+ stvx 26,10,1 |
+ addi 10,10,32 |
+ stvx 27,11,1 |
+ addi 11,11,32 |
+ stvx 28,10,1 |
+ addi 10,10,32 |
+ stvx 29,11,1 |
+ addi 11,11,32 |
+ stvx 30,10,1 |
+ stvx 31,11,1 |
+ li 0,-1 |
+ stw 12,396(1) |
+ li 8,0x10 |
+ std 26,400(1) |
+ li 26,0x20 |
+ std 27,408(1) |
+ li 27,0x30 |
+ std 28,416(1) |
+ li 28,0x40 |
+ std 29,424(1) |
+ li 29,0x50 |
+ std 30,432(1) |
+ li 30,0x60 |
+ std 31,440(1) |
+ li 31,0x70 |
+ mtspr 256,0 |
+ |
+ subi 9,9,3 |
+ subi 5,5,128 |
+ |
+ lvx 23,0,6 |
+ lvx 30,8,6 |
+ addi 6,6,0x20 |
+ lvx 31,0,6 |
+ vperm 23,30,23,10 |
+ addi 11,1,64+15 |
+ mtctr 9 |
+ |
+Load_cbc_dec_key: |
+ vperm 24,31,30,10 |
+ lvx 30,8,6 |
+ addi 6,6,0x20 |
+ stvx 24,0,11 |
+ vperm 25,30,31,10 |
+ lvx 31,0,6 |
+ stvx 25,8,11 |
+ addi 11,11,0x20 |
+ bc 16,0,Load_cbc_dec_key |
+ |
+ lvx 26,8,6 |
+ vperm 24,31,30,10 |
+ lvx 27,26,6 |
+ stvx 24,0,11 |
+ vperm 25,26,31,10 |
+ lvx 28,27,6 |
+ stvx 25,8,11 |
+ addi 11,1,64+15 |
+ vperm 26,27,26,10 |
+ lvx 29,28,6 |
+ vperm 27,28,27,10 |
+ lvx 30,29,6 |
+ vperm 28,29,28,10 |
+ lvx 31,30,6 |
+ vperm 29,30,29,10 |
+ lvx 14,31,6 |
+ vperm 30,31,30,10 |
+ lvx 24,0,11 |
+ vperm 31,14,31,10 |
+ lvx 25,8,11 |
+ |
+ |
+ |
+ subi 3,3,15 |
+ |
+ li 10,8 |
+ .long 0x7C001E99 |
+ lvsl 6,0,10 |
+ vspltisb 3,0x0f |
+ .long 0x7C281E99 |
+ vxor 6,6,3 |
+ .long 0x7C5A1E99 |
+ vperm 0,0,0,6 |
+ .long 0x7C7B1E99 |
+ vperm 1,1,1,6 |
+ .long 0x7D5C1E99 |
+ vperm 2,2,2,6 |
+ vxor 14,0,23 |
+ .long 0x7D7D1E99 |
+ vperm 3,3,3,6 |
+ vxor 15,1,23 |
+ .long 0x7D9E1E99 |
+ vperm 10,10,10,6 |
+ vxor 16,2,23 |
+ .long 0x7DBF1E99 |
+ addi 3,3,0x80 |
+ vperm 11,11,11,6 |
+ vxor 17,3,23 |
+ vperm 12,12,12,6 |
+ vxor 18,10,23 |
+ vperm 13,13,13,6 |
+ vxor 19,11,23 |
+ vxor 20,12,23 |
+ vxor 21,13,23 |
+ |
+ mtctr 9 |
+ b Loop_cbc_dec8x |
+.align 5 |
+Loop_cbc_dec8x: |
+ .long 0x11CEC548 |
+ .long 0x11EFC548 |
+ .long 0x1210C548 |
+ .long 0x1231C548 |
+ .long 0x1252C548 |
+ .long 0x1273C548 |
+ .long 0x1294C548 |
+ .long 0x12B5C548 |
+ lvx 24,26,11 |
+ addi 11,11,0x20 |
+ |
+ .long 0x11CECD48 |
+ .long 0x11EFCD48 |
+ .long 0x1210CD48 |
+ .long 0x1231CD48 |
+ .long 0x1252CD48 |
+ .long 0x1273CD48 |
+ .long 0x1294CD48 |
+ .long 0x12B5CD48 |
+ lvx 25,8,11 |
+ bc 16,0,Loop_cbc_dec8x |
+ |
+ subic 5,5,128 |
+ .long 0x11CEC548 |
+ .long 0x11EFC548 |
+ .long 0x1210C548 |
+ .long 0x1231C548 |
+ .long 0x1252C548 |
+ .long 0x1273C548 |
+ .long 0x1294C548 |
+ .long 0x12B5C548 |
+ |
+ subfe. 0,0,0 |
+ .long 0x11CECD48 |
+ .long 0x11EFCD48 |
+ .long 0x1210CD48 |
+ .long 0x1231CD48 |
+ .long 0x1252CD48 |
+ .long 0x1273CD48 |
+ .long 0x1294CD48 |
+ .long 0x12B5CD48 |
+ |
+ and 0,0,5 |
+ .long 0x11CED548 |
+ .long 0x11EFD548 |
+ .long 0x1210D548 |
+ .long 0x1231D548 |
+ .long 0x1252D548 |
+ .long 0x1273D548 |
+ .long 0x1294D548 |
+ .long 0x12B5D548 |
+ |
+ add 3,3,0 |
+ |
+ |
+ |
+ .long 0x11CEDD48 |
+ .long 0x11EFDD48 |
+ .long 0x1210DD48 |
+ .long 0x1231DD48 |
+ .long 0x1252DD48 |
+ .long 0x1273DD48 |
+ .long 0x1294DD48 |
+ .long 0x12B5DD48 |
+ |
+ addi 11,1,64+15 |
+ .long 0x11CEE548 |
+ .long 0x11EFE548 |
+ .long 0x1210E548 |
+ .long 0x1231E548 |
+ .long 0x1252E548 |
+ .long 0x1273E548 |
+ .long 0x1294E548 |
+ .long 0x12B5E548 |
+ lvx 24,0,11 |
+ |
+ .long 0x11CEED48 |
+ .long 0x11EFED48 |
+ .long 0x1210ED48 |
+ .long 0x1231ED48 |
+ .long 0x1252ED48 |
+ .long 0x1273ED48 |
+ .long 0x1294ED48 |
+ .long 0x12B5ED48 |
+ lvx 25,8,11 |
+ |
+ .long 0x11CEF548 |
+ vxor 4,4,31 |
+ .long 0x11EFF548 |
+ vxor 0,0,31 |
+ .long 0x1210F548 |
+ vxor 1,1,31 |
+ .long 0x1231F548 |
+ vxor 2,2,31 |
+ .long 0x1252F548 |
+ vxor 3,3,31 |
+ .long 0x1273F548 |
+ vxor 10,10,31 |
+ .long 0x1294F548 |
+ vxor 11,11,31 |
+ .long 0x12B5F548 |
+ vxor 12,12,31 |
+ |
+ .long 0x11CE2549 |
+ .long 0x11EF0549 |
+ .long 0x7C001E99 |
+ .long 0x12100D49 |
+ .long 0x7C281E99 |
+ .long 0x12311549 |
+ vperm 0,0,0,6 |
+ .long 0x7C5A1E99 |
+ .long 0x12521D49 |
+ vperm 1,1,1,6 |
+ .long 0x7C7B1E99 |
+ .long 0x12735549 |
+ vperm 2,2,2,6 |
+ .long 0x7D5C1E99 |
+ .long 0x12945D49 |
+ vperm 3,3,3,6 |
+ .long 0x7D7D1E99 |
+ .long 0x12B56549 |
+ vperm 10,10,10,6 |
+ .long 0x7D9E1E99 |
+ vor 4,13,13 |
+ vperm 11,11,11,6 |
+ .long 0x7DBF1E99 |
+ addi 3,3,0x80 |
+ |
+ vperm 14,14,14,6 |
+ vperm 15,15,15,6 |
+ .long 0x7DC02799 |
+ vperm 12,12,12,6 |
+ vxor 14,0,23 |
+ vperm 16,16,16,6 |
+ .long 0x7DE82799 |
+ vperm 13,13,13,6 |
+ vxor 15,1,23 |
+ vperm 17,17,17,6 |
+ .long 0x7E1A2799 |
+ vxor 16,2,23 |
+ vperm 18,18,18,6 |
+ .long 0x7E3B2799 |
+ vxor 17,3,23 |
+ vperm 19,19,19,6 |
+ .long 0x7E5C2799 |
+ vxor 18,10,23 |
+ vperm 20,20,20,6 |
+ .long 0x7E7D2799 |
+ vxor 19,11,23 |
+ vperm 21,21,21,6 |
+ .long 0x7E9E2799 |
+ vxor 20,12,23 |
+ .long 0x7EBF2799 |
+ addi 4,4,0x80 |
+ vxor 21,13,23 |
+ |
+ mtctr 9 |
+ beq Loop_cbc_dec8x |
+ |
+ addic. 5,5,128 |
+ beq Lcbc_dec8x_done |
+ nop |
+ nop |
+ |
+Loop_cbc_dec8x_tail: |
+ .long 0x11EFC548 |
+ .long 0x1210C548 |
+ .long 0x1231C548 |
+ .long 0x1252C548 |
+ .long 0x1273C548 |
+ .long 0x1294C548 |
+ .long 0x12B5C548 |
+ lvx 24,26,11 |
+ addi 11,11,0x20 |
+ |
+ .long 0x11EFCD48 |
+ .long 0x1210CD48 |
+ .long 0x1231CD48 |
+ .long 0x1252CD48 |
+ .long 0x1273CD48 |
+ .long 0x1294CD48 |
+ .long 0x12B5CD48 |
+ lvx 25,8,11 |
+ bc 16,0,Loop_cbc_dec8x_tail |
+ |
+ .long 0x11EFC548 |
+ .long 0x1210C548 |
+ .long 0x1231C548 |
+ .long 0x1252C548 |
+ .long 0x1273C548 |
+ .long 0x1294C548 |
+ .long 0x12B5C548 |
+ |
+ .long 0x11EFCD48 |
+ .long 0x1210CD48 |
+ .long 0x1231CD48 |
+ .long 0x1252CD48 |
+ .long 0x1273CD48 |
+ .long 0x1294CD48 |
+ .long 0x12B5CD48 |
+ |
+ .long 0x11EFD548 |
+ .long 0x1210D548 |
+ .long 0x1231D548 |
+ .long 0x1252D548 |
+ .long 0x1273D548 |
+ .long 0x1294D548 |
+ .long 0x12B5D548 |
+ |
+ .long 0x11EFDD48 |
+ .long 0x1210DD48 |
+ .long 0x1231DD48 |
+ .long 0x1252DD48 |
+ .long 0x1273DD48 |
+ .long 0x1294DD48 |
+ .long 0x12B5DD48 |
+ |
+ .long 0x11EFE548 |
+ .long 0x1210E548 |
+ .long 0x1231E548 |
+ .long 0x1252E548 |
+ .long 0x1273E548 |
+ .long 0x1294E548 |
+ .long 0x12B5E548 |
+ |
+ .long 0x11EFED48 |
+ .long 0x1210ED48 |
+ .long 0x1231ED48 |
+ .long 0x1252ED48 |
+ .long 0x1273ED48 |
+ .long 0x1294ED48 |
+ .long 0x12B5ED48 |
+ |
+ .long 0x11EFF548 |
+ vxor 4,4,31 |
+ .long 0x1210F548 |
+ vxor 1,1,31 |
+ .long 0x1231F548 |
+ vxor 2,2,31 |
+ .long 0x1252F548 |
+ vxor 3,3,31 |
+ .long 0x1273F548 |
+ vxor 10,10,31 |
+ .long 0x1294F548 |
+ vxor 11,11,31 |
+ .long 0x12B5F548 |
+ vxor 12,12,31 |
+ |
+ cmplwi 5,32 |
+ blt Lcbc_dec8x_one |
+ nop |
+ beq Lcbc_dec8x_two |
+ cmplwi 5,64 |
+ blt Lcbc_dec8x_three |
+ nop |
+ beq Lcbc_dec8x_four |
+ cmplwi 5,96 |
+ blt Lcbc_dec8x_five |
+ nop |
+ beq Lcbc_dec8x_six |
+ |
+Lcbc_dec8x_seven: |
+ .long 0x11EF2549 |
+ .long 0x12100D49 |
+ .long 0x12311549 |
+ .long 0x12521D49 |
+ .long 0x12735549 |
+ .long 0x12945D49 |
+ .long 0x12B56549 |
+ vor 4,13,13 |
+ |
+ vperm 15,15,15,6 |
+ vperm 16,16,16,6 |
+ .long 0x7DE02799 |
+ vperm 17,17,17,6 |
+ .long 0x7E082799 |
+ vperm 18,18,18,6 |
+ .long 0x7E3A2799 |
+ vperm 19,19,19,6 |
+ .long 0x7E5B2799 |
+ vperm 20,20,20,6 |
+ .long 0x7E7C2799 |
+ vperm 21,21,21,6 |
+ .long 0x7E9D2799 |
+ .long 0x7EBE2799 |
+ addi 4,4,0x70 |
+ b Lcbc_dec8x_done |
+ |
+.align 5 |
+Lcbc_dec8x_six: |
+ .long 0x12102549 |
+ .long 0x12311549 |
+ .long 0x12521D49 |
+ .long 0x12735549 |
+ .long 0x12945D49 |
+ .long 0x12B56549 |
+ vor 4,13,13 |
+ |
+ vperm 16,16,16,6 |
+ vperm 17,17,17,6 |
+ .long 0x7E002799 |
+ vperm 18,18,18,6 |
+ .long 0x7E282799 |
+ vperm 19,19,19,6 |
+ .long 0x7E5A2799 |
+ vperm 20,20,20,6 |
+ .long 0x7E7B2799 |
+ vperm 21,21,21,6 |
+ .long 0x7E9C2799 |
+ .long 0x7EBD2799 |
+ addi 4,4,0x60 |
+ b Lcbc_dec8x_done |
+ |
+.align 5 |
+Lcbc_dec8x_five: |
+ .long 0x12312549 |
+ .long 0x12521D49 |
+ .long 0x12735549 |
+ .long 0x12945D49 |
+ .long 0x12B56549 |
+ vor 4,13,13 |
+ |
+ vperm 17,17,17,6 |
+ vperm 18,18,18,6 |
+ .long 0x7E202799 |
+ vperm 19,19,19,6 |
+ .long 0x7E482799 |
+ vperm 20,20,20,6 |
+ .long 0x7E7A2799 |
+ vperm 21,21,21,6 |
+ .long 0x7E9B2799 |
+ .long 0x7EBC2799 |
+ addi 4,4,0x50 |
+ b Lcbc_dec8x_done |
+ |
+.align 5 |
+Lcbc_dec8x_four: |
+ .long 0x12522549 |
+ .long 0x12735549 |
+ .long 0x12945D49 |
+ .long 0x12B56549 |
+ vor 4,13,13 |
+ |
+ vperm 18,18,18,6 |
+ vperm 19,19,19,6 |
+ .long 0x7E402799 |
+ vperm 20,20,20,6 |
+ .long 0x7E682799 |
+ vperm 21,21,21,6 |
+ .long 0x7E9A2799 |
+ .long 0x7EBB2799 |
+ addi 4,4,0x40 |
+ b Lcbc_dec8x_done |
+ |
+.align 5 |
+Lcbc_dec8x_three: |
+ .long 0x12732549 |
+ .long 0x12945D49 |
+ .long 0x12B56549 |
+ vor 4,13,13 |
+ |
+ vperm 19,19,19,6 |
+ vperm 20,20,20,6 |
+ .long 0x7E602799 |
+ vperm 21,21,21,6 |
+ .long 0x7E882799 |
+ .long 0x7EBA2799 |
+ addi 4,4,0x30 |
+ b Lcbc_dec8x_done |
+ |
+.align 5 |
+Lcbc_dec8x_two: |
+ .long 0x12942549 |
+ .long 0x12B56549 |
+ vor 4,13,13 |
+ |
+ vperm 20,20,20,6 |
+ vperm 21,21,21,6 |
+ .long 0x7E802799 |
+ .long 0x7EA82799 |
+ addi 4,4,0x20 |
+ b Lcbc_dec8x_done |
+ |
+.align 5 |
+Lcbc_dec8x_one: |
+ .long 0x12B52549 |
+ vor 4,13,13 |
+ |
+ vperm 21,21,21,6 |
+ .long 0x7EA02799 |
+ addi 4,4,0x10 |
+ |
+Lcbc_dec8x_done: |
+ vperm 4,4,4,6 |
+ .long 0x7C803F99 |
+ |
+ li 10,79 |
+ li 11,95 |
+ stvx 6,10,1 |
+ addi 10,10,32 |
+ stvx 6,11,1 |
+ addi 11,11,32 |
+ stvx 6,10,1 |
+ addi 10,10,32 |
+ stvx 6,11,1 |
+ addi 11,11,32 |
+ stvx 6,10,1 |
+ addi 10,10,32 |
+ stvx 6,11,1 |
+ addi 11,11,32 |
+ stvx 6,10,1 |
+ addi 10,10,32 |
+ stvx 6,11,1 |
+ addi 11,11,32 |
+ |
+ mtspr 256,12 |
+ lvx 20,10,1 |
+ addi 10,10,32 |
+ lvx 21,11,1 |
+ addi 11,11,32 |
+ lvx 22,10,1 |
+ addi 10,10,32 |
+ lvx 23,11,1 |
+ addi 11,11,32 |
+ lvx 24,10,1 |
+ addi 10,10,32 |
+ lvx 25,11,1 |
+ addi 11,11,32 |
+ lvx 26,10,1 |
+ addi 10,10,32 |
+ lvx 27,11,1 |
+ addi 11,11,32 |
+ lvx 28,10,1 |
+ addi 10,10,32 |
+ lvx 29,11,1 |
+ addi 11,11,32 |
+ lvx 30,10,1 |
+ lvx 31,11,1 |
+ ld 26,400(1) |
+ ld 27,408(1) |
+ ld 28,416(1) |
+ ld 29,424(1) |
+ ld 30,432(1) |
+ ld 31,440(1) |
+ addi 1,1,448 |
+ blr |
+.long 0 |
+.byte 0,12,0x04,0,0x80,6,6,0 |
+.long 0 |
+ |
+.globl aes_hw_ctr32_encrypt_blocks |
+.align 5 |
+aes_hw_ctr32_encrypt_blocks: |
+ cmpldi 5,1 |
+ bclr 14,0 |
+ |
+ lis 0,0xfff0 |
+ mfspr 12,256 |
+ mtspr 256,0 |
+ |
+ li 10,15 |
+ vxor 0,0,0 |
+ vspltisb 3,0x0f |
+ |
+ lvx 4,0,7 |
+ lvsl 6,0,7 |
+ lvx 5,10,7 |
+ vspltisb 11,1 |
+ vxor 6,6,3 |
+ vperm 4,4,5,6 |
+ vsldoi 11,0,11,1 |
+ |
+ neg 11,3 |
+ lvsr 10,0,6 |
+ lwz 9,240(6) |
+ |
+ lvsr 6,0,11 |
+ lvx 5,0,3 |
+ addi 3,3,15 |
+ vxor 6,6,3 |
+ |
+ srwi 9,9,1 |
+ li 10,16 |
+ subi 9,9,1 |
+ |
+ cmpldi 5,8 |
+ bge _aesp8_ctr32_encrypt8x |
+ |
+ lvsl 8,0,4 |
+ vspltisb 9,-1 |
+ lvx 7,0,4 |
+ vperm 9,9,0,8 |
+ vxor 8,8,3 |
+ |
+ lvx 0,0,6 |
+ mtctr 9 |
+ lvx 1,10,6 |
+ addi 10,10,16 |
+ vperm 0,1,0,10 |
+ vxor 2,4,0 |
+ lvx 0,10,6 |
+ addi 10,10,16 |
+ b Loop_ctr32_enc |
+ |
+.align 5 |
+Loop_ctr32_enc: |
+ vperm 1,0,1,10 |
+ .long 0x10420D08 |
+ lvx 1,10,6 |
+ addi 10,10,16 |
+ vperm 0,1,0,10 |
+ .long 0x10420508 |
+ lvx 0,10,6 |
+ addi 10,10,16 |
+ bc 16,0,Loop_ctr32_enc |
+ |
+ vadduwm 4,4,11 |
+ vor 3,5,5 |
+ lvx 5,0,3 |
+ addi 3,3,16 |
+ subic. 5,5,1 |
+ |
+ vperm 1,0,1,10 |
+ .long 0x10420D08 |
+ lvx 1,10,6 |
+ vperm 3,3,5,6 |
+ li 10,16 |
+ vperm 1,1,0,10 |
+ lvx 0,0,6 |
+ vxor 3,3,1 |
+ .long 0x10421D09 |
+ |
+ lvx 1,10,6 |
+ addi 10,10,16 |
+ vperm 2,2,2,8 |
+ vsel 3,7,2,9 |
+ mtctr 9 |
+ vperm 0,1,0,10 |
+ vor 7,2,2 |
+ vxor 2,4,0 |
+ lvx 0,10,6 |
+ addi 10,10,16 |
+ stvx 3,0,4 |
+ addi 4,4,16 |
+ bne Loop_ctr32_enc |
+ |
+ addi 4,4,-1 |
+ lvx 2,0,4 |
+ vsel 2,7,2,9 |
+ stvx 2,0,4 |
+ |
+ mtspr 256,12 |
+ blr |
+.long 0 |
+.byte 0,12,0x14,0,0,0,6,0 |
+.long 0 |
+.align 5 |
+_aesp8_ctr32_encrypt8x: |
+ stdu 1,-448(1) |
+ li 10,207 |
+ li 11,223 |
+ stvx 20,10,1 |
+ addi 10,10,32 |
+ stvx 21,11,1 |
+ addi 11,11,32 |
+ stvx 22,10,1 |
+ addi 10,10,32 |
+ stvx 23,11,1 |
+ addi 11,11,32 |
+ stvx 24,10,1 |
+ addi 10,10,32 |
+ stvx 25,11,1 |
+ addi 11,11,32 |
+ stvx 26,10,1 |
+ addi 10,10,32 |
+ stvx 27,11,1 |
+ addi 11,11,32 |
+ stvx 28,10,1 |
+ addi 10,10,32 |
+ stvx 29,11,1 |
+ addi 11,11,32 |
+ stvx 30,10,1 |
+ stvx 31,11,1 |
+ li 0,-1 |
+ stw 12,396(1) |
+ li 8,0x10 |
+ std 26,400(1) |
+ li 26,0x20 |
+ std 27,408(1) |
+ li 27,0x30 |
+ std 28,416(1) |
+ li 28,0x40 |
+ std 29,424(1) |
+ li 29,0x50 |
+ std 30,432(1) |
+ li 30,0x60 |
+ std 31,440(1) |
+ li 31,0x70 |
+ mtspr 256,0 |
+ |
+ subi 9,9,3 |
+ |
+ lvx 23,0,6 |
+ lvx 30,8,6 |
+ addi 6,6,0x20 |
+ lvx 31,0,6 |
+ vperm 23,30,23,10 |
+ addi 11,1,64+15 |
+ mtctr 9 |
+ |
+Load_ctr32_enc_key: |
+ vperm 24,31,30,10 |
+ lvx 30,8,6 |
+ addi 6,6,0x20 |
+ stvx 24,0,11 |
+ vperm 25,30,31,10 |
+ lvx 31,0,6 |
+ stvx 25,8,11 |
+ addi 11,11,0x20 |
+ bc 16,0,Load_ctr32_enc_key |
+ |
+ lvx 26,8,6 |
+ vperm 24,31,30,10 |
+ lvx 27,26,6 |
+ stvx 24,0,11 |
+ vperm 25,26,31,10 |
+ lvx 28,27,6 |
+ stvx 25,8,11 |
+ addi 11,1,64+15 |
+ vperm 26,27,26,10 |
+ lvx 29,28,6 |
+ vperm 27,28,27,10 |
+ lvx 30,29,6 |
+ vperm 28,29,28,10 |
+ lvx 31,30,6 |
+ vperm 29,30,29,10 |
+ lvx 15,31,6 |
+ vperm 30,31,30,10 |
+ lvx 24,0,11 |
+ vperm 31,15,31,10 |
+ lvx 25,8,11 |
+ |
+ vadduwm 7,11,11 |
+ subi 3,3,15 |
+ sldi 5,5,4 |
+ |
+ vadduwm 16,4,11 |
+ vadduwm 17,4,7 |
+ vxor 15,4,23 |
+ li 10,8 |
+ vadduwm 18,16,7 |
+ vxor 16,16,23 |
+ lvsl 6,0,10 |
+ vadduwm 19,17,7 |
+ vxor 17,17,23 |
+ vspltisb 3,0x0f |
+ vadduwm 20,18,7 |
+ vxor 18,18,23 |
+ vxor 6,6,3 |
+ vadduwm 21,19,7 |
+ vxor 19,19,23 |
+ vadduwm 22,20,7 |
+ vxor 20,20,23 |
+ vadduwm 4,21,7 |
+ vxor 21,21,23 |
+ vxor 22,22,23 |
+ |
+ mtctr 9 |
+ b Loop_ctr32_enc8x |
+.align 5 |
+Loop_ctr32_enc8x: |
+ .long 0x11EFC508 |
+ .long 0x1210C508 |
+ .long 0x1231C508 |
+ .long 0x1252C508 |
+ .long 0x1273C508 |
+ .long 0x1294C508 |
+ .long 0x12B5C508 |
+ .long 0x12D6C508 |
+Loop_ctr32_enc8x_middle: |
+ lvx 24,26,11 |
+ addi 11,11,0x20 |
+ |
+ .long 0x11EFCD08 |
+ .long 0x1210CD08 |
+ .long 0x1231CD08 |
+ .long 0x1252CD08 |
+ .long 0x1273CD08 |
+ .long 0x1294CD08 |
+ .long 0x12B5CD08 |
+ .long 0x12D6CD08 |
+ lvx 25,8,11 |
+ bc 16,0,Loop_ctr32_enc8x |
+ |
+ subic 11,5,256 |
+ .long 0x11EFC508 |
+ .long 0x1210C508 |
+ .long 0x1231C508 |
+ .long 0x1252C508 |
+ .long 0x1273C508 |
+ .long 0x1294C508 |
+ .long 0x12B5C508 |
+ .long 0x12D6C508 |
+ |
+ subfe 0,0,0 |
+ .long 0x11EFCD08 |
+ .long 0x1210CD08 |
+ .long 0x1231CD08 |
+ .long 0x1252CD08 |
+ .long 0x1273CD08 |
+ .long 0x1294CD08 |
+ .long 0x12B5CD08 |
+ .long 0x12D6CD08 |
+ |
+ and 0,0,11 |
+ addi 11,1,64+15 |
+ .long 0x11EFD508 |
+ .long 0x1210D508 |
+ .long 0x1231D508 |
+ .long 0x1252D508 |
+ .long 0x1273D508 |
+ .long 0x1294D508 |
+ .long 0x12B5D508 |
+ .long 0x12D6D508 |
+ lvx 24,0,11 |
+ |
+ subic 5,5,129 |
+ .long 0x11EFDD08 |
+ addi 5,5,1 |
+ .long 0x1210DD08 |
+ .long 0x1231DD08 |
+ .long 0x1252DD08 |
+ .long 0x1273DD08 |
+ .long 0x1294DD08 |
+ .long 0x12B5DD08 |
+ .long 0x12D6DD08 |
+ lvx 25,8,11 |
+ |
+ .long 0x11EFE508 |
+ .long 0x7C001E99 |
+ .long 0x1210E508 |
+ .long 0x7C281E99 |
+ .long 0x1231E508 |
+ .long 0x7C5A1E99 |
+ .long 0x1252E508 |
+ .long 0x7C7B1E99 |
+ .long 0x1273E508 |
+ .long 0x7D5C1E99 |
+ .long 0x1294E508 |
+ .long 0x7D9D1E99 |
+ .long 0x12B5E508 |
+ .long 0x7DBE1E99 |
+ .long 0x12D6E508 |
+ .long 0x7DDF1E99 |
+ addi 3,3,0x80 |
+ |
+ .long 0x11EFED08 |
+ vperm 0,0,0,6 |
+ .long 0x1210ED08 |
+ vperm 1,1,1,6 |
+ .long 0x1231ED08 |
+ vperm 2,2,2,6 |
+ .long 0x1252ED08 |
+ vperm 3,3,3,6 |
+ .long 0x1273ED08 |
+ vperm 10,10,10,6 |
+ .long 0x1294ED08 |
+ vperm 12,12,12,6 |
+ .long 0x12B5ED08 |
+ vperm 13,13,13,6 |
+ .long 0x12D6ED08 |
+ vperm 14,14,14,6 |
+ |
+ add 3,3,0 |
+ |
+ |
+ |
+ subfe. 0,0,0 |
+ .long 0x11EFF508 |
+ vxor 0,0,31 |
+ .long 0x1210F508 |
+ vxor 1,1,31 |
+ .long 0x1231F508 |
+ vxor 2,2,31 |
+ .long 0x1252F508 |
+ vxor 3,3,31 |
+ .long 0x1273F508 |
+ vxor 10,10,31 |
+ .long 0x1294F508 |
+ vxor 12,12,31 |
+ .long 0x12B5F508 |
+ vxor 13,13,31 |
+ .long 0x12D6F508 |
+ vxor 14,14,31 |
+ |
+ bne Lctr32_enc8x_break |
+ |
+ .long 0x100F0509 |
+ .long 0x10300D09 |
+ vadduwm 16,4,11 |
+ .long 0x10511509 |
+ vadduwm 17,4,7 |
+ vxor 15,4,23 |
+ .long 0x10721D09 |
+ vadduwm 18,16,7 |
+ vxor 16,16,23 |
+ .long 0x11535509 |
+ vadduwm 19,17,7 |
+ vxor 17,17,23 |
+ .long 0x11946509 |
+ vadduwm 20,18,7 |
+ vxor 18,18,23 |
+ .long 0x11B56D09 |
+ vadduwm 21,19,7 |
+ vxor 19,19,23 |
+ .long 0x11D67509 |
+ vadduwm 22,20,7 |
+ vxor 20,20,23 |
+ vperm 0,0,0,6 |
+ vadduwm 4,21,7 |
+ vxor 21,21,23 |
+ vperm 1,1,1,6 |
+ vxor 22,22,23 |
+ mtctr 9 |
+ |
+ .long 0x11EFC508 |
+ .long 0x7C002799 |
+ vperm 2,2,2,6 |
+ .long 0x1210C508 |
+ .long 0x7C282799 |
+ vperm 3,3,3,6 |
+ .long 0x1231C508 |
+ .long 0x7C5A2799 |
+ vperm 10,10,10,6 |
+ .long 0x1252C508 |
+ .long 0x7C7B2799 |
+ vperm 12,12,12,6 |
+ .long 0x1273C508 |
+ .long 0x7D5C2799 |
+ vperm 13,13,13,6 |
+ .long 0x1294C508 |
+ .long 0x7D9D2799 |
+ vperm 14,14,14,6 |
+ .long 0x12B5C508 |
+ .long 0x7DBE2799 |
+ .long 0x12D6C508 |
+ .long 0x7DDF2799 |
+ addi 4,4,0x80 |
+ |
+ b Loop_ctr32_enc8x_middle |
+ |
+.align 5 |
+Lctr32_enc8x_break: |
+ cmpwi 5,-0x60 |
+ blt Lctr32_enc8x_one |
+ nop |
+ beq Lctr32_enc8x_two |
+ cmpwi 5,-0x40 |
+ blt Lctr32_enc8x_three |
+ nop |
+ beq Lctr32_enc8x_four |
+ cmpwi 5,-0x20 |
+ blt Lctr32_enc8x_five |
+ nop |
+ beq Lctr32_enc8x_six |
+ cmpwi 5,0x00 |
+ blt Lctr32_enc8x_seven |
+ |
+Lctr32_enc8x_eight: |
+ .long 0x11EF0509 |
+ .long 0x12100D09 |
+ .long 0x12311509 |
+ .long 0x12521D09 |
+ .long 0x12735509 |
+ .long 0x12946509 |
+ .long 0x12B56D09 |
+ .long 0x12D67509 |
+ |
+ vperm 15,15,15,6 |
+ vperm 16,16,16,6 |
+ .long 0x7DE02799 |
+ vperm 17,17,17,6 |
+ .long 0x7E082799 |
+ vperm 18,18,18,6 |
+ .long 0x7E3A2799 |
+ vperm 19,19,19,6 |
+ .long 0x7E5B2799 |
+ vperm 20,20,20,6 |
+ .long 0x7E7C2799 |
+ vperm 21,21,21,6 |
+ .long 0x7E9D2799 |
+ vperm 22,22,22,6 |
+ .long 0x7EBE2799 |
+ .long 0x7EDF2799 |
+ addi 4,4,0x80 |
+ b Lctr32_enc8x_done |
+ |
+.align 5 |
+Lctr32_enc8x_seven: |
+ .long 0x11EF0D09 |
+ .long 0x12101509 |
+ .long 0x12311D09 |
+ .long 0x12525509 |
+ .long 0x12736509 |
+ .long 0x12946D09 |
+ .long 0x12B57509 |
+ |
+ vperm 15,15,15,6 |
+ vperm 16,16,16,6 |
+ .long 0x7DE02799 |
+ vperm 17,17,17,6 |
+ .long 0x7E082799 |
+ vperm 18,18,18,6 |
+ .long 0x7E3A2799 |
+ vperm 19,19,19,6 |
+ .long 0x7E5B2799 |
+ vperm 20,20,20,6 |
+ .long 0x7E7C2799 |
+ vperm 21,21,21,6 |
+ .long 0x7E9D2799 |
+ .long 0x7EBE2799 |
+ addi 4,4,0x70 |
+ b Lctr32_enc8x_done |
+ |
+.align 5 |
+Lctr32_enc8x_six: |
+ .long 0x11EF1509 |
+ .long 0x12101D09 |
+ .long 0x12315509 |
+ .long 0x12526509 |
+ .long 0x12736D09 |
+ .long 0x12947509 |
+ |
+ vperm 15,15,15,6 |
+ vperm 16,16,16,6 |
+ .long 0x7DE02799 |
+ vperm 17,17,17,6 |
+ .long 0x7E082799 |
+ vperm 18,18,18,6 |
+ .long 0x7E3A2799 |
+ vperm 19,19,19,6 |
+ .long 0x7E5B2799 |
+ vperm 20,20,20,6 |
+ .long 0x7E7C2799 |
+ .long 0x7E9D2799 |
+ addi 4,4,0x60 |
+ b Lctr32_enc8x_done |
+ |
+.align 5 |
+Lctr32_enc8x_five: |
+ .long 0x11EF1D09 |
+ .long 0x12105509 |
+ .long 0x12316509 |
+ .long 0x12526D09 |
+ .long 0x12737509 |
+ |
+ vperm 15,15,15,6 |
+ vperm 16,16,16,6 |
+ .long 0x7DE02799 |
+ vperm 17,17,17,6 |
+ .long 0x7E082799 |
+ vperm 18,18,18,6 |
+ .long 0x7E3A2799 |
+ vperm 19,19,19,6 |
+ .long 0x7E5B2799 |
+ .long 0x7E7C2799 |
+ addi 4,4,0x50 |
+ b Lctr32_enc8x_done |
+ |
+.align 5 |
+Lctr32_enc8x_four: |
+ .long 0x11EF5509 |
+ .long 0x12106509 |
+ .long 0x12316D09 |
+ .long 0x12527509 |
+ |
+ vperm 15,15,15,6 |
+ vperm 16,16,16,6 |
+ .long 0x7DE02799 |
+ vperm 17,17,17,6 |
+ .long 0x7E082799 |
+ vperm 18,18,18,6 |
+ .long 0x7E3A2799 |
+ .long 0x7E5B2799 |
+ addi 4,4,0x40 |
+ b Lctr32_enc8x_done |
+ |
+.align 5 |
+Lctr32_enc8x_three: |
+ .long 0x11EF6509 |
+ .long 0x12106D09 |
+ .long 0x12317509 |
+ |
+ vperm 15,15,15,6 |
+ vperm 16,16,16,6 |
+ .long 0x7DE02799 |
+ vperm 17,17,17,6 |
+ .long 0x7E082799 |
+ .long 0x7E3A2799 |
+ addi 4,4,0x30 |
+ b Lcbc_dec8x_done |
+ |
+.align 5 |
+Lctr32_enc8x_two: |
+ .long 0x11EF6D09 |
+ .long 0x12107509 |
+ |
+ vperm 15,15,15,6 |
+ vperm 16,16,16,6 |
+ .long 0x7DE02799 |
+ .long 0x7E082799 |
+ addi 4,4,0x20 |
+ b Lcbc_dec8x_done |
+ |
+.align 5 |
+Lctr32_enc8x_one: |
+ .long 0x11EF7509 |
+ |
+ vperm 15,15,15,6 |
+ .long 0x7DE02799 |
+ addi 4,4,0x10 |
+ |
+Lctr32_enc8x_done: |
+ li 10,79 |
+ li 11,95 |
+ stvx 6,10,1 |
+ addi 10,10,32 |
+ stvx 6,11,1 |
+ addi 11,11,32 |
+ stvx 6,10,1 |
+ addi 10,10,32 |
+ stvx 6,11,1 |
+ addi 11,11,32 |
+ stvx 6,10,1 |
+ addi 10,10,32 |
+ stvx 6,11,1 |
+ addi 11,11,32 |
+ stvx 6,10,1 |
+ addi 10,10,32 |
+ stvx 6,11,1 |
+ addi 11,11,32 |
+ |
+ mtspr 256,12 |
+ lvx 20,10,1 |
+ addi 10,10,32 |
+ lvx 21,11,1 |
+ addi 11,11,32 |
+ lvx 22,10,1 |
+ addi 10,10,32 |
+ lvx 23,11,1 |
+ addi 11,11,32 |
+ lvx 24,10,1 |
+ addi 10,10,32 |
+ lvx 25,11,1 |
+ addi 11,11,32 |
+ lvx 26,10,1 |
+ addi 10,10,32 |
+ lvx 27,11,1 |
+ addi 11,11,32 |
+ lvx 28,10,1 |
+ addi 10,10,32 |
+ lvx 29,11,1 |
+ addi 11,11,32 |
+ lvx 30,10,1 |
+ lvx 31,11,1 |
+ ld 26,400(1) |
+ ld 27,408(1) |
+ ld 28,416(1) |
+ ld 29,424(1) |
+ ld 30,432(1) |
+ ld 31,440(1) |
+ addi 1,1,448 |
+ blr |
+.long 0 |
+.byte 0,12,0x04,0,0x80,6,6,0 |
+.long 0 |
+ |
+.globl aes_hw_xts_encrypt |
+.align 5 |
+aes_hw_xts_encrypt: |
+ mr 10,3 |
+ li 3,-1 |
+ cmpldi 5,16 |
+ bclr 14,0 |
+ |
+ lis 0,0xfff0 |
+ mfspr 12,256 |
+ li 11,0 |
+ mtspr 256,0 |
+ |
+ vspltisb 9,0x07 |
+ lvsl 6,11,11 |
+ vspltisb 11,0x0f |
+ vxor 6,6,9 |
+ |
+ li 3,15 |
+ lvx 8,0,8 |
+ lvsl 5,0,8 |
+ lvx 4,3,8 |
+ vxor 5,5,11 |
+ vperm 8,8,4,5 |
+ |
+ neg 11,10 |
+ lvsr 5,0,11 |
+ lvx 2,0,10 |
+ addi 10,10,15 |
+ vxor 5,5,11 |
+ |
+ cmpldi 7,0 |
+ beq Lxts_enc_no_key2 |
+ |
+ lvsr 7,0,7 |
+ lwz 9,240(7) |
+ srwi 9,9,1 |
+ subi 9,9,1 |
+ li 3,16 |
+ |
+ lvx 0,0,7 |
+ lvx 1,3,7 |
+ addi 3,3,16 |
+ vperm 0,1,0,7 |
+ vxor 8,8,0 |
+ lvx 0,3,7 |
+ addi 3,3,16 |
+ mtctr 9 |
+ |
+Ltweak_xts_enc: |
+ vperm 1,0,1,7 |
+ .long 0x11080D08 |
+ lvx 1,3,7 |
+ addi 3,3,16 |
+ vperm 0,1,0,7 |
+ .long 0x11080508 |
+ lvx 0,3,7 |
+ addi 3,3,16 |
+ bc 16,0,Ltweak_xts_enc |
+ |
+ vperm 1,0,1,7 |
+ .long 0x11080D08 |
+ lvx 1,3,7 |
+ vperm 0,1,0,7 |
+ .long 0x11080509 |
+ |
+ li 8,0 |
+ b Lxts_enc |
+ |
+Lxts_enc_no_key2: |
+ li 3,-16 |
+ and 5,5,3 |
+ |
+ |
+Lxts_enc: |
+ lvx 4,0,10 |
+ addi 10,10,16 |
+ |
+ lvsr 7,0,6 |
+ lwz 9,240(6) |
+ srwi 9,9,1 |
+ subi 9,9,1 |
+ li 3,16 |
+ |
+ vslb 10,9,9 |
+ vor 10,10,9 |
+ vspltisb 11,1 |
+ vsldoi 10,10,11,15 |
+ |
+ cmpldi 5,96 |
+ bge _aesp8_xts_encrypt6x |
+ |
+ andi. 7,5,15 |
+ subic 0,5,32 |
+ subi 7,7,16 |
+ subfe 0,0,0 |
+ and 0,0,7 |
+ add 10,10,0 |
+ |
+ lvx 0,0,6 |
+ lvx 1,3,6 |
+ addi 3,3,16 |
+ vperm 2,2,4,5 |
+ vperm 0,1,0,7 |
+ vxor 2,2,8 |
+ vxor 2,2,0 |
+ lvx 0,3,6 |
+ addi 3,3,16 |
+ mtctr 9 |
+ b Loop_xts_enc |
+ |
+.align 5 |
+Loop_xts_enc: |
+ vperm 1,0,1,7 |
+ .long 0x10420D08 |
+ lvx 1,3,6 |
+ addi 3,3,16 |
+ vperm 0,1,0,7 |
+ .long 0x10420508 |
+ lvx 0,3,6 |
+ addi 3,3,16 |
+ bc 16,0,Loop_xts_enc |
+ |
+ vperm 1,0,1,7 |
+ .long 0x10420D08 |
+ lvx 1,3,6 |
+ li 3,16 |
+ vperm 0,1,0,7 |
+ vxor 0,0,8 |
+ .long 0x10620509 |
+ |
+ vperm 11,3,3,6 |
+ |
+ .long 0x7D602799 |
+ |
+ addi 4,4,16 |
+ |
+ subic. 5,5,16 |
+ beq Lxts_enc_done |
+ |
+ vor 2,4,4 |
+ lvx 4,0,10 |
+ addi 10,10,16 |
+ lvx 0,0,6 |
+ lvx 1,3,6 |
+ addi 3,3,16 |
+ |
+ subic 0,5,32 |
+ subfe 0,0,0 |
+ and 0,0,7 |
+ add 10,10,0 |
+ |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vand 11,11,10 |
+ vxor 8,8,11 |
+ |
+ vperm 2,2,4,5 |
+ vperm 0,1,0,7 |
+ vxor 2,2,8 |
+ vxor 3,3,0 |
+ vxor 2,2,0 |
+ lvx 0,3,6 |
+ addi 3,3,16 |
+ |
+ mtctr 9 |
+ cmpldi 5,16 |
+ bge Loop_xts_enc |
+ |
+ vxor 3,3,8 |
+ lvsr 5,0,5 |
+ vxor 4,4,4 |
+ vspltisb 11,-1 |
+ vperm 4,4,11,5 |
+ vsel 2,2,3,4 |
+ |
+ subi 11,4,17 |
+ subi 4,4,16 |
+ mtctr 5 |
+ li 5,16 |
+Loop_xts_enc_steal: |
+ lbzu 0,1(11) |
+ stb 0,16(11) |
+ bc 16,0,Loop_xts_enc_steal |
+ |
+ mtctr 9 |
+ b Loop_xts_enc |
+ |
+Lxts_enc_done: |
+ cmpldi 8,0 |
+ beq Lxts_enc_ret |
+ |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vand 11,11,10 |
+ vxor 8,8,11 |
+ |
+ vperm 8,8,8,6 |
+ .long 0x7D004799 |
+ |
+Lxts_enc_ret: |
+ mtspr 256,12 |
+ li 3,0 |
+ blr |
+.long 0 |
+.byte 0,12,0x04,0,0x80,6,6,0 |
+.long 0 |
+ |
+ |
+.globl aes_hw_xts_decrypt |
+.align 5 |
+aes_hw_xts_decrypt: |
+ mr 10,3 |
+ li 3,-1 |
+ cmpldi 5,16 |
+ bclr 14,0 |
+ |
+ lis 0,0xfff8 |
+ mfspr 12,256 |
+ li 11,0 |
+ mtspr 256,0 |
+ |
+ andi. 0,5,15 |
+ neg 0,0 |
+ andi. 0,0,16 |
+ sub 5,5,0 |
+ |
+ vspltisb 9,0x07 |
+ lvsl 6,11,11 |
+ vspltisb 11,0x0f |
+ vxor 6,6,9 |
+ |
+ li 3,15 |
+ lvx 8,0,8 |
+ lvsl 5,0,8 |
+ lvx 4,3,8 |
+ vxor 5,5,11 |
+ vperm 8,8,4,5 |
+ |
+ neg 11,10 |
+ lvsr 5,0,11 |
+ lvx 2,0,10 |
+ addi 10,10,15 |
+ vxor 5,5,11 |
+ |
+ cmpldi 7,0 |
+ beq Lxts_dec_no_key2 |
+ |
+ lvsr 7,0,7 |
+ lwz 9,240(7) |
+ srwi 9,9,1 |
+ subi 9,9,1 |
+ li 3,16 |
+ |
+ lvx 0,0,7 |
+ lvx 1,3,7 |
+ addi 3,3,16 |
+ vperm 0,1,0,7 |
+ vxor 8,8,0 |
+ lvx 0,3,7 |
+ addi 3,3,16 |
+ mtctr 9 |
+ |
+Ltweak_xts_dec: |
+ vperm 1,0,1,7 |
+ .long 0x11080D08 |
+ lvx 1,3,7 |
+ addi 3,3,16 |
+ vperm 0,1,0,7 |
+ .long 0x11080508 |
+ lvx 0,3,7 |
+ addi 3,3,16 |
+ bc 16,0,Ltweak_xts_dec |
+ |
+ vperm 1,0,1,7 |
+ .long 0x11080D08 |
+ lvx 1,3,7 |
+ vperm 0,1,0,7 |
+ .long 0x11080509 |
+ |
+ li 8,0 |
+ b Lxts_dec |
+ |
+Lxts_dec_no_key2: |
+ neg 3,5 |
+ andi. 3,3,15 |
+ add 5,5,3 |
+ |
+ |
+Lxts_dec: |
+ lvx 4,0,10 |
+ addi 10,10,16 |
+ |
+ lvsr 7,0,6 |
+ lwz 9,240(6) |
+ srwi 9,9,1 |
+ subi 9,9,1 |
+ li 3,16 |
+ |
+ vslb 10,9,9 |
+ vor 10,10,9 |
+ vspltisb 11,1 |
+ vsldoi 10,10,11,15 |
+ |
+ cmpldi 5,96 |
+ bge _aesp8_xts_decrypt6x |
+ |
+ lvx 0,0,6 |
+ lvx 1,3,6 |
+ addi 3,3,16 |
+ vperm 2,2,4,5 |
+ vperm 0,1,0,7 |
+ vxor 2,2,8 |
+ vxor 2,2,0 |
+ lvx 0,3,6 |
+ addi 3,3,16 |
+ mtctr 9 |
+ |
+ cmpldi 5,16 |
+ blt Ltail_xts_dec |
+ |
+ |
+.align 5 |
+Loop_xts_dec: |
+ vperm 1,0,1,7 |
+ .long 0x10420D48 |
+ lvx 1,3,6 |
+ addi 3,3,16 |
+ vperm 0,1,0,7 |
+ .long 0x10420548 |
+ lvx 0,3,6 |
+ addi 3,3,16 |
+ bc 16,0,Loop_xts_dec |
+ |
+ vperm 1,0,1,7 |
+ .long 0x10420D48 |
+ lvx 1,3,6 |
+ li 3,16 |
+ vperm 0,1,0,7 |
+ vxor 0,0,8 |
+ .long 0x10620549 |
+ |
+ vperm 11,3,3,6 |
+ |
+ .long 0x7D602799 |
+ |
+ addi 4,4,16 |
+ |
+ subic. 5,5,16 |
+ beq Lxts_dec_done |
+ |
+ vor 2,4,4 |
+ lvx 4,0,10 |
+ addi 10,10,16 |
+ lvx 0,0,6 |
+ lvx 1,3,6 |
+ addi 3,3,16 |
+ |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vand 11,11,10 |
+ vxor 8,8,11 |
+ |
+ vperm 2,2,4,5 |
+ vperm 0,1,0,7 |
+ vxor 2,2,8 |
+ vxor 2,2,0 |
+ lvx 0,3,6 |
+ addi 3,3,16 |
+ |
+ mtctr 9 |
+ cmpldi 5,16 |
+ bge Loop_xts_dec |
+ |
+Ltail_xts_dec: |
+ vsrab 11,8,9 |
+ vaddubm 12,8,8 |
+ vsldoi 11,11,11,15 |
+ vand 11,11,10 |
+ vxor 12,12,11 |
+ |
+ subi 10,10,16 |
+ add 10,10,5 |
+ |
+ vxor 2,2,8 |
+ vxor 2,2,12 |
+ |
+Loop_xts_dec_short: |
+ vperm 1,0,1,7 |
+ .long 0x10420D48 |
+ lvx 1,3,6 |
+ addi 3,3,16 |
+ vperm 0,1,0,7 |
+ .long 0x10420548 |
+ lvx 0,3,6 |
+ addi 3,3,16 |
+ bc 16,0,Loop_xts_dec_short |
+ |
+ vperm 1,0,1,7 |
+ .long 0x10420D48 |
+ lvx 1,3,6 |
+ li 3,16 |
+ vperm 0,1,0,7 |
+ vxor 0,0,12 |
+ .long 0x10620549 |
+ |
+ vperm 11,3,3,6 |
+ |
+ .long 0x7D602799 |
+ |
+ |
+ vor 2,4,4 |
+ lvx 4,0,10 |
+ |
+ lvx 0,0,6 |
+ lvx 1,3,6 |
+ addi 3,3,16 |
+ vperm 2,2,4,5 |
+ vperm 0,1,0,7 |
+ |
+ lvsr 5,0,5 |
+ vxor 4,4,4 |
+ vspltisb 11,-1 |
+ vperm 4,4,11,5 |
+ vsel 2,2,3,4 |
+ |
+ vxor 0,0,8 |
+ vxor 2,2,0 |
+ lvx 0,3,6 |
+ addi 3,3,16 |
+ |
+ subi 11,4,1 |
+ mtctr 5 |
+ li 5,16 |
+Loop_xts_dec_steal: |
+ lbzu 0,1(11) |
+ stb 0,16(11) |
+ bc 16,0,Loop_xts_dec_steal |
+ |
+ mtctr 9 |
+ b Loop_xts_dec |
+ |
+Lxts_dec_done: |
+ cmpldi 8,0 |
+ beq Lxts_dec_ret |
+ |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vand 11,11,10 |
+ vxor 8,8,11 |
+ |
+ vperm 8,8,8,6 |
+ .long 0x7D004799 |
+ |
+Lxts_dec_ret: |
+ mtspr 256,12 |
+ li 3,0 |
+ blr |
+.long 0 |
+.byte 0,12,0x04,0,0x80,6,6,0 |
+.long 0 |
+ |
+.align 5 |
+_aesp8_xts_encrypt6x: |
+ stdu 1,-448(1) |
+ mflr 11 |
+ li 7,207 |
+ li 3,223 |
+ std 11,464(1) |
+ stvx 20,7,1 |
+ addi 7,7,32 |
+ stvx 21,3,1 |
+ addi 3,3,32 |
+ stvx 22,7,1 |
+ addi 7,7,32 |
+ stvx 23,3,1 |
+ addi 3,3,32 |
+ stvx 24,7,1 |
+ addi 7,7,32 |
+ stvx 25,3,1 |
+ addi 3,3,32 |
+ stvx 26,7,1 |
+ addi 7,7,32 |
+ stvx 27,3,1 |
+ addi 3,3,32 |
+ stvx 28,7,1 |
+ addi 7,7,32 |
+ stvx 29,3,1 |
+ addi 3,3,32 |
+ stvx 30,7,1 |
+ stvx 31,3,1 |
+ li 0,-1 |
+ stw 12,396(1) |
+ li 3,0x10 |
+ std 26,400(1) |
+ li 26,0x20 |
+ std 27,408(1) |
+ li 27,0x30 |
+ std 28,416(1) |
+ li 28,0x40 |
+ std 29,424(1) |
+ li 29,0x50 |
+ std 30,432(1) |
+ li 30,0x60 |
+ std 31,440(1) |
+ li 31,0x70 |
+ mtspr 256,0 |
+ |
+ subi 9,9,3 |
+ |
+ lvx 23,0,6 |
+ lvx 30,3,6 |
+ addi 6,6,0x20 |
+ lvx 31,0,6 |
+ vperm 23,30,23,7 |
+ addi 7,1,64+15 |
+ mtctr 9 |
+ |
+Load_xts_enc_key: |
+ vperm 24,31,30,7 |
+ lvx 30,3,6 |
+ addi 6,6,0x20 |
+ stvx 24,0,7 |
+ vperm 25,30,31,7 |
+ lvx 31,0,6 |
+ stvx 25,3,7 |
+ addi 7,7,0x20 |
+ bc 16,0,Load_xts_enc_key |
+ |
+ lvx 26,3,6 |
+ vperm 24,31,30,7 |
+ lvx 27,26,6 |
+ stvx 24,0,7 |
+ vperm 25,26,31,7 |
+ lvx 28,27,6 |
+ stvx 25,3,7 |
+ addi 7,1,64+15 |
+ vperm 26,27,26,7 |
+ lvx 29,28,6 |
+ vperm 27,28,27,7 |
+ lvx 30,29,6 |
+ vperm 28,29,28,7 |
+ lvx 31,30,6 |
+ vperm 29,30,29,7 |
+ lvx 22,31,6 |
+ vperm 30,31,30,7 |
+ lvx 24,0,7 |
+ vperm 31,22,31,7 |
+ lvx 25,3,7 |
+ |
+ vperm 0,2,4,5 |
+ subi 10,10,31 |
+ vxor 17,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vand 11,11,10 |
+ vxor 7,0,17 |
+ vxor 8,8,11 |
+ |
+ .long 0x7C235699 |
+ vxor 18,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vperm 1,1,1,6 |
+ vand 11,11,10 |
+ vxor 12,1,18 |
+ vxor 8,8,11 |
+ |
+ .long 0x7C5A5699 |
+ andi. 31,5,15 |
+ vxor 19,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vperm 2,2,2,6 |
+ vand 11,11,10 |
+ vxor 13,2,19 |
+ vxor 8,8,11 |
+ |
+ .long 0x7C7B5699 |
+ sub 5,5,31 |
+ vxor 20,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vperm 3,3,3,6 |
+ vand 11,11,10 |
+ vxor 14,3,20 |
+ vxor 8,8,11 |
+ |
+ .long 0x7C9C5699 |
+ subi 5,5,0x60 |
+ vxor 21,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vperm 4,4,4,6 |
+ vand 11,11,10 |
+ vxor 15,4,21 |
+ vxor 8,8,11 |
+ |
+ .long 0x7CBD5699 |
+ addi 10,10,0x60 |
+ vxor 22,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vperm 5,5,5,6 |
+ vand 11,11,10 |
+ vxor 16,5,22 |
+ vxor 8,8,11 |
+ |
+ vxor 31,31,23 |
+ mtctr 9 |
+ b Loop_xts_enc6x |
+ |
+.align 5 |
+Loop_xts_enc6x: |
+ .long 0x10E7C508 |
+ .long 0x118CC508 |
+ .long 0x11ADC508 |
+ .long 0x11CEC508 |
+ .long 0x11EFC508 |
+ .long 0x1210C508 |
+ lvx 24,26,7 |
+ addi 7,7,0x20 |
+ |
+ .long 0x10E7CD08 |
+ .long 0x118CCD08 |
+ .long 0x11ADCD08 |
+ .long 0x11CECD08 |
+ .long 0x11EFCD08 |
+ .long 0x1210CD08 |
+ lvx 25,3,7 |
+ bc 16,0,Loop_xts_enc6x |
+ |
+ subic 5,5,96 |
+ vxor 0,17,31 |
+ .long 0x10E7C508 |
+ .long 0x118CC508 |
+ vsrab 11,8,9 |
+ vxor 17,8,23 |
+ vaddubm 8,8,8 |
+ .long 0x11ADC508 |
+ .long 0x11CEC508 |
+ vsldoi 11,11,11,15 |
+ .long 0x11EFC508 |
+ .long 0x1210C508 |
+ |
+ subfe. 0,0,0 |
+ vand 11,11,10 |
+ .long 0x10E7CD08 |
+ .long 0x118CCD08 |
+ vxor 8,8,11 |
+ .long 0x11ADCD08 |
+ .long 0x11CECD08 |
+ vxor 1,18,31 |
+ vsrab 11,8,9 |
+ vxor 18,8,23 |
+ .long 0x11EFCD08 |
+ .long 0x1210CD08 |
+ |
+ and 0,0,5 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ .long 0x10E7D508 |
+ .long 0x118CD508 |
+ vand 11,11,10 |
+ .long 0x11ADD508 |
+ .long 0x11CED508 |
+ vxor 8,8,11 |
+ .long 0x11EFD508 |
+ .long 0x1210D508 |
+ |
+ add 10,10,0 |
+ |
+ |
+ |
+ vxor 2,19,31 |
+ vsrab 11,8,9 |
+ vxor 19,8,23 |
+ vaddubm 8,8,8 |
+ .long 0x10E7DD08 |
+ .long 0x118CDD08 |
+ vsldoi 11,11,11,15 |
+ .long 0x11ADDD08 |
+ .long 0x11CEDD08 |
+ vand 11,11,10 |
+ .long 0x11EFDD08 |
+ .long 0x1210DD08 |
+ |
+ addi 7,1,64+15 |
+ vxor 8,8,11 |
+ .long 0x10E7E508 |
+ .long 0x118CE508 |
+ vxor 3,20,31 |
+ vsrab 11,8,9 |
+ vxor 20,8,23 |
+ .long 0x11ADE508 |
+ .long 0x11CEE508 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ .long 0x11EFE508 |
+ .long 0x1210E508 |
+ lvx 24,0,7 |
+ vand 11,11,10 |
+ |
+ .long 0x10E7ED08 |
+ .long 0x118CED08 |
+ vxor 8,8,11 |
+ .long 0x11ADED08 |
+ .long 0x11CEED08 |
+ vxor 4,21,31 |
+ vsrab 11,8,9 |
+ vxor 21,8,23 |
+ .long 0x11EFED08 |
+ .long 0x1210ED08 |
+ lvx 25,3,7 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ |
+ .long 0x10E7F508 |
+ .long 0x118CF508 |
+ vand 11,11,10 |
+ .long 0x11ADF508 |
+ .long 0x11CEF508 |
+ vxor 8,8,11 |
+ .long 0x11EFF508 |
+ .long 0x1210F508 |
+ vxor 5,22,31 |
+ vsrab 11,8,9 |
+ vxor 22,8,23 |
+ |
+ .long 0x10E70509 |
+ .long 0x7C005699 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ .long 0x118C0D09 |
+ .long 0x7C235699 |
+ .long 0x11AD1509 |
+ vperm 0,0,0,6 |
+ .long 0x7C5A5699 |
+ vand 11,11,10 |
+ .long 0x11CE1D09 |
+ vperm 1,1,1,6 |
+ .long 0x7C7B5699 |
+ .long 0x11EF2509 |
+ vperm 2,2,2,6 |
+ .long 0x7C9C5699 |
+ vxor 8,8,11 |
+ .long 0x11702D09 |
+ |
+ vperm 3,3,3,6 |
+ .long 0x7CBD5699 |
+ addi 10,10,0x60 |
+ vperm 4,4,4,6 |
+ vperm 5,5,5,6 |
+ |
+ vperm 7,7,7,6 |
+ vperm 12,12,12,6 |
+ .long 0x7CE02799 |
+ vxor 7,0,17 |
+ vperm 13,13,13,6 |
+ .long 0x7D832799 |
+ vxor 12,1,18 |
+ vperm 14,14,14,6 |
+ .long 0x7DBA2799 |
+ vxor 13,2,19 |
+ vperm 15,15,15,6 |
+ .long 0x7DDB2799 |
+ vxor 14,3,20 |
+ vperm 16,11,11,6 |
+ .long 0x7DFC2799 |
+ vxor 15,4,21 |
+ .long 0x7E1D2799 |
+ |
+ vxor 16,5,22 |
+ addi 4,4,0x60 |
+ |
+ mtctr 9 |
+ beq Loop_xts_enc6x |
+ |
+ addic. 5,5,0x60 |
+ beq Lxts_enc6x_zero |
+ cmpwi 5,0x20 |
+ blt Lxts_enc6x_one |
+ nop |
+ beq Lxts_enc6x_two |
+ cmpwi 5,0x40 |
+ blt Lxts_enc6x_three |
+ nop |
+ beq Lxts_enc6x_four |
+ |
+Lxts_enc6x_five: |
+ vxor 7,1,17 |
+ vxor 12,2,18 |
+ vxor 13,3,19 |
+ vxor 14,4,20 |
+ vxor 15,5,21 |
+ |
+ bl _aesp8_xts_enc5x |
+ |
+ vperm 7,7,7,6 |
+ vor 17,22,22 |
+ vperm 12,12,12,6 |
+ .long 0x7CE02799 |
+ vperm 13,13,13,6 |
+ .long 0x7D832799 |
+ vperm 14,14,14,6 |
+ .long 0x7DBA2799 |
+ vxor 11,15,22 |
+ vperm 15,15,15,6 |
+ .long 0x7DDB2799 |
+ .long 0x7DFC2799 |
+ addi 4,4,0x50 |
+ bne Lxts_enc6x_steal |
+ b Lxts_enc6x_done |
+ |
+.align 4 |
+Lxts_enc6x_four: |
+ vxor 7,2,17 |
+ vxor 12,3,18 |
+ vxor 13,4,19 |
+ vxor 14,5,20 |
+ vxor 15,15,15 |
+ |
+ bl _aesp8_xts_enc5x |
+ |
+ vperm 7,7,7,6 |
+ vor 17,21,21 |
+ vperm 12,12,12,6 |
+ .long 0x7CE02799 |
+ vperm 13,13,13,6 |
+ .long 0x7D832799 |
+ vxor 11,14,21 |
+ vperm 14,14,14,6 |
+ .long 0x7DBA2799 |
+ .long 0x7DDB2799 |
+ addi 4,4,0x40 |
+ bne Lxts_enc6x_steal |
+ b Lxts_enc6x_done |
+ |
+.align 4 |
+Lxts_enc6x_three: |
+ vxor 7,3,17 |
+ vxor 12,4,18 |
+ vxor 13,5,19 |
+ vxor 14,14,14 |
+ vxor 15,15,15 |
+ |
+ bl _aesp8_xts_enc5x |
+ |
+ vperm 7,7,7,6 |
+ vor 17,20,20 |
+ vperm 12,12,12,6 |
+ .long 0x7CE02799 |
+ vxor 11,13,20 |
+ vperm 13,13,13,6 |
+ .long 0x7D832799 |
+ .long 0x7DBA2799 |
+ addi 4,4,0x30 |
+ bne Lxts_enc6x_steal |
+ b Lxts_enc6x_done |
+ |
+.align 4 |
+Lxts_enc6x_two: |
+ vxor 7,4,17 |
+ vxor 12,5,18 |
+ vxor 13,13,13 |
+ vxor 14,14,14 |
+ vxor 15,15,15 |
+ |
+ bl _aesp8_xts_enc5x |
+ |
+ vperm 7,7,7,6 |
+ vor 17,19,19 |
+ vxor 11,12,19 |
+ vperm 12,12,12,6 |
+ .long 0x7CE02799 |
+ .long 0x7D832799 |
+ addi 4,4,0x20 |
+ bne Lxts_enc6x_steal |
+ b Lxts_enc6x_done |
+ |
+.align 4 |
+Lxts_enc6x_one: |
+ vxor 7,5,17 |
+ nop |
+Loop_xts_enc1x: |
+ .long 0x10E7C508 |
+ lvx 24,26,7 |
+ addi 7,7,0x20 |
+ |
+ .long 0x10E7CD08 |
+ lvx 25,3,7 |
+ bc 16,0,Loop_xts_enc1x |
+ |
+ add 10,10,31 |
+ cmpwi 31,0 |
+ .long 0x10E7C508 |
+ |
+ subi 10,10,16 |
+ .long 0x10E7CD08 |
+ |
+ lvsr 5,0,31 |
+ .long 0x10E7D508 |
+ |
+ .long 0x7C005699 |
+ .long 0x10E7DD08 |
+ |
+ addi 7,1,64+15 |
+ .long 0x10E7E508 |
+ lvx 24,0,7 |
+ |
+ .long 0x10E7ED08 |
+ lvx 25,3,7 |
+ vxor 17,17,31 |
+ |
+ vperm 0,0,0,6 |
+ .long 0x10E7F508 |
+ |
+ vperm 0,0,0,5 |
+ .long 0x10E78D09 |
+ |
+ vor 17,18,18 |
+ vxor 11,7,18 |
+ vperm 7,7,7,6 |
+ .long 0x7CE02799 |
+ addi 4,4,0x10 |
+ bne Lxts_enc6x_steal |
+ b Lxts_enc6x_done |
+ |
+.align 4 |
+Lxts_enc6x_zero: |
+ cmpwi 31,0 |
+ beq Lxts_enc6x_done |
+ |
+ add 10,10,31 |
+ subi 10,10,16 |
+ .long 0x7C005699 |
+ lvsr 5,0,31 |
+ vperm 0,0,0,6 |
+ vperm 0,0,0,5 |
+ vxor 11,11,17 |
+Lxts_enc6x_steal: |
+ vxor 0,0,17 |
+ vxor 7,7,7 |
+ vspltisb 12,-1 |
+ vperm 7,7,12,5 |
+ vsel 7,0,11,7 |
+ |
+ subi 30,4,17 |
+ subi 4,4,16 |
+ mtctr 31 |
+Loop_xts_enc6x_steal: |
+ lbzu 0,1(30) |
+ stb 0,16(30) |
+ bc 16,0,Loop_xts_enc6x_steal |
+ |
+ li 31,0 |
+ mtctr 9 |
+ b Loop_xts_enc1x |
+ |
+.align 4 |
+Lxts_enc6x_done: |
+ cmpldi 8,0 |
+ beq Lxts_enc6x_ret |
+ |
+ vxor 8,17,23 |
+ vperm 8,8,8,6 |
+ .long 0x7D004799 |
+ |
+Lxts_enc6x_ret: |
+ mtlr 11 |
+ li 10,79 |
+ li 11,95 |
+ stvx 9,10,1 |
+ addi 10,10,32 |
+ stvx 9,11,1 |
+ addi 11,11,32 |
+ stvx 9,10,1 |
+ addi 10,10,32 |
+ stvx 9,11,1 |
+ addi 11,11,32 |
+ stvx 9,10,1 |
+ addi 10,10,32 |
+ stvx 9,11,1 |
+ addi 11,11,32 |
+ stvx 9,10,1 |
+ addi 10,10,32 |
+ stvx 9,11,1 |
+ addi 11,11,32 |
+ |
+ mtspr 256,12 |
+ lvx 20,10,1 |
+ addi 10,10,32 |
+ lvx 21,11,1 |
+ addi 11,11,32 |
+ lvx 22,10,1 |
+ addi 10,10,32 |
+ lvx 23,11,1 |
+ addi 11,11,32 |
+ lvx 24,10,1 |
+ addi 10,10,32 |
+ lvx 25,11,1 |
+ addi 11,11,32 |
+ lvx 26,10,1 |
+ addi 10,10,32 |
+ lvx 27,11,1 |
+ addi 11,11,32 |
+ lvx 28,10,1 |
+ addi 10,10,32 |
+ lvx 29,11,1 |
+ addi 11,11,32 |
+ lvx 30,10,1 |
+ lvx 31,11,1 |
+ ld 26,400(1) |
+ ld 27,408(1) |
+ ld 28,416(1) |
+ ld 29,424(1) |
+ ld 30,432(1) |
+ ld 31,440(1) |
+ addi 1,1,448 |
+ blr |
+.long 0 |
+.byte 0,12,0x04,1,0x80,6,6,0 |
+.long 0 |
+ |
+.align 5 |
+_aesp8_xts_enc5x: |
+ .long 0x10E7C508 |
+ .long 0x118CC508 |
+ .long 0x11ADC508 |
+ .long 0x11CEC508 |
+ .long 0x11EFC508 |
+ lvx 24,26,7 |
+ addi 7,7,0x20 |
+ |
+ .long 0x10E7CD08 |
+ .long 0x118CCD08 |
+ .long 0x11ADCD08 |
+ .long 0x11CECD08 |
+ .long 0x11EFCD08 |
+ lvx 25,3,7 |
+ bc 16,0,_aesp8_xts_enc5x |
+ |
+ add 10,10,31 |
+ cmpwi 31,0 |
+ .long 0x10E7C508 |
+ .long 0x118CC508 |
+ .long 0x11ADC508 |
+ .long 0x11CEC508 |
+ .long 0x11EFC508 |
+ |
+ subi 10,10,16 |
+ .long 0x10E7CD08 |
+ .long 0x118CCD08 |
+ .long 0x11ADCD08 |
+ .long 0x11CECD08 |
+ .long 0x11EFCD08 |
+ vxor 17,17,31 |
+ |
+ .long 0x10E7D508 |
+ lvsr 5,0,31 |
+ .long 0x118CD508 |
+ .long 0x11ADD508 |
+ .long 0x11CED508 |
+ .long 0x11EFD508 |
+ vxor 1,18,31 |
+ |
+ .long 0x10E7DD08 |
+ .long 0x7C005699 |
+ .long 0x118CDD08 |
+ .long 0x11ADDD08 |
+ .long 0x11CEDD08 |
+ .long 0x11EFDD08 |
+ vxor 2,19,31 |
+ |
+ addi 7,1,64+15 |
+ .long 0x10E7E508 |
+ .long 0x118CE508 |
+ .long 0x11ADE508 |
+ .long 0x11CEE508 |
+ .long 0x11EFE508 |
+ lvx 24,0,7 |
+ vxor 3,20,31 |
+ |
+ .long 0x10E7ED08 |
+ vperm 0,0,0,6 |
+ .long 0x118CED08 |
+ .long 0x11ADED08 |
+ .long 0x11CEED08 |
+ .long 0x11EFED08 |
+ lvx 25,3,7 |
+ vxor 4,21,31 |
+ |
+ .long 0x10E7F508 |
+ vperm 0,0,0,5 |
+ .long 0x118CF508 |
+ .long 0x11ADF508 |
+ .long 0x11CEF508 |
+ .long 0x11EFF508 |
+ |
+ .long 0x10E78D09 |
+ .long 0x118C0D09 |
+ .long 0x11AD1509 |
+ .long 0x11CE1D09 |
+ .long 0x11EF2509 |
+ blr |
+.long 0 |
+.byte 0,12,0x14,0,0,0,0,0 |
+ |
+.align 5 |
+_aesp8_xts_decrypt6x: |
+ stdu 1,-448(1) |
+ mflr 11 |
+ li 7,207 |
+ li 3,223 |
+ std 11,464(1) |
+ stvx 20,7,1 |
+ addi 7,7,32 |
+ stvx 21,3,1 |
+ addi 3,3,32 |
+ stvx 22,7,1 |
+ addi 7,7,32 |
+ stvx 23,3,1 |
+ addi 3,3,32 |
+ stvx 24,7,1 |
+ addi 7,7,32 |
+ stvx 25,3,1 |
+ addi 3,3,32 |
+ stvx 26,7,1 |
+ addi 7,7,32 |
+ stvx 27,3,1 |
+ addi 3,3,32 |
+ stvx 28,7,1 |
+ addi 7,7,32 |
+ stvx 29,3,1 |
+ addi 3,3,32 |
+ stvx 30,7,1 |
+ stvx 31,3,1 |
+ li 0,-1 |
+ stw 12,396(1) |
+ li 3,0x10 |
+ std 26,400(1) |
+ li 26,0x20 |
+ std 27,408(1) |
+ li 27,0x30 |
+ std 28,416(1) |
+ li 28,0x40 |
+ std 29,424(1) |
+ li 29,0x50 |
+ std 30,432(1) |
+ li 30,0x60 |
+ std 31,440(1) |
+ li 31,0x70 |
+ mtspr 256,0 |
+ |
+ subi 9,9,3 |
+ |
+ lvx 23,0,6 |
+ lvx 30,3,6 |
+ addi 6,6,0x20 |
+ lvx 31,0,6 |
+ vperm 23,30,23,7 |
+ addi 7,1,64+15 |
+ mtctr 9 |
+ |
+Load_xts_dec_key: |
+ vperm 24,31,30,7 |
+ lvx 30,3,6 |
+ addi 6,6,0x20 |
+ stvx 24,0,7 |
+ vperm 25,30,31,7 |
+ lvx 31,0,6 |
+ stvx 25,3,7 |
+ addi 7,7,0x20 |
+ bc 16,0,Load_xts_dec_key |
+ |
+ lvx 26,3,6 |
+ vperm 24,31,30,7 |
+ lvx 27,26,6 |
+ stvx 24,0,7 |
+ vperm 25,26,31,7 |
+ lvx 28,27,6 |
+ stvx 25,3,7 |
+ addi 7,1,64+15 |
+ vperm 26,27,26,7 |
+ lvx 29,28,6 |
+ vperm 27,28,27,7 |
+ lvx 30,29,6 |
+ vperm 28,29,28,7 |
+ lvx 31,30,6 |
+ vperm 29,30,29,7 |
+ lvx 22,31,6 |
+ vperm 30,31,30,7 |
+ lvx 24,0,7 |
+ vperm 31,22,31,7 |
+ lvx 25,3,7 |
+ |
+ vperm 0,2,4,5 |
+ subi 10,10,31 |
+ vxor 17,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vand 11,11,10 |
+ vxor 7,0,17 |
+ vxor 8,8,11 |
+ |
+ .long 0x7C235699 |
+ vxor 18,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vperm 1,1,1,6 |
+ vand 11,11,10 |
+ vxor 12,1,18 |
+ vxor 8,8,11 |
+ |
+ .long 0x7C5A5699 |
+ andi. 31,5,15 |
+ vxor 19,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vperm 2,2,2,6 |
+ vand 11,11,10 |
+ vxor 13,2,19 |
+ vxor 8,8,11 |
+ |
+ .long 0x7C7B5699 |
+ sub 5,5,31 |
+ vxor 20,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vperm 3,3,3,6 |
+ vand 11,11,10 |
+ vxor 14,3,20 |
+ vxor 8,8,11 |
+ |
+ .long 0x7C9C5699 |
+ subi 5,5,0x60 |
+ vxor 21,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vperm 4,4,4,6 |
+ vand 11,11,10 |
+ vxor 15,4,21 |
+ vxor 8,8,11 |
+ |
+ .long 0x7CBD5699 |
+ addi 10,10,0x60 |
+ vxor 22,8,23 |
+ vsrab 11,8,9 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ vperm 5,5,5,6 |
+ vand 11,11,10 |
+ vxor 16,5,22 |
+ vxor 8,8,11 |
+ |
+ vxor 31,31,23 |
+ mtctr 9 |
+ b Loop_xts_dec6x |
+ |
+.align 5 |
+Loop_xts_dec6x: |
+ .long 0x10E7C548 |
+ .long 0x118CC548 |
+ .long 0x11ADC548 |
+ .long 0x11CEC548 |
+ .long 0x11EFC548 |
+ .long 0x1210C548 |
+ lvx 24,26,7 |
+ addi 7,7,0x20 |
+ |
+ .long 0x10E7CD48 |
+ .long 0x118CCD48 |
+ .long 0x11ADCD48 |
+ .long 0x11CECD48 |
+ .long 0x11EFCD48 |
+ .long 0x1210CD48 |
+ lvx 25,3,7 |
+ bc 16,0,Loop_xts_dec6x |
+ |
+ subic 5,5,96 |
+ vxor 0,17,31 |
+ .long 0x10E7C548 |
+ .long 0x118CC548 |
+ vsrab 11,8,9 |
+ vxor 17,8,23 |
+ vaddubm 8,8,8 |
+ .long 0x11ADC548 |
+ .long 0x11CEC548 |
+ vsldoi 11,11,11,15 |
+ .long 0x11EFC548 |
+ .long 0x1210C548 |
+ |
+ subfe. 0,0,0 |
+ vand 11,11,10 |
+ .long 0x10E7CD48 |
+ .long 0x118CCD48 |
+ vxor 8,8,11 |
+ .long 0x11ADCD48 |
+ .long 0x11CECD48 |
+ vxor 1,18,31 |
+ vsrab 11,8,9 |
+ vxor 18,8,23 |
+ .long 0x11EFCD48 |
+ .long 0x1210CD48 |
+ |
+ and 0,0,5 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ .long 0x10E7D548 |
+ .long 0x118CD548 |
+ vand 11,11,10 |
+ .long 0x11ADD548 |
+ .long 0x11CED548 |
+ vxor 8,8,11 |
+ .long 0x11EFD548 |
+ .long 0x1210D548 |
+ |
+ add 10,10,0 |
+ |
+ |
+ |
+ vxor 2,19,31 |
+ vsrab 11,8,9 |
+ vxor 19,8,23 |
+ vaddubm 8,8,8 |
+ .long 0x10E7DD48 |
+ .long 0x118CDD48 |
+ vsldoi 11,11,11,15 |
+ .long 0x11ADDD48 |
+ .long 0x11CEDD48 |
+ vand 11,11,10 |
+ .long 0x11EFDD48 |
+ .long 0x1210DD48 |
+ |
+ addi 7,1,64+15 |
+ vxor 8,8,11 |
+ .long 0x10E7E548 |
+ .long 0x118CE548 |
+ vxor 3,20,31 |
+ vsrab 11,8,9 |
+ vxor 20,8,23 |
+ .long 0x11ADE548 |
+ .long 0x11CEE548 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ .long 0x11EFE548 |
+ .long 0x1210E548 |
+ lvx 24,0,7 |
+ vand 11,11,10 |
+ |
+ .long 0x10E7ED48 |
+ .long 0x118CED48 |
+ vxor 8,8,11 |
+ .long 0x11ADED48 |
+ .long 0x11CEED48 |
+ vxor 4,21,31 |
+ vsrab 11,8,9 |
+ vxor 21,8,23 |
+ .long 0x11EFED48 |
+ .long 0x1210ED48 |
+ lvx 25,3,7 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ |
+ .long 0x10E7F548 |
+ .long 0x118CF548 |
+ vand 11,11,10 |
+ .long 0x11ADF548 |
+ .long 0x11CEF548 |
+ vxor 8,8,11 |
+ .long 0x11EFF548 |
+ .long 0x1210F548 |
+ vxor 5,22,31 |
+ vsrab 11,8,9 |
+ vxor 22,8,23 |
+ |
+ .long 0x10E70549 |
+ .long 0x7C005699 |
+ vaddubm 8,8,8 |
+ vsldoi 11,11,11,15 |
+ .long 0x118C0D49 |
+ .long 0x7C235699 |
+ .long 0x11AD1549 |
+ vperm 0,0,0,6 |
+ .long 0x7C5A5699 |
+ vand 11,11,10 |
+ .long 0x11CE1D49 |
+ vperm 1,1,1,6 |
+ .long 0x7C7B5699 |
+ .long 0x11EF2549 |
+ vperm 2,2,2,6 |
+ .long 0x7C9C5699 |
+ vxor 8,8,11 |
+ .long 0x12102D49 |
+ vperm 3,3,3,6 |
+ .long 0x7CBD5699 |
+ addi 10,10,0x60 |
+ vperm 4,4,4,6 |
+ vperm 5,5,5,6 |
+ |
+ vperm 7,7,7,6 |
+ vperm 12,12,12,6 |
+ .long 0x7CE02799 |
+ vxor 7,0,17 |
+ vperm 13,13,13,6 |
+ .long 0x7D832799 |
+ vxor 12,1,18 |
+ vperm 14,14,14,6 |
+ .long 0x7DBA2799 |
+ vxor 13,2,19 |
+ vperm 15,15,15,6 |
+ .long 0x7DDB2799 |
+ vxor 14,3,20 |
+ vperm 16,16,16,6 |
+ .long 0x7DFC2799 |
+ vxor 15,4,21 |
+ .long 0x7E1D2799 |
+ vxor 16,5,22 |
+ addi 4,4,0x60 |
+ |
+ mtctr 9 |
+ beq Loop_xts_dec6x |
+ |
+ addic. 5,5,0x60 |
+ beq Lxts_dec6x_zero |
+ cmpwi 5,0x20 |
+ blt Lxts_dec6x_one |
+ nop |
+ beq Lxts_dec6x_two |
+ cmpwi 5,0x40 |
+ blt Lxts_dec6x_three |
+ nop |
+ beq Lxts_dec6x_four |
+ |
+Lxts_dec6x_five: |
+ vxor 7,1,17 |
+ vxor 12,2,18 |
+ vxor 13,3,19 |
+ vxor 14,4,20 |
+ vxor 15,5,21 |
+ |
+ bl _aesp8_xts_dec5x |
+ |
+ vperm 7,7,7,6 |
+ vor 17,22,22 |
+ vxor 18,8,23 |
+ vperm 12,12,12,6 |
+ .long 0x7CE02799 |
+ vxor 7,0,18 |
+ vperm 13,13,13,6 |
+ .long 0x7D832799 |
+ vperm 14,14,14,6 |
+ .long 0x7DBA2799 |
+ vperm 15,15,15,6 |
+ .long 0x7DDB2799 |
+ .long 0x7DFC2799 |
+ addi 4,4,0x50 |
+ bne Lxts_dec6x_steal |
+ b Lxts_dec6x_done |
+ |
+.align 4 |
+Lxts_dec6x_four: |
+ vxor 7,2,17 |
+ vxor 12,3,18 |
+ vxor 13,4,19 |
+ vxor 14,5,20 |
+ vxor 15,15,15 |
+ |
+ bl _aesp8_xts_dec5x |
+ |
+ vperm 7,7,7,6 |
+ vor 17,21,21 |
+ vor 18,22,22 |
+ vperm 12,12,12,6 |
+ .long 0x7CE02799 |
+ vxor 7,0,22 |
+ vperm 13,13,13,6 |
+ .long 0x7D832799 |
+ vperm 14,14,14,6 |
+ .long 0x7DBA2799 |
+ .long 0x7DDB2799 |
+ addi 4,4,0x40 |
+ bne Lxts_dec6x_steal |
+ b Lxts_dec6x_done |
+ |
+.align 4 |
+Lxts_dec6x_three: |
+ vxor 7,3,17 |
+ vxor 12,4,18 |
+ vxor 13,5,19 |
+ vxor 14,14,14 |
+ vxor 15,15,15 |
+ |
+ bl _aesp8_xts_dec5x |
+ |
+ vperm 7,7,7,6 |
+ vor 17,20,20 |
+ vor 18,21,21 |
+ vperm 12,12,12,6 |
+ .long 0x7CE02799 |
+ vxor 7,0,21 |
+ vperm 13,13,13,6 |
+ .long 0x7D832799 |
+ .long 0x7DBA2799 |
+ addi 4,4,0x30 |
+ bne Lxts_dec6x_steal |
+ b Lxts_dec6x_done |
+ |
+.align 4 |
+Lxts_dec6x_two: |
+ vxor 7,4,17 |
+ vxor 12,5,18 |
+ vxor 13,13,13 |
+ vxor 14,14,14 |
+ vxor 15,15,15 |
+ |
+ bl _aesp8_xts_dec5x |
+ |
+ vperm 7,7,7,6 |
+ vor 17,19,19 |
+ vor 18,20,20 |
+ vperm 12,12,12,6 |
+ .long 0x7CE02799 |
+ vxor 7,0,20 |
+ .long 0x7D832799 |
+ addi 4,4,0x20 |
+ bne Lxts_dec6x_steal |
+ b Lxts_dec6x_done |
+ |
+.align 4 |
+Lxts_dec6x_one: |
+ vxor 7,5,17 |
+ nop |
+Loop_xts_dec1x: |
+ .long 0x10E7C548 |
+ lvx 24,26,7 |
+ addi 7,7,0x20 |
+ |
+ .long 0x10E7CD48 |
+ lvx 25,3,7 |
+ bc 16,0,Loop_xts_dec1x |
+ |
+ subi 0,31,1 |
+ .long 0x10E7C548 |
+ |
+ andi. 0,0,16 |
+ cmpwi 31,0 |
+ .long 0x10E7CD48 |
+ |
+ sub 10,10,0 |
+ .long 0x10E7D548 |
+ |
+ .long 0x7C005699 |
+ .long 0x10E7DD48 |
+ |
+ addi 7,1,64+15 |
+ .long 0x10E7E548 |
+ lvx 24,0,7 |
+ |
+ .long 0x10E7ED48 |
+ lvx 25,3,7 |
+ vxor 17,17,31 |
+ |
+ vperm 0,0,0,6 |
+ .long 0x10E7F548 |
+ |
+ mtctr 9 |
+ .long 0x10E78D49 |
+ |
+ vor 17,18,18 |
+ vor 18,19,19 |
+ vperm 7,7,7,6 |
+ .long 0x7CE02799 |
+ addi 4,4,0x10 |
+ vxor 7,0,19 |
+ bne Lxts_dec6x_steal |
+ b Lxts_dec6x_done |
+ |
+.align 4 |
+Lxts_dec6x_zero: |
+ cmpwi 31,0 |
+ beq Lxts_dec6x_done |
+ |
+ .long 0x7C005699 |
+ vperm 0,0,0,6 |
+ vxor 7,0,18 |
+Lxts_dec6x_steal: |
+ .long 0x10E7C548 |
+ lvx 24,26,7 |
+ addi 7,7,0x20 |
+ |
+ .long 0x10E7CD48 |
+ lvx 25,3,7 |
+ bc 16,0,Lxts_dec6x_steal |
+ |
+ add 10,10,31 |
+ .long 0x10E7C548 |
+ |
+ cmpwi 31,0 |
+ .long 0x10E7CD48 |
+ |
+ .long 0x7C005699 |
+ .long 0x10E7D548 |
+ |
+ lvsr 5,0,31 |
+ .long 0x10E7DD48 |
+ |
+ addi 7,1,64+15 |
+ .long 0x10E7E548 |
+ lvx 24,0,7 |
+ |
+ .long 0x10E7ED48 |
+ lvx 25,3,7 |
+ vxor 18,18,31 |
+ |
+ vperm 0,0,0,6 |
+ .long 0x10E7F548 |
+ |
+ vperm 0,0,0,5 |
+ .long 0x11679549 |
+ |
+ vperm 7,11,11,6 |
+ .long 0x7CE02799 |
+ |
+ |
+ vxor 7,7,7 |
+ vspltisb 12,-1 |
+ vperm 7,7,12,5 |
+ vsel 7,0,11,7 |
+ vxor 7,7,17 |
+ |
+ subi 30,4,1 |
+ mtctr 31 |
+Loop_xts_dec6x_steal: |
+ lbzu 0,1(30) |
+ stb 0,16(30) |
+ bc 16,0,Loop_xts_dec6x_steal |
+ |
+ li 31,0 |
+ mtctr 9 |
+ b Loop_xts_dec1x |
+ |
+.align 4 |
+Lxts_dec6x_done: |
+ cmpldi 8,0 |
+ beq Lxts_dec6x_ret |
+ |
+ vxor 8,17,23 |
+ vperm 8,8,8,6 |
+ .long 0x7D004799 |
+ |
+Lxts_dec6x_ret: |
+ mtlr 11 |
+ li 10,79 |
+ li 11,95 |
+ stvx 9,10,1 |
+ addi 10,10,32 |
+ stvx 9,11,1 |
+ addi 11,11,32 |
+ stvx 9,10,1 |
+ addi 10,10,32 |
+ stvx 9,11,1 |
+ addi 11,11,32 |
+ stvx 9,10,1 |
+ addi 10,10,32 |
+ stvx 9,11,1 |
+ addi 11,11,32 |
+ stvx 9,10,1 |
+ addi 10,10,32 |
+ stvx 9,11,1 |
+ addi 11,11,32 |
+ |
+ mtspr 256,12 |
+ lvx 20,10,1 |
+ addi 10,10,32 |
+ lvx 21,11,1 |
+ addi 11,11,32 |
+ lvx 22,10,1 |
+ addi 10,10,32 |
+ lvx 23,11,1 |
+ addi 11,11,32 |
+ lvx 24,10,1 |
+ addi 10,10,32 |
+ lvx 25,11,1 |
+ addi 11,11,32 |
+ lvx 26,10,1 |
+ addi 10,10,32 |
+ lvx 27,11,1 |
+ addi 11,11,32 |
+ lvx 28,10,1 |
+ addi 10,10,32 |
+ lvx 29,11,1 |
+ addi 11,11,32 |
+ lvx 30,10,1 |
+ lvx 31,11,1 |
+ ld 26,400(1) |
+ ld 27,408(1) |
+ ld 28,416(1) |
+ ld 29,424(1) |
+ ld 30,432(1) |
+ ld 31,440(1) |
+ addi 1,1,448 |
+ blr |
+.long 0 |
+.byte 0,12,0x04,1,0x80,6,6,0 |
+.long 0 |
+ |
+.align 5 |
+_aesp8_xts_dec5x: |
+ .long 0x10E7C548 |
+ .long 0x118CC548 |
+ .long 0x11ADC548 |
+ .long 0x11CEC548 |
+ .long 0x11EFC548 |
+ lvx 24,26,7 |
+ addi 7,7,0x20 |
+ |
+ .long 0x10E7CD48 |
+ .long 0x118CCD48 |
+ .long 0x11ADCD48 |
+ .long 0x11CECD48 |
+ .long 0x11EFCD48 |
+ lvx 25,3,7 |
+ bc 16,0,_aesp8_xts_dec5x |
+ |
+ subi 0,31,1 |
+ .long 0x10E7C548 |
+ .long 0x118CC548 |
+ .long 0x11ADC548 |
+ .long 0x11CEC548 |
+ .long 0x11EFC548 |
+ |
+ andi. 0,0,16 |
+ cmpwi 31,0 |
+ .long 0x10E7CD48 |
+ .long 0x118CCD48 |
+ .long 0x11ADCD48 |
+ .long 0x11CECD48 |
+ .long 0x11EFCD48 |
+ vxor 17,17,31 |
+ |
+ sub 10,10,0 |
+ .long 0x10E7D548 |
+ .long 0x118CD548 |
+ .long 0x11ADD548 |
+ .long 0x11CED548 |
+ .long 0x11EFD548 |
+ vxor 1,18,31 |
+ |
+ .long 0x10E7DD48 |
+ .long 0x7C005699 |
+ .long 0x118CDD48 |
+ .long 0x11ADDD48 |
+ .long 0x11CEDD48 |
+ .long 0x11EFDD48 |
+ vxor 2,19,31 |
+ |
+ addi 7,1,64+15 |
+ .long 0x10E7E548 |
+ .long 0x118CE548 |
+ .long 0x11ADE548 |
+ .long 0x11CEE548 |
+ .long 0x11EFE548 |
+ lvx 24,0,7 |
+ vxor 3,20,31 |
+ |
+ .long 0x10E7ED48 |
+ vperm 0,0,0,6 |
+ .long 0x118CED48 |
+ .long 0x11ADED48 |
+ .long 0x11CEED48 |
+ .long 0x11EFED48 |
+ lvx 25,3,7 |
+ vxor 4,21,31 |
+ |
+ .long 0x10E7F548 |
+ .long 0x118CF548 |
+ .long 0x11ADF548 |
+ .long 0x11CEF548 |
+ .long 0x11EFF548 |
+ |
+ .long 0x10E78D49 |
+ .long 0x118C0D49 |
+ .long 0x11AD1549 |
+ .long 0x11CE1D49 |
+ .long 0x11EF2549 |
+ mtctr 9 |
+ blr |
+.long 0 |
+.byte 0,12,0x14,0,0,0,0,0 |