diff options
Diffstat (limited to 'deps/openssl/config/archs/aix-gcc/asm/crypto/chacha/chacha-ppc.s')
-rw-r--r-- | deps/openssl/config/archs/aix-gcc/asm/crypto/chacha/chacha-ppc.s | 1128 |
1 files changed, 1128 insertions, 0 deletions
diff --git a/deps/openssl/config/archs/aix-gcc/asm/crypto/chacha/chacha-ppc.s b/deps/openssl/config/archs/aix-gcc/asm/crypto/chacha/chacha-ppc.s new file mode 100644 index 0000000000..9130400355 --- /dev/null +++ b/deps/openssl/config/archs/aix-gcc/asm/crypto/chacha/chacha-ppc.s @@ -0,0 +1,1128 @@ +.machine "any" +.csect .text[PR],7 + +.globl .ChaCha20_ctr32_int +.align 5 +.ChaCha20_ctr32_int: +__ChaCha20_ctr32_int: + cmplwi 5,0 + bclr 14,2 + + stwu 1,-160(1) + mflr 0 + + stw 14,88(1) + stw 15,92(1) + stw 16,96(1) + stw 17,100(1) + stw 18,104(1) + stw 19,108(1) + stw 20,112(1) + stw 21,116(1) + stw 22,120(1) + stw 23,124(1) + stw 24,128(1) + stw 25,132(1) + stw 26,136(1) + stw 27,140(1) + stw 28,144(1) + stw 29,148(1) + stw 30,152(1) + stw 31,156(1) + stw 0,164(1) + + lwz 11,0(7) + lwz 12,4(7) + lwz 14,8(7) + lwz 15,12(7) + + bl __ChaCha20_1x + + lwz 0,164(1) + lwz 14,88(1) + lwz 15,92(1) + lwz 16,96(1) + lwz 17,100(1) + lwz 18,104(1) + lwz 19,108(1) + lwz 20,112(1) + lwz 21,116(1) + lwz 22,120(1) + lwz 23,124(1) + lwz 24,128(1) + lwz 25,132(1) + lwz 26,136(1) + lwz 27,140(1) + lwz 28,144(1) + lwz 29,148(1) + lwz 30,152(1) + lwz 31,156(1) + mtlr 0 + addi 1,1,160 + blr +.long 0 +.byte 0,12,4,1,0x80,18,5,0 +.long 0 + + +.align 5 +__ChaCha20_1x: +Loop_outer: + lis 16,0x6170 + lis 17,0x3320 + lis 18,0x7962 + lis 19,0x6b20 + ori 16,16,0x7865 + ori 17,17,0x646e + ori 18,18,0x2d32 + ori 19,19,0x6574 + + li 0,10 + lwz 20,0(6) + lwz 21,4(6) + lwz 22,8(6) + lwz 23,12(6) + lwz 24,16(6) + mr 28,11 + lwz 25,20(6) + mr 29,12 + lwz 26,24(6) + mr 30,14 + lwz 27,28(6) + mr 31,15 + + mr 7,20 + mr 8,21 + mr 9,22 + mr 10,23 + + mtctr 0 +Loop: + add 16,16,20 + add 17,17,21 + add 18,18,22 + add 19,19,23 + xor 28,28,16 + xor 29,29,17 + xor 30,30,18 + xor 31,31,19 + rotlwi 28,28,16 + rotlwi 29,29,16 + rotlwi 30,30,16 + rotlwi 31,31,16 + add 24,24,28 + add 25,25,29 + add 26,26,30 + add 27,27,31 + xor 20,20,24 + xor 21,21,25 + xor 22,22,26 + xor 23,23,27 + rotlwi 20,20,12 + rotlwi 21,21,12 + rotlwi 22,22,12 + rotlwi 23,23,12 + add 16,16,20 + add 17,17,21 + add 18,18,22 + add 19,19,23 + xor 28,28,16 + xor 29,29,17 + xor 30,30,18 + xor 31,31,19 + rotlwi 28,28,8 + rotlwi 29,29,8 + rotlwi 30,30,8 + rotlwi 31,31,8 + add 24,24,28 + add 25,25,29 + add 26,26,30 + add 27,27,31 + xor 20,20,24 + xor 21,21,25 + xor 22,22,26 + xor 23,23,27 + rotlwi 20,20,7 + rotlwi 21,21,7 + rotlwi 22,22,7 + rotlwi 23,23,7 + add 16,16,21 + add 17,17,22 + add 18,18,23 + add 19,19,20 + xor 31,31,16 + xor 28,28,17 + xor 29,29,18 + xor 30,30,19 + rotlwi 31,31,16 + rotlwi 28,28,16 + rotlwi 29,29,16 + rotlwi 30,30,16 + add 26,26,31 + add 27,27,28 + add 24,24,29 + add 25,25,30 + xor 21,21,26 + xor 22,22,27 + xor 23,23,24 + xor 20,20,25 + rotlwi 21,21,12 + rotlwi 22,22,12 + rotlwi 23,23,12 + rotlwi 20,20,12 + add 16,16,21 + add 17,17,22 + add 18,18,23 + add 19,19,20 + xor 31,31,16 + xor 28,28,17 + xor 29,29,18 + xor 30,30,19 + rotlwi 31,31,8 + rotlwi 28,28,8 + rotlwi 29,29,8 + rotlwi 30,30,8 + add 26,26,31 + add 27,27,28 + add 24,24,29 + add 25,25,30 + xor 21,21,26 + xor 22,22,27 + xor 23,23,24 + xor 20,20,25 + rotlwi 21,21,7 + rotlwi 22,22,7 + rotlwi 23,23,7 + rotlwi 20,20,7 + bc 16,0,Loop + + subic 5,5,64 + addi 16,16,0x7865 + addi 17,17,0x646e + addi 18,18,0x2d32 + addi 19,19,0x6574 + addis 16,16,0x6170 + addis 17,17,0x3320 + addis 18,18,0x7962 + addis 19,19,0x6b20 + + subfe. 0,0,0 + add 20,20,7 + lwz 7,16(6) + add 21,21,8 + lwz 8,20(6) + add 22,22,9 + lwz 9,24(6) + add 23,23,10 + lwz 10,28(6) + add 24,24,7 + add 25,25,8 + add 26,26,9 + add 27,27,10 + + add 28,28,11 + add 29,29,12 + add 30,30,14 + add 31,31,15 + addi 11,11,1 + mr 7,16 + rotlwi 16,16,8 + rlwimi 16,7,24,0,7 + rlwimi 16,7,24,16,23 + mr 8,17 + rotlwi 17,17,8 + rlwimi 17,8,24,0,7 + rlwimi 17,8,24,16,23 + mr 9,18 + rotlwi 18,18,8 + rlwimi 18,9,24,0,7 + rlwimi 18,9,24,16,23 + mr 10,19 + rotlwi 19,19,8 + rlwimi 19,10,24,0,7 + rlwimi 19,10,24,16,23 + mr 7,20 + rotlwi 20,20,8 + rlwimi 20,7,24,0,7 + rlwimi 20,7,24,16,23 + mr 8,21 + rotlwi 21,21,8 + rlwimi 21,8,24,0,7 + rlwimi 21,8,24,16,23 + mr 9,22 + rotlwi 22,22,8 + rlwimi 22,9,24,0,7 + rlwimi 22,9,24,16,23 + mr 10,23 + rotlwi 23,23,8 + rlwimi 23,10,24,0,7 + rlwimi 23,10,24,16,23 + mr 7,24 + rotlwi 24,24,8 + rlwimi 24,7,24,0,7 + rlwimi 24,7,24,16,23 + mr 8,25 + rotlwi 25,25,8 + rlwimi 25,8,24,0,7 + rlwimi 25,8,24,16,23 + mr 9,26 + rotlwi 26,26,8 + rlwimi 26,9,24,0,7 + rlwimi 26,9,24,16,23 + mr 10,27 + rotlwi 27,27,8 + rlwimi 27,10,24,0,7 + rlwimi 27,10,24,16,23 + mr 7,28 + rotlwi 28,28,8 + rlwimi 28,7,24,0,7 + rlwimi 28,7,24,16,23 + mr 8,29 + rotlwi 29,29,8 + rlwimi 29,8,24,0,7 + rlwimi 29,8,24,16,23 + mr 9,30 + rotlwi 30,30,8 + rlwimi 30,9,24,0,7 + rlwimi 30,9,24,16,23 + mr 10,31 + rotlwi 31,31,8 + rlwimi 31,10,24,0,7 + rlwimi 31,10,24,16,23 + bne Ltail + + lwz 7,0(4) + lwz 8,4(4) + cmplwi 5,0 + lwz 9,8(4) + lwz 10,12(4) + xor 16,16,7 + lwz 7,16(4) + xor 17,17,8 + lwz 8,20(4) + xor 18,18,9 + lwz 9,24(4) + xor 19,19,10 + lwz 10,28(4) + xor 20,20,7 + lwz 7,32(4) + xor 21,21,8 + lwz 8,36(4) + xor 22,22,9 + lwz 9,40(4) + xor 23,23,10 + lwz 10,44(4) + xor 24,24,7 + lwz 7,48(4) + xor 25,25,8 + lwz 8,52(4) + xor 26,26,9 + lwz 9,56(4) + xor 27,27,10 + lwz 10,60(4) + xor 28,28,7 + stw 16,0(3) + xor 29,29,8 + stw 17,4(3) + xor 30,30,9 + stw 18,8(3) + xor 31,31,10 + stw 19,12(3) + stw 20,16(3) + stw 21,20(3) + stw 22,24(3) + stw 23,28(3) + stw 24,32(3) + stw 25,36(3) + stw 26,40(3) + stw 27,44(3) + stw 28,48(3) + stw 29,52(3) + stw 30,56(3) + addi 4,4,64 + stw 31,60(3) + addi 3,3,64 + + bne Loop_outer + + blr + +.align 4 +Ltail: + addi 5,5,64 + subi 4,4,1 + subi 3,3,1 + addi 7,1,24-1 + mtctr 5 + + stw 16,24(1) + stw 17,28(1) + stw 18,32(1) + stw 19,36(1) + stw 20,40(1) + stw 21,44(1) + stw 22,48(1) + stw 23,52(1) + stw 24,56(1) + stw 25,60(1) + stw 26,64(1) + stw 27,68(1) + stw 28,72(1) + stw 29,76(1) + stw 30,80(1) + stw 31,84(1) + +Loop_tail: + lbzu 11,1(4) + lbzu 16,1(7) + xor 12,11,16 + stbu 12,1(3) + bc 16,0,Loop_tail + + stw 1,24(1) + stw 1,28(1) + stw 1,32(1) + stw 1,36(1) + stw 1,40(1) + stw 1,44(1) + stw 1,48(1) + stw 1,52(1) + stw 1,56(1) + stw 1,60(1) + stw 1,64(1) + stw 1,68(1) + stw 1,72(1) + stw 1,76(1) + stw 1,80(1) + stw 1,84(1) + + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 + +.globl .ChaCha20_ctr32_vmx +.align 5 +.ChaCha20_ctr32_vmx: + cmplwi 5,256 + blt __ChaCha20_ctr32_int + + stwu 1,-368(1) + mflr 0 + li 10,103 + li 11,119 + li 12,-1 + 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 + stw 12,292(1) + stw 14,296(1) + stw 15,300(1) + stw 16,304(1) + stw 17,308(1) + stw 18,312(1) + stw 19,316(1) + stw 20,320(1) + stw 21,324(1) + stw 22,328(1) + stw 23,332(1) + stw 24,336(1) + stw 25,340(1) + stw 26,344(1) + stw 27,348(1) + stw 28,352(1) + stw 29,356(1) + stw 30,360(1) + stw 31,364(1) + li 12,-1 + stw 0, 372(1) + or 12,12,12 + + bl Lconsts + li 16,16 + li 17,32 + li 18,48 + li 19,64 + li 20,31 + li 21,15 + + lvx 16,0,6 + lvsl 12,0,6 + lvx 17,16,6 + lvx 31,20,6 + + lvx 18,0,7 + lvsl 13,0,7 + lvx 27,21,7 + + lvx 15,0,12 + lvx 20,16,12 + lvx 21,17,12 + lvx 22,18,12 + lvx 23,19,12 + + vperm 16,16,17,12 + vperm 17,17,31,12 + vperm 18,18,27,13 + + lwz 11,0(7) + lwz 12,4(7) + vadduwm 18,18,20 + lwz 14,8(7) + vadduwm 19,18,20 + lwz 15,12(7) + vadduwm 20,19,20 + + vspltisw 24,-12 + vspltisw 25,12 + vspltisw 26,-7 + + + vxor 12,12,12 + vspltisw 30,-1 + lvsl 28,0,4 + lvsr 29,0,3 + vperm 30,12,30,29 + + lvsl 12,0,16 + vspltisb 13,3 + vxor 12,12,13 + vxor 29,29,13 + vperm 28,28,28,12 + + b Loop_outer_vmx + +.align 4 +Loop_outer_vmx: + lis 16,0x6170 + lis 17,0x3320 + vor 0,15,15 + lis 18,0x7962 + lis 19,0x6b20 + vor 4,15,15 + ori 16,16,0x7865 + ori 17,17,0x646e + vor 8,15,15 + ori 18,18,0x2d32 + ori 19,19,0x6574 + vor 1,16,16 + + li 0,10 + lwz 20,0(6) + vor 5,16,16 + lwz 21,4(6) + vor 9,16,16 + lwz 22,8(6) + vor 2,17,17 + lwz 23,12(6) + vor 6,17,17 + lwz 24,16(6) + vor 10,17,17 + mr 28,11 + lwz 25,20(6) + vor 3,18,18 + mr 29,12 + lwz 26,24(6) + vor 7,19,19 + mr 30,14 + lwz 27,28(6) + vor 11,20,20 + mr 31,15 + + mr 7,20 + mr 8,21 + mr 9,22 + mr 10,23 + vspltisw 27,7 + + mtctr 0 + nop +Loop_vmx: + vadduwm 0,0,1 + add 16,16,20 + vadduwm 4,4,5 + add 17,17,21 + vadduwm 8,8,9 + add 18,18,22 + vxor 3,3,0 + add 19,19,23 + vxor 7,7,4 + xor 28,28,16 + vxor 11,11,8 + xor 29,29,17 + vperm 3,3,3,22 + xor 30,30,18 + vperm 7,7,7,22 + xor 31,31,19 + vperm 11,11,11,22 + rotlwi 28,28,16 + vadduwm 2,2,3 + rotlwi 29,29,16 + vadduwm 6,6,7 + rotlwi 30,30,16 + vadduwm 10,10,11 + rotlwi 31,31,16 + vxor 12,1,2 + add 24,24,28 + vxor 13,5,6 + add 25,25,29 + vxor 14,9,10 + add 26,26,30 + vsrw 1,12,24 + add 27,27,31 + vsrw 5,13,24 + xor 20,20,24 + vsrw 9,14,24 + xor 21,21,25 + vslw 12,12,25 + xor 22,22,26 + vslw 13,13,25 + xor 23,23,27 + vslw 14,14,25 + rotlwi 20,20,12 + vor 1,1,12 + rotlwi 21,21,12 + vor 5,5,13 + rotlwi 22,22,12 + vor 9,9,14 + rotlwi 23,23,12 + vadduwm 0,0,1 + add 16,16,20 + vadduwm 4,4,5 + add 17,17,21 + vadduwm 8,8,9 + add 18,18,22 + vxor 3,3,0 + add 19,19,23 + vxor 7,7,4 + xor 28,28,16 + vxor 11,11,8 + xor 29,29,17 + vperm 3,3,3,23 + xor 30,30,18 + vperm 7,7,7,23 + xor 31,31,19 + vperm 11,11,11,23 + rotlwi 28,28,8 + vadduwm 2,2,3 + rotlwi 29,29,8 + vadduwm 6,6,7 + rotlwi 30,30,8 + vadduwm 10,10,11 + rotlwi 31,31,8 + vxor 12,1,2 + add 24,24,28 + vxor 13,5,6 + add 25,25,29 + vxor 14,9,10 + add 26,26,30 + vsrw 1,12,26 + add 27,27,31 + vsrw 5,13,26 + xor 20,20,24 + vsrw 9,14,26 + xor 21,21,25 + vslw 12,12,27 + xor 22,22,26 + vslw 13,13,27 + xor 23,23,27 + vslw 14,14,27 + rotlwi 20,20,7 + vor 1,1,12 + rotlwi 21,21,7 + vor 5,5,13 + rotlwi 22,22,7 + vor 9,9,14 + rotlwi 23,23,7 + vsldoi 2,2,2, 16-8 + vsldoi 6,6,6, 16-8 + vsldoi 10,10,10, 16-8 + vsldoi 1,1,1, 16-12 + vsldoi 5,5,5, 16-12 + vsldoi 9,9,9, 16-12 + vsldoi 3,3,3, 16-4 + vsldoi 7,7,7, 16-4 + vsldoi 11,11,11, 16-4 + vadduwm 0,0,1 + add 16,16,21 + vadduwm 4,4,5 + add 17,17,22 + vadduwm 8,8,9 + add 18,18,23 + vxor 3,3,0 + add 19,19,20 + vxor 7,7,4 + xor 31,31,16 + vxor 11,11,8 + xor 28,28,17 + vperm 3,3,3,22 + xor 29,29,18 + vperm 7,7,7,22 + xor 30,30,19 + vperm 11,11,11,22 + rotlwi 31,31,16 + vadduwm 2,2,3 + rotlwi 28,28,16 + vadduwm 6,6,7 + rotlwi 29,29,16 + vadduwm 10,10,11 + rotlwi 30,30,16 + vxor 12,1,2 + add 26,26,31 + vxor 13,5,6 + add 27,27,28 + vxor 14,9,10 + add 24,24,29 + vsrw 1,12,24 + add 25,25,30 + vsrw 5,13,24 + xor 21,21,26 + vsrw 9,14,24 + xor 22,22,27 + vslw 12,12,25 + xor 23,23,24 + vslw 13,13,25 + xor 20,20,25 + vslw 14,14,25 + rotlwi 21,21,12 + vor 1,1,12 + rotlwi 22,22,12 + vor 5,5,13 + rotlwi 23,23,12 + vor 9,9,14 + rotlwi 20,20,12 + vadduwm 0,0,1 + add 16,16,21 + vadduwm 4,4,5 + add 17,17,22 + vadduwm 8,8,9 + add 18,18,23 + vxor 3,3,0 + add 19,19,20 + vxor 7,7,4 + xor 31,31,16 + vxor 11,11,8 + xor 28,28,17 + vperm 3,3,3,23 + xor 29,29,18 + vperm 7,7,7,23 + xor 30,30,19 + vperm 11,11,11,23 + rotlwi 31,31,8 + vadduwm 2,2,3 + rotlwi 28,28,8 + vadduwm 6,6,7 + rotlwi 29,29,8 + vadduwm 10,10,11 + rotlwi 30,30,8 + vxor 12,1,2 + add 26,26,31 + vxor 13,5,6 + add 27,27,28 + vxor 14,9,10 + add 24,24,29 + vsrw 1,12,26 + add 25,25,30 + vsrw 5,13,26 + xor 21,21,26 + vsrw 9,14,26 + xor 22,22,27 + vslw 12,12,27 + xor 23,23,24 + vslw 13,13,27 + xor 20,20,25 + vslw 14,14,27 + rotlwi 21,21,7 + vor 1,1,12 + rotlwi 22,22,7 + vor 5,5,13 + rotlwi 23,23,7 + vor 9,9,14 + rotlwi 20,20,7 + vsldoi 2,2,2, 16-8 + vsldoi 6,6,6, 16-8 + vsldoi 10,10,10, 16-8 + vsldoi 1,1,1, 16-4 + vsldoi 5,5,5, 16-4 + vsldoi 9,9,9, 16-4 + vsldoi 3,3,3, 16-12 + vsldoi 7,7,7, 16-12 + vsldoi 11,11,11, 16-12 + bc 16,0,Loop_vmx + + subi 5,5,256 + addi 16,16,0x7865 + addi 17,17,0x646e + addi 18,18,0x2d32 + addi 19,19,0x6574 + addis 16,16,0x6170 + addis 17,17,0x3320 + addis 18,18,0x7962 + addis 19,19,0x6b20 + add 20,20,7 + lwz 7,16(6) + add 21,21,8 + lwz 8,20(6) + add 22,22,9 + lwz 9,24(6) + add 23,23,10 + lwz 10,28(6) + add 24,24,7 + add 25,25,8 + add 26,26,9 + add 27,27,10 + add 28,28,11 + add 29,29,12 + add 30,30,14 + add 31,31,15 + + vadduwm 0,0,15 + vadduwm 4,4,15 + vadduwm 8,8,15 + vadduwm 1,1,16 + vadduwm 5,5,16 + vadduwm 9,9,16 + vadduwm 2,2,17 + vadduwm 6,6,17 + vadduwm 10,10,17 + vadduwm 3,3,18 + vadduwm 7,7,19 + vadduwm 11,11,20 + + addi 11,11,4 + vadduwm 18,18,21 + vadduwm 19,19,21 + vadduwm 20,20,21 + + mr 7,16 + rotlwi 16,16,8 + rlwimi 16,7,24,0,7 + rlwimi 16,7,24,16,23 + mr 8,17 + rotlwi 17,17,8 + rlwimi 17,8,24,0,7 + rlwimi 17,8,24,16,23 + mr 9,18 + rotlwi 18,18,8 + rlwimi 18,9,24,0,7 + rlwimi 18,9,24,16,23 + mr 10,19 + rotlwi 19,19,8 + rlwimi 19,10,24,0,7 + rlwimi 19,10,24,16,23 + mr 7,20 + rotlwi 20,20,8 + rlwimi 20,7,24,0,7 + rlwimi 20,7,24,16,23 + mr 8,21 + rotlwi 21,21,8 + rlwimi 21,8,24,0,7 + rlwimi 21,8,24,16,23 + mr 9,22 + rotlwi 22,22,8 + rlwimi 22,9,24,0,7 + rlwimi 22,9,24,16,23 + mr 10,23 + rotlwi 23,23,8 + rlwimi 23,10,24,0,7 + rlwimi 23,10,24,16,23 + mr 7,24 + rotlwi 24,24,8 + rlwimi 24,7,24,0,7 + rlwimi 24,7,24,16,23 + mr 8,25 + rotlwi 25,25,8 + rlwimi 25,8,24,0,7 + rlwimi 25,8,24,16,23 + mr 9,26 + rotlwi 26,26,8 + rlwimi 26,9,24,0,7 + rlwimi 26,9,24,16,23 + mr 10,27 + rotlwi 27,27,8 + rlwimi 27,10,24,0,7 + rlwimi 27,10,24,16,23 + mr 7,28 + rotlwi 28,28,8 + rlwimi 28,7,24,0,7 + rlwimi 28,7,24,16,23 + mr 8,29 + rotlwi 29,29,8 + rlwimi 29,8,24,0,7 + rlwimi 29,8,24,16,23 + mr 9,30 + rotlwi 30,30,8 + rlwimi 30,9,24,0,7 + rlwimi 30,9,24,16,23 + mr 10,31 + rotlwi 31,31,8 + rlwimi 31,10,24,0,7 + rlwimi 31,10,24,16,23 + lwz 7,0(4) + lwz 8,4(4) + lwz 9,8(4) + lwz 10,12(4) + xor 16,16,7 + lwz 7,16(4) + xor 17,17,8 + lwz 8,20(4) + xor 18,18,9 + lwz 9,24(4) + xor 19,19,10 + lwz 10,28(4) + xor 20,20,7 + lwz 7,32(4) + xor 21,21,8 + lwz 8,36(4) + xor 22,22,9 + lwz 9,40(4) + xor 23,23,10 + lwz 10,44(4) + xor 24,24,7 + lwz 7,48(4) + xor 25,25,8 + lwz 8,52(4) + xor 26,26,9 + lwz 9,56(4) + xor 27,27,10 + lwz 10,60(4) + xor 28,28,7 + stw 16,0(3) + xor 29,29,8 + stw 17,4(3) + xor 30,30,9 + stw 18,8(3) + xor 31,31,10 + stw 19,12(3) + addi 4,4,64 + stw 20,16(3) + li 7,16 + stw 21,20(3) + li 8,32 + stw 22,24(3) + li 9,48 + stw 23,28(3) + li 10,64 + stw 24,32(3) + stw 25,36(3) + stw 26,40(3) + stw 27,44(3) + stw 28,48(3) + stw 29,52(3) + stw 30,56(3) + stw 31,60(3) + addi 3,3,64 + + lvx 31,0,4 + lvx 27,7,4 + lvx 12,8,4 + lvx 13,9,4 + lvx 14,10,4 + addi 4,4,64 + + vperm 31,31,27,28 + vperm 27,27,12,28 + vperm 12,12,13,28 + vperm 13,13,14,28 + vxor 0,0,31 + vxor 1,1,27 + lvx 27,7,4 + vxor 2,2,12 + lvx 12,8,4 + vxor 3,3,13 + lvx 13,9,4 + lvx 31,10,4 + addi 4,4,64 + li 10,63 + vperm 0,0,0,29 + vperm 1,1,1,29 + vperm 2,2,2,29 + vperm 3,3,3,29 + + vperm 14,14,27,28 + vperm 27,27,12,28 + vperm 12,12,13,28 + vperm 13,13,31,28 + vxor 4,4,14 + vxor 5,5,27 + lvx 27,7,4 + vxor 6,6,12 + lvx 12,8,4 + vxor 7,7,13 + lvx 13,9,4 + lvx 14,10,4 + addi 4,4,64 + vperm 4,4,4,29 + vperm 5,5,5,29 + vperm 6,6,6,29 + vperm 7,7,7,29 + + vperm 31,31,27,28 + vperm 27,27,12,28 + vperm 12,12,13,28 + vperm 13,13,14,28 + vxor 8,8,31 + vxor 9,9,27 + vxor 10,10,12 + vxor 11,11,13 + vperm 8,8,8,29 + vperm 9,9,9,29 + vperm 10,10,10,29 + vperm 11,11,11,29 + + andi. 17,3,15 + mr 16,3 + + vsel 31,0,1,30 + vsel 27,1,2,30 + vsel 12,2,3,30 + vsel 13,3,4,30 + vsel 1,4,5,30 + vsel 2,5,6,30 + vsel 3,6,7,30 + vsel 4,7,8,30 + vsel 5,8,9,30 + vsel 6,9,10,30 + vsel 7,10,11,30 + + + stvx 31,7,3 + stvx 27,8,3 + stvx 12,9,3 + addi 3,3,64 + stvx 13,0,3 + stvx 1,7,3 + stvx 2,8,3 + stvx 3,9,3 + addi 3,3,64 + stvx 4,0,3 + stvx 5,7,3 + stvx 6,8,3 + stvx 7,9,3 + addi 3,3,64 + + beq Laligned_vmx + + sub 18,3,17 + li 19,0 +Lunaligned_tail_vmx: + stvebx 11,19,18 + addi 19,19,1 + cmpw 19,17 + bne Lunaligned_tail_vmx + + sub 18,16,17 +Lunaligned_head_vmx: + stvebx 0,17,18 + cmpwi 17,15 + addi 17,17,1 + bne Lunaligned_head_vmx + + cmplwi 5,255 + bgt Loop_outer_vmx + + b Ldone_vmx + +.align 4 +Laligned_vmx: + stvx 0,0,16 + + cmplwi 5,255 + bgt Loop_outer_vmx + nop + +Ldone_vmx: + cmplwi 5,0 + bnel __ChaCha20_1x + + lwz 12,292(1) + li 10,103 + li 11,119 + 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 + lwz 0, 372(1) + lwz 14,296(1) + lwz 15,300(1) + lwz 16,304(1) + lwz 17,308(1) + lwz 18,312(1) + lwz 19,316(1) + lwz 20,320(1) + lwz 21,324(1) + lwz 22,328(1) + lwz 23,332(1) + lwz 24,336(1) + lwz 25,340(1) + lwz 26,344(1) + lwz 27,348(1) + lwz 28,352(1) + lwz 29,356(1) + lwz 30,360(1) + lwz 31,364(1) + mtlr 0 + addi 1,1,368 + blr +.long 0 +.byte 0,12,0x04,1,0x80,18,5,0 +.long 0 + + +.align 5 +Lconsts: + mflr 0 + bcl 20,31,$+4 + mflr 12 + addi 12,12,56 + mtlr 0 + blr +.long 0 +.byte 0,12,0x14,0,0,0,0,0 +.space 28 +Lsigma: +.long 0x61707865,0x3320646e,0x79622d32,0x6b206574 +.long 1,0,0,0 +.long 4,0,0,0 +.long 0x02030001,0x06070405,0x0a0b0809,0x0e0f0c0d +.long 0x01020300,0x05060704,0x090a0b08,0x0d0e0f0c +.byte 67,104,97,67,104,97,50,48,32,102,111,114,32,80,111,119,101,114,80,67,47,65,108,116,105,86,101,99,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 +.align 2 |