diff options
Diffstat (limited to 'deps/openssl/config/archs/linux-ppc64/asm/crypto/poly1305/poly1305-ppc.s')
-rw-r--r-- | deps/openssl/config/archs/linux-ppc64/asm/crypto/poly1305/poly1305-ppc.s | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/deps/openssl/config/archs/linux-ppc64/asm/crypto/poly1305/poly1305-ppc.s b/deps/openssl/config/archs/linux-ppc64/asm/crypto/poly1305/poly1305-ppc.s new file mode 100644 index 0000000000..0907f4ae20 --- /dev/null +++ b/deps/openssl/config/archs/linux-ppc64/asm/crypto/poly1305/poly1305-ppc.s @@ -0,0 +1,198 @@ +.machine "any" +.text +.globl poly1305_init_int +.type poly1305_init_int,@function +.section ".opd","aw" +.align 3 +poly1305_init_int: +.quad .poly1305_init_int,.TOC.@tocbase,0 +.previous + +.align 4 +.poly1305_init_int: + xor 0,0,0 + std 0,0(3) + std 0,8(3) + std 0,16(3) + + cmpld 4,0 + beq- .Lno_key + li 7,4 + lwbrx 10,0,4 + li 11,8 + lwbrx 7,7,4 + li 8,12 + lwbrx 11,11,4 + lwbrx 8,8,4 + insrdi 10,7,32,0 + insrdi 11,8,32,0 + lis 8,0xfff + ori 8,8,0xfffc + insrdi 8,8,32,0 + ori 7,8,3 + + and 10,10,7 + and 11,11,8 + + std 10,32(3) + std 11,40(3) + +.Lno_key: + xor 3,3,3 + blr +.long 0 +.byte 0,12,0x14,0,0,0,2,0 +.size poly1305_init_int,.-.poly1305_init_int +.size .poly1305_init_int,.-.poly1305_init_int + +.globl poly1305_blocks +.type poly1305_blocks,@function +.section ".opd","aw" +.align 3 +poly1305_blocks: +.quad .poly1305_blocks,.TOC.@tocbase,0 +.previous + +.align 4 +.poly1305_blocks: + srdi. 5,5,4 + beq- .Labort + + stdu 1,-192(1) + mflr 0 + std 27,152(1) + std 28,160(1) + std 29,168(1) + std 30,176(1) + std 31,184(1) + std 0,208(1) + + ld 27,32(3) + ld 28,40(3) + + ld 7,0(3) + ld 8,8(3) + ld 9,16(3) + + srdi 29,28,2 + mtctr 5 + add 29,29,28 + li 0,3 + b .Loop + +.align 4 +.Loop: + li 10,4 + lwbrx 30,0,4 + li 31,8 + lwbrx 10,10,4 + li 11,12 + lwbrx 31,31,4 + lwbrx 11,11,4 + insrdi 30,10,32,0 + insrdi 31,11,32,0 + addi 4,4,16 + + addc 7,7,30 + adde 8,8,31 + + mulld 10,7,27 + mulhdu 11,7,27 + adde 9,9,6 + + mulld 30,8,29 + mulhdu 31,8,29 + addc 10,10,30 + adde 11,11,31 + + mulld 30,7,28 + mulhdu 12,7,28 + addc 11,11,30 + addze 12,12 + + mulld 30,8,27 + mulhdu 31,8,27 + addc 11,11,30 + adde 12,12,31 + + mulld 30,9,29 + mulld 31,9,27 + addc 11,11,30 + adde 12,12,31 + + andc 30,12,0 + and 9,12,0 + srdi 31,30,2 + add 30,30,31 + addc 7,10,30 + addze 8,11 + addze 9,9 + + bdnz .Loop + + std 7,0(3) + std 8,8(3) + std 9,16(3) + + ld 27,152(1) + ld 28,160(1) + ld 29,168(1) + ld 30,176(1) + ld 31,184(1) + addi 1,1,192 +.Labort: + blr +.long 0 +.byte 0,12,4,1,0x80,5,4,0 +.size poly1305_blocks,.-.poly1305_blocks +.size .poly1305_blocks,.-.poly1305_blocks + +.globl poly1305_emit +.type poly1305_emit,@function +.section ".opd","aw" +.align 3 +poly1305_emit: +.quad .poly1305_emit,.TOC.@tocbase,0 +.previous + +.align 4 +.poly1305_emit: + ld 7,0(3) + ld 8,8(3) + ld 9,16(3) + ld 6,0(5) + ld 5,8(5) + + addic 10,7,5 + addze 11,8 + addze 12,9 + + srdi 0,12,2 + neg 0,0 + + andc 7,7,0 + and 10,10,0 + andc 8,8,0 + and 11,11,0 + or 7,7,10 + or 8,8,11 + rotldi 6,6,32 + rotldi 5,5,32 + addc 7,7,6 + adde 8,8,5 + rldicl 0,7,32,32 + li 10,4 + stwbrx 7,0,4 + rldicl 7,8,32,32 + li 11,8 + stwbrx 0,10,4 + li 12,12 + stwbrx 8,11,4 + stwbrx 7,12,4 + blr +.long 0 +.byte 0,12,0x14,0,0,0,3,0 +.size poly1305_emit,.-.poly1305_emit +.size .poly1305_emit,.-.poly1305_emit +.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 |