| #if defined(__has_feature) |
| #if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)" |
| #define OPENSSL_NO_ASM" |
| #endif |
| #endif |
| |
| #if !defined(OPENSSL_NO_ASM) && defined(__powerpc64__) |
| .machine "any" |
| |
| .abiversion 2 |
| .text |
| |
| .align 7 |
| .Lrcon: |
| .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 |
| .type aes_hw_set_encrypt_key,@function |
| .align 5 |
| aes_hw_set_encrypt_key: |
| .localentry aes_hw_set_encrypt_key,0 |
| |
| .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 |
| li 12,-1 |
| or 0,0,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 |
| bdnz .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 |
| bdnz .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 |
| or 12,12,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 |
| .size aes_hw_set_encrypt_key,.-aes_hw_set_encrypt_key |
| |
| .globl aes_hw_set_decrypt_key |
| .type aes_hw_set_decrypt_key,@function |
| .align 5 |
| aes_hw_set_decrypt_key: |
| .localentry aes_hw_set_decrypt_key,0 |
| |
| stdu 1,-64(1) |
| mflr 10 |
| std 10,80(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) |
| bdnz .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 |
| .size aes_hw_set_decrypt_key,.-aes_hw_set_decrypt_key |
| .globl aes_hw_encrypt |
| .type aes_hw_encrypt,@function |
| .align 5 |
| aes_hw_encrypt: |
| .localentry aes_hw_encrypt,0 |
| |
| lwz 6,240(5) |
| lis 0,0xfc00 |
| li 12,-1 |
| li 7,15 |
| or 0,0,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 |
| bdnz .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 |
| |
| or 12,12,12 |
| blr |
| .long 0 |
| .byte 0,12,0x14,0,0,0,3,0 |
| .long 0 |
| .size aes_hw_encrypt,.-aes_hw_encrypt |
| .globl aes_hw_decrypt |
| .type aes_hw_decrypt,@function |
| .align 5 |
| aes_hw_decrypt: |
| .localentry aes_hw_decrypt,0 |
| |
| lwz 6,240(5) |
| lis 0,0xfc00 |
| li 12,-1 |
| li 7,15 |
| or 0,0,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 |
| bdnz .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 |
| |
| or 12,12,12 |
| blr |
| .long 0 |
| .byte 0,12,0x14,0,0,0,3,0 |
| .long 0 |
| .size aes_hw_decrypt,.-aes_hw_decrypt |
| .globl aes_hw_cbc_encrypt |
| .type aes_hw_cbc_encrypt,@function |
| .align 5 |
| aes_hw_cbc_encrypt: |
| .localentry aes_hw_cbc_encrypt,0 |
| |
| cmpldi 5,16 |
| .long 0x4dc00020 |
| |
| cmpwi 8,0 |
| lis 0,0xffe0 |
| li 12,-1 |
| or 0,0,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 |
| bdnz .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 |
| bdnz .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 |
| |
| or 12,12,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 |
| or 0,0,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,79 |
| 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 |
| bdnz .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,79 |
| 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 |
| bdnz .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,79 |
| .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 |
| bdnz .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 |
| |
| or 12,12,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 |
| .size aes_hw_cbc_encrypt,.-aes_hw_cbc_encrypt |
| .globl aes_hw_ctr32_encrypt_blocks |
| .type aes_hw_ctr32_encrypt_blocks,@function |
| .align 5 |
| aes_hw_ctr32_encrypt_blocks: |
| .localentry aes_hw_ctr32_encrypt_blocks,0 |
| |
| cmpldi 5,1 |
| .long 0x4dc00020 |
| |
| lis 0,0xfff0 |
| li 12,-1 |
| or 0,0,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 |
| bdnz .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 |
| |
| or 12,12,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 |
| or 0,0,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,79 |
| 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 |
| bdnz .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,79 |
| 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 |
| bdnz .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,79 |
| .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 |
| |
| or 12,12,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 |
| .size aes_hw_ctr32_encrypt_blocks,.-aes_hw_ctr32_encrypt_blocks |
| .globl aes_hw_xts_encrypt |
| .type aes_hw_xts_encrypt,@function |
| .align 5 |
| aes_hw_xts_encrypt: |
| .localentry aes_hw_xts_encrypt,0 |
| |
| mr 10,3 |
| li 3,-1 |
| cmpldi 5,16 |
| .long 0x4dc00020 |
| |
| lis 0,0xfff0 |
| li 12,-1 |
| li 11,0 |
| or 0,0,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 |
| bdnz .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 |
| bdnz .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) |
| bdnz .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: |
| or 12,12,12 |
| li 3,0 |
| blr |
| .long 0 |
| .byte 0,12,0x04,0,0x80,6,6,0 |
| .long 0 |
| .size aes_hw_xts_encrypt,.-aes_hw_xts_encrypt |
| |
| .globl aes_hw_xts_decrypt |
| .type aes_hw_xts_decrypt,@function |
| .align 5 |
| aes_hw_xts_decrypt: |
| .localentry aes_hw_xts_decrypt,0 |
| |
| mr 10,3 |
| li 3,-1 |
| cmpldi 5,16 |
| .long 0x4dc00020 |
| |
| lis 0,0xfff8 |
| li 12,-1 |
| li 11,0 |
| or 0,0,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 |
| bdnz .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 |
| bdnz .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 |
| bdnz .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) |
| bdnz .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: |
| or 12,12,12 |
| li 3,0 |
| blr |
| .long 0 |
| .byte 0,12,0x04,0,0x80,6,6,0 |
| .long 0 |
| .size aes_hw_xts_decrypt,.-aes_hw_xts_decrypt |
| .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 |
| or 0,0,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,79 |
| 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 |
| bdnz .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,79 |
| 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 |
| bdnz .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,79 |
| 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 |
| bdnz .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,79 |
| .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) |
| bdnz .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 |
| |
| or 12,12,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 |
| bdnz _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,79 |
| .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 |
| or 0,0,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,79 |
| 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 |
| bdnz .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,79 |
| 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 |
| bdnz .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,79 |
| 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 |
| bdnz .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,79 |
| .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 |
| bdnz .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,79 |
| .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) |
| bdnz .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 |
| |
| or 12,12,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 |
| bdnz _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,79 |
| .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 |
| #endif // !OPENSSL_NO_ASM && __powerpc64__ |