Module Name: src
Committed By: christos
Date: Sun Mar 4 03:25:18 UTC 2018
Modified Files:
src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc: aesp8-ppc.S
ghashp8-ppc.S ppccpuid.S
Added Files:
src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc:
chacha-ppc.S chacha.inc poly1305-ppc.S poly1305-ppcfp.S
poly1305.inc
Log Message:
regen.
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ghashp8-ppc.S
cvs rdiff -u -r0 -r1.1 \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/chacha-ppc.S \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/chacha.inc \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppc.S \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppcfp.S
\
src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305.inc
cvs rdiff -u -r1.9 -r1.10 \
src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S:1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S:1.2
--- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S:1.1 Fri Oct 14 12:09:44 2016
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/aesp8-ppc.S Sat Mar 3 22:25:18 2018
@@ -1832,3 +1832,1810 @@ _aesp8_ctr32_encrypt8x:
.byte 0,12,0x04,0,0x80,6,6,0
.long 0
+.globl aes_p8_xts_encrypt
+.type aes_p8_xts_encrypt,@function
+.align 5
+aes_p8_xts_encrypt:
+ mr 10,3
+ li 3,-1
+ cmplwi 5,16
+ bltlr
+
+ lis 0,0xfff0
+ mfspr 12,256
+ li 11,0
+ mtspr 256,0
+
+ vspltisb 9,0x07
+
+
+
+
+ li 3,15
+ lvx 8,0,8
+ lvsl 5,0,8
+ lvx 4,3,8
+
+ vperm 8,8,4,5
+
+ neg 11,10
+ lvsr 5,0,11
+ lvx 2,0,10
+ addi 10,10,15
+
+
+ cmplwi 7,0
+ beq .Lxts_enc_no_key2
+
+ lvsl 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,0,1,7
+ vxor 8,8,0
+ lvx 0,3,7
+ addi 3,3,16
+ mtctr 9
+
+.Ltweak_xts_enc:
+ vperm 1,1,0,7
+.long 0x11080D08
+ lvx 1,3,7
+ addi 3,3,16
+ vperm 0,0,1,7
+.long 0x11080508
+ lvx 0,3,7
+ addi 3,3,16
+ bc 16,0,.Ltweak_xts_enc
+
+ vperm 1,1,0,7
+.long 0x11080D08
+ lvx 1,3,7
+ vperm 0,0,1,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
+
+ lvsl 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
+
+ cmplwi 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,0,1,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,1,0,7
+.long 0x10420D08
+ lvx 1,3,6
+ addi 3,3,16
+ vperm 0,0,1,7
+.long 0x10420508
+ lvx 0,3,6
+ addi 3,3,16
+ bc 16,0,.Loop_xts_enc
+
+ vperm 1,1,0,7
+.long 0x10420D08
+ lvx 1,3,6
+ li 3,16
+ vperm 0,0,1,7
+ vxor 0,0,8
+.long 0x10620509
+
+
+ nop
+
+.long 0x7C602799
+ 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,0,1,7
+ vxor 2,2,8
+ vxor 3,3,0
+ vxor 2,2,0
+ lvx 0,3,6
+ addi 3,3,16
+
+ mtctr 9
+ cmplwi 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:
+ cmplwi 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
+
+
+.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_p8_xts_decrypt
+.type aes_p8_xts_decrypt,@function
+.align 5
+aes_p8_xts_decrypt:
+ mr 10,3
+ li 3,-1
+ cmplwi 5,16
+ bltlr
+
+ 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
+
+
+
+
+ li 3,15
+ lvx 8,0,8
+ lvsl 5,0,8
+ lvx 4,3,8
+
+ vperm 8,8,4,5
+
+ neg 11,10
+ lvsr 5,0,11
+ lvx 2,0,10
+ addi 10,10,15
+
+
+ cmplwi 7,0
+ beq .Lxts_dec_no_key2
+
+ lvsl 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,0,1,7
+ vxor 8,8,0
+ lvx 0,3,7
+ addi 3,3,16
+ mtctr 9
+
+.Ltweak_xts_dec:
+ vperm 1,1,0,7
+.long 0x11080D08
+ lvx 1,3,7
+ addi 3,3,16
+ vperm 0,0,1,7
+.long 0x11080508
+ lvx 0,3,7
+ addi 3,3,16
+ bc 16,0,.Ltweak_xts_dec
+
+ vperm 1,1,0,7
+.long 0x11080D08
+ lvx 1,3,7
+ vperm 0,0,1,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
+
+ lvsl 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
+
+ cmplwi 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,0,1,7
+ vxor 2,2,8
+ vxor 2,2,0
+ lvx 0,3,6
+ addi 3,3,16
+ mtctr 9
+
+ cmplwi 5,16
+ blt .Ltail_xts_dec
+ b .Loop_xts_dec
+
+.align 5
+.Loop_xts_dec:
+ vperm 1,1,0,7
+.long 0x10420D48
+ lvx 1,3,6
+ addi 3,3,16
+ vperm 0,0,1,7
+.long 0x10420548
+ lvx 0,3,6
+ addi 3,3,16
+ bc 16,0,.Loop_xts_dec
+
+ vperm 1,1,0,7
+.long 0x10420D48
+ lvx 1,3,6
+ li 3,16
+ vperm 0,0,1,7
+ vxor 0,0,8
+.long 0x10620549
+
+
+ nop
+
+.long 0x7C602799
+ 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,0,1,7
+ vxor 2,2,8
+ vxor 2,2,0
+ lvx 0,3,6
+ addi 3,3,16
+
+ mtctr 9
+ cmplwi 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,1,0,7
+.long 0x10420D48
+ lvx 1,3,6
+ addi 3,3,16
+ vperm 0,0,1,7
+.long 0x10420548
+ lvx 0,3,6
+ addi 3,3,16
+ bc 16,0,.Loop_xts_dec_short
+
+ vperm 1,1,0,7
+.long 0x10420D48
+ lvx 1,3,6
+ li 3,16
+ vperm 0,0,1,7
+ vxor 0,0,12
+.long 0x10620549
+
+
+ nop
+
+.long 0x7C602799
+
+ 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,0,1,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:
+ cmplwi 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
+
+
+.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:
+ stwu 1,-392(1)
+ mflr 11
+ li 7,175
+ li 3,191
+ stw 11,396(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,364(1)
+ li 3,0x10
+ stw 26,368(1)
+ li 26,0x20
+ stw 27,372(1)
+ li 27,0x30
+ stw 28,376(1)
+ li 28,0x40
+ stw 29,380(1)
+ li 29,0x50
+ stw 30,384(1)
+ li 30,0x60
+ stw 31,388(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,23,30,7
+ addi 7,1,32+15
+ mtctr 9
+
+.Load_xts_enc_key:
+ vperm 24,30,31,7
+ lvx 30,3,6
+ addi 6,6,0x20
+ stvx 24,0,7
+ vperm 25,31,30,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,30,31,7
+ lvx 27,26,6
+ stvx 24,0,7
+ vperm 25,31,26,7
+ lvx 28,27,6
+ stvx 25,3,7
+ addi 7,1,32+15
+ vperm 26,26,27,7
+ lvx 29,28,6
+ vperm 27,27,28,7
+ lvx 30,29,6
+ vperm 28,28,29,7
+ lvx 31,30,6
+ vperm 29,29,30,7
+ lvx 22,31,6
+ vperm 30,30,31,7
+ lvx 24,0,7
+ vperm 31,31,22,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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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,32+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
+
+.long 0x7C5A5699
+ vand 11,11,10
+.long 0x11CE1D09
+
+.long 0x7C7B5699
+.long 0x11EF2509
+
+.long 0x7C9C5699
+ vxor 8,8,11
+.long 0x11702D09
+
+
+.long 0x7CBD5699
+ addi 10,10,0x60
+
+
+
+
+
+.long 0x7CE02799
+ vxor 7,0,17
+
+.long 0x7D832799
+ vxor 12,1,18
+
+.long 0x7DBA2799
+ vxor 13,2,19
+
+.long 0x7DDB2799
+ vxor 14,3,20
+
+.long 0x7DFC2799
+ vxor 15,4,21
+
+.long 0x7D7D2799
+ 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
+
+
+ vor 17,22,22
+
+.long 0x7CE02799
+
+.long 0x7D832799
+
+.long 0x7DBA2799
+ vxor 11,15,22
+
+.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
+
+
+ vor 17,21,21
+
+.long 0x7CE02799
+
+.long 0x7D832799
+ vxor 11,14,21
+
+.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
+
+
+ vor 17,20,20
+
+.long 0x7CE02799
+ vxor 11,13,20
+
+.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
+
+
+ vor 17,19,19
+ vxor 11,12,19
+
+.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,32+15
+.long 0x10E7E508
+ lvx 24,0,7
+
+.long 0x10E7ED08
+ lvx 25,3,7
+ vxor 17,17,31
+
+
+.long 0x10E7F508
+
+ vperm 0,0,0,5
+.long 0x10E78D09
+
+ vor 17,18,18
+ vxor 11,7,18
+
+.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,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:
+ cmplwi 8,0
+ beq .Lxts_enc6x_ret
+
+ vxor 8,17,23
+
+.long 0x7D004799
+
+.Lxts_enc6x_ret:
+ mtlr 11
+ li 10,47
+ li 11,63
+ 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
+ lwz 26,368(1)
+ lwz 27,372(1)
+ lwz 28,376(1)
+ lwz 29,380(1)
+ lwz 30,384(1)
+ lwz 31,388(1)
+ addi 1,1,392
+ 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,32+15
+.long 0x10E7E508
+.long 0x118CE508
+.long 0x11ADE508
+.long 0x11CEE508
+.long 0x11EFE508
+ lvx 24,0,7
+ vxor 3,20,31
+
+.long 0x10E7ED08
+
+.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:
+ stwu 1,-392(1)
+ mflr 11
+ li 7,175
+ li 3,191
+ stw 11,396(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,364(1)
+ li 3,0x10
+ stw 26,368(1)
+ li 26,0x20
+ stw 27,372(1)
+ li 27,0x30
+ stw 28,376(1)
+ li 28,0x40
+ stw 29,380(1)
+ li 29,0x50
+ stw 30,384(1)
+ li 30,0x60
+ stw 31,388(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,23,30,7
+ addi 7,1,32+15
+ mtctr 9
+
+.Load_xts_dec_key:
+ vperm 24,30,31,7
+ lvx 30,3,6
+ addi 6,6,0x20
+ stvx 24,0,7
+ vperm 25,31,30,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,30,31,7
+ lvx 27,26,6
+ stvx 24,0,7
+ vperm 25,31,26,7
+ lvx 28,27,6
+ stvx 25,3,7
+ addi 7,1,32+15
+ vperm 26,26,27,7
+ lvx 29,28,6
+ vperm 27,27,28,7
+ lvx 30,29,6
+ vperm 28,28,29,7
+ lvx 31,30,6
+ vperm 29,29,30,7
+ lvx 22,31,6
+ vperm 30,30,31,7
+ lvx 24,0,7
+ vperm 31,31,22,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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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,32+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
+
+.long 0x7C5A5699
+ vand 11,11,10
+.long 0x11CE1D49
+
+.long 0x7C7B5699
+.long 0x11EF2549
+
+.long 0x7C9C5699
+ vxor 8,8,11
+.long 0x12102D49
+
+.long 0x7CBD5699
+ addi 10,10,0x60
+
+
+
+
+
+.long 0x7CE02799
+ vxor 7,0,17
+
+.long 0x7D832799
+ vxor 12,1,18
+
+.long 0x7DBA2799
+ vxor 13,2,19
+
+.long 0x7DDB2799
+ vxor 14,3,20
+
+.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
+
+
+ vor 17,22,22
+ vxor 18,8,23
+
+.long 0x7CE02799
+ vxor 7,0,18
+
+.long 0x7D832799
+
+.long 0x7DBA2799
+
+.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
+
+
+ vor 17,21,21
+ vor 18,22,22
+
+.long 0x7CE02799
+ vxor 7,0,22
+
+.long 0x7D832799
+
+.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
+
+
+ vor 17,20,20
+ vor 18,21,21
+
+.long 0x7CE02799
+ vxor 7,0,21
+
+.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
+
+
+ vor 17,19,19
+ vor 18,20,20
+
+.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,32+15
+.long 0x10E7E548
+ lvx 24,0,7
+
+.long 0x10E7ED48
+ lvx 25,3,7
+ vxor 17,17,31
+
+
+.long 0x10E7F548
+
+ mtctr 9
+.long 0x10E78D49
+
+ vor 17,18,18
+ vor 18,19,19
+
+.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
+
+ 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,32+15
+.long 0x10E7E548
+ lvx 24,0,7
+
+.long 0x10E7ED48
+ lvx 25,3,7
+ vxor 18,18,31
+
+
+.long 0x10E7F548
+
+ vperm 0,0,0,5
+.long 0x11679549
+
+
+
+.long 0x7D602799
+
+ 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:
+ cmplwi 8,0
+ beq .Lxts_dec6x_ret
+
+ vxor 8,17,23
+
+.long 0x7D004799
+
+.Lxts_dec6x_ret:
+ mtlr 11
+ li 10,47
+ li 11,63
+ 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
+ lwz 26,368(1)
+ lwz 27,372(1)
+ lwz 28,376(1)
+ lwz 29,380(1)
+ lwz 30,384(1)
+ lwz 31,388(1)
+ addi 1,1,392
+ 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,32+15
+.long 0x10E7E548
+.long 0x118CE548
+.long 0x11ADE548
+.long 0x11CEE548
+.long 0x11EFE548
+ lvx 24,0,7
+ vxor 3,20,31
+
+.long 0x10E7ED48
+
+.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
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ghashp8-ppc.S
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ghashp8-ppc.S:1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ghashp8-ppc.S:1.2
--- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ghashp8-ppc.S:1.1 Fri Oct 14 12:09:44 2016
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ghashp8-ppc.S Sat Mar 3 22:25:18 2018
@@ -6,7 +6,7 @@
.type gcm_init_p8,@function
.align 5
gcm_init_p8:
- lis 0,0xfff0
+ li 0,-4096
li 8,0x10
mfspr 12,256
li 9,0x20
@@ -28,17 +28,99 @@ gcm_init_p8:
vsl 9,9,5
vsrab 6,6,7
vand 6,6,8
- vxor 9,9,6
+ vxor 3,9,6
- vsldoi 9,9,9,8
+ vsldoi 9,3,3,8
vsldoi 8,4,8,8
vsldoi 11,4,9,8
vsldoi 10,9,4,8
.long 0x7D001F99
.long 0x7D681F99
+ li 8,0x40
.long 0x7D291F99
+ li 9,0x50
.long 0x7D4A1F99
+ li 10,0x60
+
+.long 0x10035CC8
+.long 0x10234CC8
+.long 0x104354C8
+
+.long 0x10E044C8
+
+ vsldoi 5,1,4,8
+ vsldoi 6,4,1,8
+ vxor 0,0,5
+ vxor 2,2,6
+
+ vsldoi 0,0,0,8
+ vxor 0,0,7
+
+ vsldoi 6,0,0,8
+.long 0x100044C8
+ vxor 6,6,2
+ vxor 16,0,6
+
+ vsldoi 17,16,16,8
+ vsldoi 19,4,17,8
+ vsldoi 18,17,4,8
+
+.long 0x7E681F99
+ li 8,0x70
+.long 0x7E291F99
+ li 9,0x80
+.long 0x7E4A1F99
+ li 10,0x90
+.long 0x10039CC8
+.long 0x11B09CC8
+.long 0x10238CC8
+.long 0x11D08CC8
+.long 0x104394C8
+.long 0x11F094C8
+
+.long 0x10E044C8
+.long 0x114D44C8
+
+ vsldoi 5,1,4,8
+ vsldoi 6,4,1,8
+ vsldoi 11,14,4,8
+ vsldoi 9,4,14,8
+ vxor 0,0,5
+ vxor 2,2,6
+ vxor 13,13,11
+ vxor 15,15,9
+
+ vsldoi 0,0,0,8
+ vsldoi 13,13,13,8
+ vxor 0,0,7
+ vxor 13,13,10
+
+ vsldoi 6,0,0,8
+ vsldoi 9,13,13,8
+.long 0x100044C8
+.long 0x11AD44C8
+ vxor 6,6,2
+ vxor 9,9,15
+ vxor 0,0,6
+ vxor 13,13,9
+
+ vsldoi 9,0,0,8
+ vsldoi 17,13,13,8
+ vsldoi 11,4,9,8
+ vsldoi 10,9,4,8
+ vsldoi 19,4,17,8
+ vsldoi 18,17,4,8
+
+.long 0x7D681F99
+ li 8,0xa0
+.long 0x7D291F99
+ li 9,0xb0
+.long 0x7D4A1F99
+ li 10,0xc0
+.long 0x7E681F99
+.long 0x7E291F99
+.long 0x7E4A1F99
mtspr 256,12
blr
@@ -46,7 +128,6 @@ gcm_init_p8:
.byte 0,12,0x14,0,0,0,2,0
.long 0
-
.globl gcm_gmult_p8
.type gcm_gmult_p8,@function
.align 5
@@ -102,7 +183,7 @@ gcm_gmult_p8:
.type gcm_ghash_p8,@function
.align 5
gcm_ghash_p8:
- lis 0,0xfff8
+ li 0,-4096
li 8,0x10
mfspr 12,256
li 9,0x20
@@ -111,43 +192,66 @@ gcm_ghash_p8:
.long 0x7C001E99
.long 0x7D682699
+ li 8,0x40
.long 0x7D292699
+ li 9,0x50
.long 0x7D4A2699
+ li 10,0x60
.long 0x7D002699
vxor 4,4,4
+ cmplwi 6,64
+ bge .Lgcm_ghash_p8_4x
+
.long 0x7C602E99
addi 5,5,16
- subi 6,6,16
+ subic. 6,6,16
vxor 3,3,0
- b .Loop
+ beq .Lshort
+
+.long 0x7E682699
+ li 8,16
+.long 0x7E292699
+ add 9,5,6
+.long 0x7E4A2699
+ b .Loop_2x
.align 5
-.Loop:
- subic 6,6,16
-.long 0x10035CC8
- subfe. 0,0,0
-.long 0x10234CC8
+.Loop_2x:
+.long 0x7E002E99
+
+
+ subic 6,6,32
+.long 0x10039CC8
+.long 0x11B05CC8
+ subfe 0,0,0
+.long 0x10238CC8
+.long 0x11D04CC8
and 0,0,6
-.long 0x104354C8
+.long 0x104394C8
+.long 0x11F054C8
add 5,5,0
+ vxor 0,0,13
+ vxor 1,1,14
+
.long 0x10E044C8
vsldoi 5,1,4,8
vsldoi 6,4,1,8
+ vxor 2,2,15
vxor 0,0,5
vxor 2,2,6
vsldoi 0,0,0,8
vxor 0,0,7
-.long 0x7C602E99
- addi 5,5,16
+.long 0x7C682E99
+ addi 5,5,32
vsldoi 6,0,0,8
.long 0x100044C8
@@ -155,8 +259,32 @@ gcm_ghash_p8:
vxor 6,6,2
vxor 3,3,6
vxor 3,3,0
- beq .Loop
+ .long 0x7c092840
+ bgt .Loop_2x
+
+ cmplwi 6,0
+ bne .Leven
+
+.Lshort:
+.long 0x10035CC8
+.long 0x10234CC8
+.long 0x104354C8
+
+.long 0x10E044C8
+
+ vsldoi 5,1,4,8
+ vsldoi 6,4,1,8
+ vxor 0,0,5
+ vxor 2,2,6
+
+ vsldoi 0,0,0,8
+ vxor 0,0,7
+
+ vsldoi 6,0,0,8
+.long 0x100044C8
+ vxor 6,6,2
+.Leven:
vxor 0,0,6
.long 0x7C001F99
@@ -166,6 +294,273 @@ gcm_ghash_p8:
.long 0
.byte 0,12,0x14,0,0,0,4,0
.long 0
+.align 5
+.gcm_ghash_p8_4x:
+.Lgcm_ghash_p8_4x:
+ stwu 1,-232(1)
+ li 10,39
+ li 11,55
+ 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
+ li 10,0x60
+ stvx 31,11,1
+ li 0,-1
+ stw 12,228(1)
+ mtspr 256,0
+
+ lvsl 5,0,8
+
+ li 8,0x70
+.long 0x7E292699
+ li 9,0x80
+ vspltisb 6,8
+
+ li 10,0x90
+.long 0x7EE82699
+ li 8,0xa0
+.long 0x7F092699
+ li 9,0xb0
+.long 0x7F2A2699
+ li 10,0xc0
+.long 0x7FA82699
+ li 8,0x10
+.long 0x7FC92699
+ li 9,0x20
+.long 0x7FEA2699
+ li 10,0x30
+
+ vsldoi 7,4,6,8
+ vaddubm 18,5,7
+ vaddubm 19,6,18
+
+ srwi 6,6,4
+
+.long 0x7C602E99
+.long 0x7E082E99
+ subic. 6,6,8
+.long 0x7EC92E99
+.long 0x7F8A2E99
+ addi 5,5,0x40
+
+
+
+
+
+ vxor 2,3,0
+
+.long 0x11B0BCC8
+.long 0x11D0C4C8
+.long 0x11F0CCC8
+
+ vperm 11,17,9,18
+ vperm 5,22,28,19
+ vperm 10,17,9,19
+ vperm 6,22,28,18
+.long 0x12B68CC8
+.long 0x12855CC8
+.long 0x137C4CC8
+.long 0x134654C8
+
+ vxor 21,21,14
+ vxor 20,20,13
+ vxor 27,27,21
+ vxor 26,26,15
+
+ blt .Ltail_4x
+
+.Loop_4x:
+.long 0x7C602E99
+.long 0x7E082E99
+ subic. 6,6,4
+.long 0x7EC92E99
+.long 0x7F8A2E99
+ addi 5,5,0x40
+
+
+
+
+
+.long 0x1002ECC8
+.long 0x1022F4C8
+.long 0x1042FCC8
+.long 0x11B0BCC8
+.long 0x11D0C4C8
+.long 0x11F0CCC8
+
+ vxor 0,0,20
+ vxor 1,1,27
+ vxor 2,2,26
+ vperm 5,22,28,19
+ vperm 6,22,28,18
+
+.long 0x10E044C8
+.long 0x12855CC8
+.long 0x134654C8
+
+ vsldoi 5,1,4,8
+ vsldoi 6,4,1,8
+ vxor 0,0,5
+ vxor 2,2,6
+
+ vsldoi 0,0,0,8
+ vxor 0,0,7
+
+ vsldoi 6,0,0,8
+.long 0x12B68CC8
+.long 0x137C4CC8
+.long 0x100044C8
+
+ vxor 20,20,13
+ vxor 26,26,15
+ vxor 2,2,3
+ vxor 21,21,14
+ vxor 2,2,6
+ vxor 27,27,21
+ vxor 2,2,0
+ bge .Loop_4x
+
+.Ltail_4x:
+.long 0x1002ECC8
+.long 0x1022F4C8
+.long 0x1042FCC8
+
+ vxor 0,0,20
+ vxor 1,1,27
+
+.long 0x10E044C8
+
+ vsldoi 5,1,4,8
+ vsldoi 6,4,1,8
+ vxor 2,2,26
+ vxor 0,0,5
+ vxor 2,2,6
+
+ vsldoi 0,0,0,8
+ vxor 0,0,7
+
+ vsldoi 6,0,0,8
+.long 0x100044C8
+ vxor 6,6,2
+ vxor 0,0,6
+
+ addic. 6,6,4
+ beq .Ldone_4x
+
+.long 0x7C602E99
+ cmplwi 6,2
+ li 6,-4
+ blt .Lone
+.long 0x7E082E99
+ beq .Ltwo
+
+.Lthree:
+.long 0x7EC92E99
+
+
+
+
+ vxor 2,3,0
+ vor 29,23,23
+ vor 30, 24, 24
+ vor 31,25,25
+
+ vperm 5,16,22,19
+ vperm 6,16,22,18
+.long 0x12B08CC8
+.long 0x13764CC8
+.long 0x12855CC8
+.long 0x134654C8
+
+ vxor 27,27,21
+ b .Ltail_4x
+
+.align 4
+.Ltwo:
+
+
+
+ vxor 2,3,0
+ vperm 5,4,16,19
+ vperm 6,4,16,18
+
+ vsldoi 29,4,17,8
+ vor 30, 17, 17
+ vsldoi 31,17,4,8
+
+.long 0x12855CC8
+.long 0x13704CC8
+.long 0x134654C8
+
+ b .Ltail_4x
+
+.align 4
+.Lone:
+
+
+ vsldoi 29,4,9,8
+ vor 30, 9, 9
+ vsldoi 31,9,4,8
+
+ vxor 2,3,0
+ vxor 20,20,20
+ vxor 27,27,27
+ vxor 26,26,26
+
+ b .Ltail_4x
+
+.Ldone_4x:
+
+.long 0x7C001F99
+
+ li 10,39
+ li 11,55
+ 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
+ addi 1,1,232
+ blr
+.long 0
+.byte 0,12,0x04,0,0x80,0,4,0
+.long 0
.byte 71,72,65,83,72,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
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S
diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S:1.9 src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S:1.10
--- src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S:1.9 Fri Oct 14 12:09:44 2016
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/ppccpuid.S Sat Mar 3 22:25:18 2018
@@ -1,6 +1,15 @@
.machine "any"
.text
+.globl OPENSSL_fpu_probe
+.type OPENSSL_fpu_probe,@function
+.align 4
+OPENSSL_fpu_probe:
+ fmr 0,0
+ blr
+.long 0
+.byte 0,12,0x14,0,0,0,0,0
+
.globl OPENSSL_ppc64_probe
.type OPENSSL_ppc64_probe,@function
.align 4
@@ -33,6 +42,17 @@ OPENSSL_crypto207_probe:
.byte 0,12,0x14,0,0,0,0,0
+.globl OPENSSL_madd300_probe
+.type OPENSSL_madd300_probe,@function
+.align 4
+OPENSSL_madd300_probe:
+ xor 0,0,0
+.long 0x10600033
+.long 0x10600031
+ blr
+.long 0
+.byte 0,12,0x14,0,0,0,0,0
+
.globl OPENSSL_wipe_cpu
.type OPENSSL_wipe_cpu,@function
.align 4
@@ -86,12 +106,12 @@ OPENSSL_atomic_add:
.type OPENSSL_rdtsc,@function
.align 4
OPENSSL_rdtsc:
-.Lrdtsc:
- mftb 5
- mftbu 4
+.Loop_rdtsc:
+ mftbu 5
mftb 3
- .long 0x7c032840
- bne .Lrdtsc
+ mftbu 4
+ .long 0x7c042840
+ bne .Loop_rdtsc
blr
.long 0
.byte 0,12,0x14,0,0,0,0,0
@@ -130,3 +150,115 @@ OPENSSL_cleanse:
.byte 0,12,0x14,0,0,0,2,0
.long 0
+
+.globl CRYPTO_memcmp
+.type CRYPTO_memcmp,@function
+.align 4
+CRYPTO_memcmp:
+ cmplwi 5,0
+ li 0,0
+ beq .Lno_data
+ mtctr 5
+.Loop_cmp:
+ lbz 6,0(3)
+ addi 3,3,1
+ lbz 7,0(4)
+ addi 4,4,1
+ xor 6,6,7
+ or 0,0,6
+ bc 16,0,.Loop_cmp
+
+.Lno_data:
+ li 3,0
+ sub 3,3,0
+ extrwi 3,3,1,0
+ blr
+.long 0
+.byte 0,12,0x14,0,0,0,3,0
+.long 0
+
+.globl OPENSSL_instrument_bus
+.type OPENSSL_instrument_bus,@function
+.align 4
+OPENSSL_instrument_bus:
+ mtctr 4
+
+ mftb 7
+ li 8,0
+
+ dcbf 0,3
+ lwarx 6,0,3
+ add 6,6,8
+ stwcx. 6,0,3
+ stwx 6,0,3
+
+.Loop: mftb 6
+ sub 8,6,7
+ mr 7,6
+ dcbf 0,3
+ lwarx 6,0,3
+ add 6,6,8
+ stwcx. 6,0,3
+ stwx 6,0,3
+ addi 3,3,4
+ bc 16,0,.Loop
+
+ mr 3,4
+ blr
+.long 0
+.byte 0,12,0x14,0,0,0,2,0
+.long 0
+
+
+.globl OPENSSL_instrument_bus2
+.type OPENSSL_instrument_bus2,@function
+.align 4
+OPENSSL_instrument_bus2:
+ mr 0,4
+ slwi 4,4,2
+
+ mftb 7
+ li 8,0
+
+ dcbf 0,3
+ lwarx 6,0,3
+ add 6,6,8
+ stwcx. 6,0,3
+ stwx 6,0,3
+
+ mftb 6
+ sub 8,6,7
+ mr 7,6
+ mr 9,8
+.Loop2:
+ dcbf 0,3
+ lwarx 6,0,3
+ add 6,6,8
+ stwcx. 6,0,3
+ stwx 6,0,3
+
+ addic. 5,5,-1
+ beq .Ldone2
+
+ mftb 6
+ sub 8,6,7
+ mr 7,6
+ .long 0x7f884840
+ mr 9,8
+
+ mfcr 6
+ not 6,6
+ rlwinm 6,6,1,29,29
+
+ sub. 4,4,6
+ add 3,3,6
+ bne .Loop2
+
+.Ldone2:
+ srwi 4,4,2
+ sub 3,0,4
+ blr
+.long 0
+.byte 0,12,0x14,0,0,0,3,0
+.long 0
+
Added files:
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/chacha-ppc.S
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/chacha-ppc.S:1.1
--- /dev/null Sat Mar 3 22:25:18 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/chacha-ppc.S Sat Mar 3 22:25:18 2018
@@ -0,0 +1,1130 @@
+.machine "any"
+.text
+
+.globl ChaCha20_ctr32_int
+.type ChaCha20_ctr32_int,@function
+.align 5
+ChaCha20_ctr32_int:
+__ChaCha20_ctr32_int:
+ cmplwi 5,0
+ beqlr
+
+ 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
+.type ChaCha20_ctr32_vmx,@function
+.align 5
+ChaCha20_ctr32_vmx:
+ cmplwi 5,256
+ blt __ChaCha20_ctr32_int
+
+ stwu 1,-368(1)
+ mflr 0
+ li 10,103
+ li 11,119
+ mfspr 12,256
+ 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)
+ mtspr 256,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
+ 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
+ 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
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/chacha.inc
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/chacha.inc:1.1
--- /dev/null Sat Mar 3 22:25:18 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/chacha.inc Sat Mar 3 22:25:18 2018
@@ -0,0 +1,5 @@
+.PATH.S: ${.PARSEDIR}
+
+CHACHA_SRCS = chacha-ppc.S
+
+.include "../../chacha.inc"
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppc.S
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppc.S:1.1
--- /dev/null Sat Mar 3 22:25:18 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppc.S Sat Mar 3 22:25:18 2018
@@ -0,0 +1,311 @@
+.machine "any"
+.text
+.globl poly1305_init_int
+.type poly1305_init_int,@function
+.align 4
+poly1305_init_int:
+ xor 0,0,0
+ stw 0,0(3)
+ stw 0,4(3)
+ stw 0,8(3)
+ stw 0,12(3)
+ stw 0,16(3)
+
+ .long 0x7c040040
+ beq- .Lno_key
+ li 8,4
+ lwbrx 7,0,4
+ li 9,8
+ lwbrx 8,8,4
+ li 10,12
+ lwbrx 9,9,4
+ lwbrx 10,10,4
+ lis 0,0xf000
+ li 12,-4
+ andc 12,12,0
+
+ andc 7,7,0
+ and 8,8,12
+ and 9,9,12
+ and 10,10,12
+
+ stw 7,32(3)
+ stw 8,36(3)
+ stw 9,40(3)
+ stw 10,44(3)
+
+.Lno_key:
+ xor 3,3,3
+ blr
+.long 0
+.byte 0,12,0x14,0,0,0,2,0
+
+
+.globl poly1305_blocks
+.type poly1305_blocks,@function
+.align 4
+poly1305_blocks:
+ srwi. 5,5,4
+ beq- .Labort
+
+ stwu 1,-96(1)
+ mflr 0
+ stw 14,24(1)
+ stw 15,28(1)
+ stw 16,32(1)
+ stw 17,36(1)
+ stw 18,40(1)
+ stw 19,44(1)
+ stw 20,48(1)
+ stw 21,52(1)
+ stw 22,56(1)
+ stw 23,60(1)
+ stw 24,64(1)
+ stw 25,68(1)
+ stw 26,72(1)
+ stw 27,76(1)
+ stw 28,80(1)
+ stw 29,84(1)
+ stw 30,88(1)
+ stw 31,92(1)
+ stw 0,100(1)
+
+ lwz 12,32(3)
+ lwz 14,36(3)
+ lwz 15,40(3)
+ lwz 16,44(3)
+
+ lwz 7,0(3)
+ lwz 8,4(3)
+ lwz 9,8(3)
+ lwz 10,12(3)
+ lwz 11,16(3)
+
+ srwi 17,14,2
+ srwi 18,15,2
+ srwi 19,16,2
+ add 17,17,14
+ add 18,18,15
+ add 19,19,16
+ mtctr 5
+ li 0,3
+ b .Loop
+
+.align 4
+.Loop:
+ li 29,4
+ lwbrx 28,0,4
+ li 30,8
+ lwbrx 29,29,4
+ li 31,12
+ lwbrx 30,30,4
+ lwbrx 31,31,4
+ addi 4,4,16
+
+ addc 7,7,28
+ adde 8,8,29
+ adde 9,9,30
+
+ mullw 28,7,12
+ mulhwu 24,7,12
+
+ mullw 29,7,14
+ mulhwu 25,7,14
+
+ mullw 30,7,15
+ mulhwu 26,7,15
+
+ adde 10,10,31
+ adde 11,11,6
+
+ mullw 31,7,16
+ mulhwu 27,7,16
+
+ mullw 20,8,19
+ mulhwu 21,8,19
+
+ mullw 22,8,12
+ mulhwu 23,8,12
+ addc 28,28,20
+ adde 24,24,21
+
+ mullw 20,8,14
+ mulhwu 21,8,14
+ addc 29,29,22
+ adde 25,25,23
+
+ mullw 22,8,15
+ mulhwu 23,8,15
+ addc 30,30,20
+ adde 26,26,21
+
+ mullw 20,9,18
+ mulhwu 21,9,18
+ addc 31,31,22
+ adde 27,27,23
+
+ mullw 22,9,19
+ mulhwu 23,9,19
+ addc 28,28,20
+ adde 24,24,21
+
+ mullw 20,9,12
+ mulhwu 21,9,12
+ addc 29,29,22
+ adde 25,25,23
+
+ mullw 22,9,14
+ mulhwu 23,9,14
+ addc 30,30,20
+ adde 26,26,21
+
+ mullw 20,10,17
+ mulhwu 21,10,17
+ addc 31,31,22
+ adde 27,27,23
+
+ mullw 22,10,18
+ mulhwu 23,10,18
+ addc 28,28,20
+ adde 24,24,21
+
+ mullw 20,10,19
+ mulhwu 21,10,19
+ addc 29,29,22
+ adde 25,25,23
+
+ mullw 22,10,12
+ mulhwu 23,10,12
+ addc 30,30,20
+ adde 26,26,21
+
+ mullw 20,11,17
+ addc 31,31,22
+ adde 27,27,23
+ addc 29,29,20
+
+ mullw 21,11,18
+ addze 25,25
+ addc 30,30,21
+ addze 26,26
+
+ mullw 22,11,19
+ addc 31,31,22
+ addze 27,27
+
+ mullw 11,11,12
+
+ addc 8,29,24
+ adde 9,30,25
+ adde 10,31,26
+ adde 11,11,27
+
+ andc 24,11,0
+ and 11,11,0
+ srwi 25,24,2
+ add 24,24,25
+ addc 7,28,24
+ addze 8,8
+ addze 9,9
+ addze 10,10
+ addze 11,11
+
+ bc 16,0,.Loop
+
+ stw 7,0(3)
+ stw 8,4(3)
+ stw 9,8(3)
+ stw 10,12(3)
+ stw 11,16(3)
+
+ lwz 14,24(1)
+ lwz 15,28(1)
+ lwz 16,32(1)
+ lwz 17,36(1)
+ lwz 18,40(1)
+ lwz 19,44(1)
+ lwz 20,48(1)
+ lwz 21,52(1)
+ lwz 22,56(1)
+ lwz 23,60(1)
+ lwz 24,64(1)
+ lwz 25,68(1)
+ lwz 26,72(1)
+ lwz 27,76(1)
+ lwz 28,80(1)
+ lwz 29,84(1)
+ lwz 30,88(1)
+ lwz 31,92(1)
+ addi 1,1,96
+.Labort:
+ blr
+.long 0
+.byte 0,12,4,1,0x80,18,4,0
+
+
+.globl poly1305_emit
+.type poly1305_emit,@function
+.align 4
+poly1305_emit:
+ stwu 1,-96(1)
+ mflr 0
+ stw 28,80(1)
+ stw 29,84(1)
+ stw 30,88(1)
+ stw 31,92(1)
+ stw 0,100(1)
+
+ lwz 7,0(3)
+ lwz 8,4(3)
+ lwz 9,8(3)
+ lwz 10,12(3)
+ lwz 11,16(3)
+
+ addic 28,7,5
+ addze 29,8
+ addze 30,9
+ addze 31,10
+ addze 0,11
+
+ srwi 0,0,2
+ neg 0,0
+
+ andc 7,7,0
+ and 28,28,0
+ andc 8,8,0
+ and 29,29,0
+ or 7,7,28
+ lwz 28,0(5)
+ andc 9,9,0
+ and 30,30,0
+ or 8,8,29
+ lwz 29,4(5)
+ andc 10,10,0
+ and 31,31,0
+ or 9,9,30
+ lwz 30,8(5)
+ or 10,10,31
+ lwz 31,12(5)
+
+ addc 7,7,28
+ adde 8,8,29
+ adde 9,9,30
+ adde 10,10,31
+ li 29,4
+ stwbrx 7,0,4
+ li 30,8
+ stwbrx 8,29,4
+ li 31,12
+ stwbrx 9,30,4
+ stwbrx 10,31,4
+ lwz 28,80(1)
+ lwz 29,84(1)
+ lwz 30,88(1)
+ lwz 31,92(1)
+ addi 1,1,96
+ blr
+.long 0
+.byte 0,12,4,1,0x80,4,3,0
+
+.byte 80,111,108,121,49,51,48,53,32,102,111,114,32,80,80,67,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
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppcfp.S
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppcfp.S:1.1
--- /dev/null Sat Mar 3 22:25:18 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305-ppcfp.S Sat Mar 3 22:25:18 2018
@@ -0,0 +1,585 @@
+.machine "any"
+.text
+
+.globl poly1305_init_fpu
+.type poly1305_init_fpu,@function
+.align 6
+poly1305_init_fpu:
+ stwu 1,-24(1)
+ mflr 6
+ stw 6,28(1)
+
+ bl .LPICmeup
+
+ xor 0,0,0
+ mtlr 6
+
+ lfd 8,8*0(5)
+ lfd 9,8*1(5)
+ lfd 10,8*2(5)
+ lfd 11,8*3(5)
+ lfd 12,8*4(5)
+ lfd 13,8*5(5)
+
+ stfd 8,8*0(3)
+ stfd 9,8*1(3)
+ stfd 10,8*2(3)
+ stfd 11,8*3(3)
+
+ .long 0x7c040040
+ beq- .Lno_key
+
+ lfd 6,8*13(5)
+ mffs 7
+
+ stfd 8,8*4(3)
+ stfd 9,8*5(3)
+ stfd 10,8*6(3)
+ stfd 11,8*7(3)
+
+ li 8,4
+ li 9,8
+ li 10,12
+ lwbrx 7,0,4
+ lwbrx 8,8,4
+ lwbrx 9,9,4
+ lwbrx 10,10,4
+
+ lis 11,0xf000
+ ori 12,11,3
+ andc 7,7,11
+ andc 8,8,12
+ andc 9,9,12
+ andc 10,10,12
+
+ stw 7,36(3)
+ stw 8,44(3)
+ stw 9,52(3)
+ stw 10,60(3)
+
+ mtfsf 255,6
+ stfd 8,8*18(3)
+ stfd 9,8*19(3)
+ stfd 10,8*20(3)
+ stfd 11,8*21(3)
+ stfd 12,8*22(3)
+ stfd 13,8*23(3)
+
+ lfd 0,8*4(3)
+ lfd 2,8*5(3)
+ lfd 4,8*6(3)
+ lfd 6,8*7(3)
+
+ fsub 0,0,8
+ fsub 2,2,9
+ fsub 4,4,10
+ fsub 6,6,11
+
+ lfd 8,8*6(5)
+ lfd 9,8*7(5)
+ lfd 10,8*8(5)
+ lfd 11,8*9(5)
+
+ fmul 3,2,13
+ fmul 5,4,13
+ stfd 7,8*15(3)
+ fmul 7,6,13
+
+ fadd 1,0,8
+ stfd 3,8*12(3)
+ fadd 3,2,9
+ stfd 5,8*13(3)
+ fadd 5,4,10
+ stfd 7,8*14(3)
+ fadd 7,6,11
+
+ fsub 1,1,8
+ fsub 3,3,9
+ fsub 5,5,10
+ fsub 7,7,11
+
+ lfd 8,8*10(5)
+ lfd 9,8*11(5)
+ lfd 10,8*12(5)
+
+ fsub 0,0,1
+ fsub 2,2,3
+ fsub 4,4,5
+ fsub 6,6,7
+
+ stfd 1,8*5(3)
+ stfd 3,8*7(3)
+ stfd 5,8*9(3)
+ stfd 7,8*11(3)
+
+ stfd 0,8*4(3)
+ stfd 2,8*6(3)
+ stfd 4,8*8(3)
+ stfd 6,8*10(3)
+
+ lfd 2,8*12(3)
+ lfd 4,8*13(3)
+ lfd 6,8*14(3)
+ lfd 0,8*15(3)
+
+ fadd 3,2,8
+ fadd 5,4,9
+ fadd 7,6,10
+
+ fsub 3,3,8
+ fsub 5,5,9
+ fsub 7,7,10
+
+ fsub 2,2,3
+ fsub 4,4,5
+ fsub 6,6,7
+
+ stfd 3,8*13(3)
+ stfd 5,8*15(3)
+ stfd 7,8*17(3)
+
+ stfd 2,8*12(3)
+ stfd 4,8*14(3)
+ stfd 6,8*16(3)
+
+ mtfsf 255,0
+.Lno_key:
+ xor 3,3,3
+ addi 1,1,24
+ blr
+.long 0
+.byte 0,12,4,1,0x80,0,2,0
+
+
+.globl poly1305_blocks_fpu
+.type poly1305_blocks_fpu,@function
+.align 4
+poly1305_blocks_fpu:
+ srwi. 5,5,4
+ beq- .Labort
+
+ stwu 1,-216(1)
+ mflr 0
+ stfd 14,72(1)
+ stfd 15,80(1)
+ stfd 16,88(1)
+ stfd 17,96(1)
+ stfd 18,104(1)
+ stfd 19,112(1)
+ stfd 20,120(1)
+ stfd 21,128(1)
+ stfd 22,136(1)
+ stfd 23,144(1)
+ stfd 24,152(1)
+ stfd 25,160(1)
+ stfd 26,168(1)
+ stfd 27,176(1)
+ stfd 28,184(1)
+ stfd 29,192(1)
+ stfd 30,200(1)
+ stfd 31,208(1)
+ stw 0,220(1)
+
+ xor 0,0,0
+ li 10,1
+ mtctr 5
+ neg 5,5
+ stw 0,56(1)
+ stw 10,60(1)
+
+ lfd 8,8*18(3)
+ lfd 9,8*19(3)
+ lfd 10,8*20(3)
+ lfd 11,8*21(3)
+ lfd 12,8*22(3)
+ lfd 13,8*23(3)
+
+ lfd 0,8*0(3)
+ lfd 2,8*1(3)
+ lfd 4,8*2(3)
+ lfd 6,8*3(3)
+
+ stfd 8,24(1)
+ oris 10,6,18736
+ stfd 9,32(1)
+ stfd 10,40(1)
+ stw 10,48(1)
+
+ li 11,4
+ li 12,8
+ li 6,12
+ lwbrx 7,0,4
+ lwbrx 8,11,4
+ lwbrx 9,12,4
+ lwbrx 10,6,4
+ addi 4,4,16
+
+ stw 7,28(1)
+ stw 8,36(1)
+ stw 9,44(1)
+ stw 10,52(1)
+
+ mffs 28
+ lfd 29,56(1)
+ lfd 14,8*4(3)
+ lfd 15,8*5(3)
+ lfd 16,8*6(3)
+ lfd 17,8*7(3)
+ lfd 18,8*8(3)
+ lfd 19,8*9(3)
+ lfd 24,8*10(3)
+ lfd 25,8*11(3)
+ lfd 26,8*12(3)
+ lfd 27,8*13(3)
+ lfd 20,8*14(3)
+ lfd 21,8*15(3)
+ lfd 22,8*16(3)
+ lfd 23,8*17(3)
+
+ stfd 28,56(1)
+ mtfsf 255,29
+
+ addic 5,5,1
+ addze 0,0
+ slwi. 0,0,4
+ sub 4,4,0
+
+ lfd 28,24(1)
+ lfd 29,32(1)
+ lfd 30,40(1)
+ lfd 31,48(1)
+
+ fsub 0,0,8
+ lwbrx 7,0,4
+ fsub 2,2,9
+ lwbrx 8,11,4
+ fsub 4,4,10
+ lwbrx 9,12,4
+ fsub 6,6,11
+ lwbrx 10,6,4
+
+ fsub 28,28,8
+ addi 4,4,16
+ fsub 29,29,9
+ fsub 30,30,10
+ fsub 31,31,11
+
+ fadd 28,28,0
+ stw 7,28(1)
+ fadd 29,29,2
+ stw 8,36(1)
+ fadd 30,30,4
+ stw 9,44(1)
+ fadd 31,31,6
+ stw 10,52(1)
+
+ b .Lentry
+
+.align 4
+.Loop:
+ fsub 30,30,8
+ addic 5,5,1
+ fsub 31,31,9
+ addze 0,0
+ fsub 26,26,10
+ slwi. 0,0,4
+ fsub 27,27,11
+ sub 4,4,0
+
+ fadd 0,0,30
+ fadd 1,1,31
+ fadd 4,4,26
+ fadd 5,5,27
+
+
+ fadd 26,2,10
+ lwbrx 7,0,4
+ fadd 27,3,10
+ lwbrx 8,11,4
+ fadd 30,6,12
+ lwbrx 9,12,4
+ fadd 31,7,12
+ lwbrx 10,6,4
+ fadd 24,0,9
+ addi 4,4,16
+ fadd 25,1,9
+ fadd 28,4,11
+ fadd 29,5,11
+
+ fsub 26,26,10
+ stw 7,28(1)
+ fsub 27,27,10
+ stw 8,36(1)
+ fsub 30,30,12
+ stw 9,44(1)
+ fsub 31,31,12
+ stw 10,52(1)
+ fsub 24,24,9
+ fsub 25,25,9
+ fsub 28,28,11
+ fsub 29,29,11
+
+ fsub 2,2,26
+ fsub 3,3,27
+ fsub 6,6,30
+ fsub 7,7,31
+ fsub 4,4,28
+ fsub 5,5,29
+ fsub 0,0,24
+ fsub 1,1,25
+
+ fadd 2,2,24
+ fadd 3,3,25
+ fadd 6,6,28
+ fadd 7,7,29
+ fadd 4,4,26
+ fadd 5,5,27
+ fmadd 0,30,13,0
+ fmadd 1,31,13,1
+
+ fadd 29,2,3
+ lfd 26,8*12(3)
+ fadd 31,6,7
+ lfd 27,8*13(3)
+ fadd 30,4,5
+ lfd 24,8*10(3)
+ fadd 28,0,1
+ lfd 25,8*11(3)
+.Lentry:
+ fmul 0,22,29
+ fmul 1,23,29
+ fmul 4,16,29
+ fmul 5,17,29
+ fmul 2,14,29
+ fmul 3,15,29
+ fmul 6,18,29
+ fmul 7,19,29
+
+ fmadd 0,26,31,0
+ fmadd 1,27,31,1
+ fmadd 4,22,31,4
+ fmadd 5,23,31,5
+ fmadd 2,20,31,2
+ fmadd 3,21,31,3
+ fmadd 6,14,31,6
+ fmadd 7,15,31,7
+
+ fmadd 0,20,30,0
+ fmadd 1,21,30,1
+ fmadd 4,14,30,4
+ fmadd 5,15,30,5
+ fmadd 2,22,30,2
+ fmadd 3,23,30,3
+ fmadd 6,16,30,6
+ fmadd 7,17,30,7
+
+ fmadd 0,14,28,0
+ lfd 30,24(1)
+ fmadd 1,15,28,1
+ lfd 31,32(1)
+ fmadd 4,18,28,4
+ lfd 26,40(1)
+ fmadd 5,19,28,5
+ lfd 27,48(1)
+ fmadd 2,16,28,2
+ fmadd 3,17,28,3
+ fmadd 6,24,28,6
+ fmadd 7,25,28,7
+
+ bc 16,0,.Loop
+
+
+ fadd 24,0,9
+ fadd 25,1,9
+ fadd 28,4,11
+ fadd 29,5,11
+ fadd 26,2,10
+ fadd 27,3,10
+ fadd 30,6,12
+ fadd 31,7,12
+
+ fsub 24,24,9
+ fsub 25,25,9
+ fsub 28,28,11
+ fsub 29,29,11
+ fsub 26,26,10
+ fsub 27,27,10
+ fsub 30,30,12
+ fsub 31,31,12
+
+ fsub 2,2,26
+ fsub 3,3,27
+ fsub 6,6,30
+ fsub 7,7,31
+ fsub 4,4,28
+ fsub 5,5,29
+ fsub 0,0,24
+ fsub 1,1,25
+
+ fadd 2,2,24
+ fadd 3,3,25
+ fadd 6,6,28
+ fadd 7,7,29
+ fadd 4,4,26
+ fadd 5,5,27
+ fmadd 0,30,13,0
+ fmadd 1,31,13,1
+
+ fadd 29,2,3
+ fadd 31,6,7
+ fadd 30,4,5
+ fadd 28,0,1
+
+ lfd 0,56(1)
+ fadd 29,29,9
+ fadd 31,31,11
+ fadd 30,30,10
+ fadd 28,28,8
+
+ stfd 29,8*1(3)
+ stfd 31,8*3(3)
+ stfd 30,8*2(3)
+ stfd 28,8*0(3)
+
+ mtfsf 255,0
+ lfd 14,72(1)
+ lfd 15,80(1)
+ lfd 16,88(1)
+ lfd 17,96(1)
+ lfd 18,104(1)
+ lfd 19,112(1)
+ lfd 20,120(1)
+ lfd 21,128(1)
+ lfd 22,136(1)
+ lfd 23,144(1)
+ lfd 24,152(1)
+ lfd 25,160(1)
+ lfd 26,168(1)
+ lfd 27,176(1)
+ lfd 28,184(1)
+ lfd 29,192(1)
+ lfd 30,200(1)
+ lfd 31,208(1)
+ addi 1,1,216
+.Labort:
+ blr
+.long 0
+.byte 0,12,4,1,0x80,0,4,0
+
+.globl poly1305_emit_fpu
+.type poly1305_emit_fpu,@function
+.align 4
+poly1305_emit_fpu:
+ stwu 1,-40(1)
+ mflr 0
+ stw 28,24(1)
+ stw 29,28(1)
+ stw 30,32(1)
+ stw 31,36(1)
+ stw 0,44(1)
+
+ lwz 28,0(3)
+ lwz 7,4(3)
+ lwz 29,8(3)
+ lwz 8,12(3)
+ lwz 30,16(3)
+ lwz 9,20(3)
+ lwz 31,24(3)
+ lwz 10,28(3)
+
+ lis 0,0xfff0
+ andc 28,28,0
+ andc 29,29,0
+ andc 30,30,0
+ andc 31,31,0
+ li 0,3
+
+ srwi 6,31,2
+ and 11,31,0
+ andc 31,31,0
+ add 31,31,6
+ addc 7,7,31
+ adde 8,8,28
+ adde 9,9,29
+ adde 10,10,30
+ addze 11,11
+
+ addic 28,7,5
+ addze 29,8
+ addze 30,9
+ addze 31,10
+ addze 0,11
+
+ srwi 0,0,2
+ neg 0,0
+ srawi 0,0,31
+
+ andc 7,7,0
+ and 28,28,0
+ andc 8,8,0
+ and 29,29,0
+ or 7,7,28
+ lwz 28,0(5)
+ andc 9,9,0
+ and 30,30,0
+ or 8,8,29
+ lwz 29,4(5)
+ andc 10,10,0
+ and 31,31,0
+ or 9,9,30
+ lwz 30,8(5)
+ or 10,10,31
+ lwz 31,12(5)
+
+ addc 7,7,28
+ adde 8,8,29
+ adde 9,9,30
+ adde 10,10,31
+ li 29,4
+ stwbrx 7,0,4
+ li 30,8
+ stwbrx 8,29,4
+ li 31,12
+ stwbrx 9,30,4
+ stwbrx 10,31,4
+ lwz 28,24(1)
+ lwz 29,28(1)
+ lwz 30,32(1)
+ lwz 31,36(1)
+ addi 1,1,40
+ blr
+.long 0
+.byte 0,12,4,1,0x80,4,3,0
+
+.align 6
+.LPICmeup:
+ mflr 0
+ bcl 20,31,$+4
+ mflr 5
+ addi 5,5,56
+ mtlr 0
+ blr
+.long 0
+.byte 0,12,0x14,0,0,0,0,0
+.space 28
+
+.long 0x43300000,0x00000000
+.long 0x45300000,0x00000000
+.long 0x47300000,0x00000000
+.long 0x49300000,0x00000000
+.long 0x4b500000,0x00000000
+
+.long 0x37f40000,0x00000000
+
+.long 0x44300000,0x00000000
+.long 0x46300000,0x00000000
+.long 0x48300000,0x00000000
+.long 0x4a300000,0x00000000
+.long 0x3e300000,0x00000000
+.long 0x40300000,0x00000000
+.long 0x42300000,0x00000000
+
+.long 0x00000000,0x00000001
+.byte 80,111,108,121,49,51,48,53,32,102,111,114,32,80,80,67,32,70,80,85,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 4
Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305.inc
diff -u /dev/null src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305.inc:1.1
--- /dev/null Sat Mar 3 22:25:18 2018
+++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/powerpc/poly1305.inc Sat Mar 3 22:25:18 2018
@@ -0,0 +1,6 @@
+.PATH.S: ${.PARSEDIR}
+
+POLY1305_SRCS = poly1305-ppc.S poly1305-ppcfp.S
+POLY1305_CPPFLAGS+=-DPOLY1305_ASM
+
+.include "../../poly1305.inc"