diff options
Diffstat (limited to 'sys/crypto/openssl/powerpc64le/ecp_nistp384-ppc64.S')
-rw-r--r-- | sys/crypto/openssl/powerpc64le/ecp_nistp384-ppc64.S | 1526 |
1 files changed, 1526 insertions, 0 deletions
diff --git a/sys/crypto/openssl/powerpc64le/ecp_nistp384-ppc64.S b/sys/crypto/openssl/powerpc64le/ecp_nistp384-ppc64.S new file mode 100644 index 000000000000..3719683097ef --- /dev/null +++ b/sys/crypto/openssl/powerpc64le/ecp_nistp384-ppc64.S @@ -0,0 +1,1526 @@ +/* Do not modify. This file is auto-generated from ecp_nistp384-ppc64.pl. */ +.machine "any" +.abiversion 2 +.text + +.globl p384_felem_mul +.type p384_felem_mul,@function +.type p384_felem_mul,@function +.align 4 +p384_felem_mul: +.localentry p384_felem_mul,0 + + + stdu 1, -176(1) + mflr 0 + std 14, 56(1) + std 15, 64(1) + std 16, 72(1) + std 17, 80(1) + std 18, 88(1) + std 19, 96(1) + std 20, 104(1) + std 21, 112(1) + std 22, 120(1) + + bl _p384_felem_mul_core + + mtlr 0 + ld 14, 56(1) + ld 15, 64(1) + ld 16, 72(1) + ld 17, 80(1) + ld 18, 88(1) + ld 19, 96(1) + ld 20, 104(1) + ld 21, 112(1) + ld 22, 120(1) + addi 1, 1, 176 + blr +.size p384_felem_mul,.-p384_felem_mul + +.globl p384_felem_square +.type p384_felem_square,@function +.type p384_felem_square,@function +.align 4 +p384_felem_square: +.localentry p384_felem_square,0 + + + stdu 1, -176(1) + mflr 0 + std 14, 56(1) + std 15, 64(1) + std 16, 72(1) + std 17, 80(1) + + bl _p384_felem_square_core + + mtlr 0 + ld 14, 56(1) + ld 15, 64(1) + ld 16, 72(1) + ld 17, 80(1) + addi 1, 1, 176 + blr +.size p384_felem_square,.-p384_felem_square + + + + + +.type _p384_felem_mul_core,@function +.align 4 +_p384_felem_mul_core: +.localentry _p384_felem_mul_core,0 + + + ld 6,0(4) + ld 14,0(5) + ld 7,8(4) + ld 15,8(5) + ld 8,16(4) + ld 16,16(5) + ld 9,24(4) + ld 17,24(5) + ld 10,32(4) + ld 18,32(5) + ld 11,40(4) + ld 19,40(5) + ld 12,48(4) + ld 20,48(5) + + + mulld 21, 14, 6 + mulhdu 22, 14, 6 + std 21, 0(3) + std 22, 8(3) + + vxor 0, 0, 0 + + + mtvsrdd 32+13, 14, 6 + mtvsrdd 32+14, 7, 15 + .long 0x102D7023 + + + mtvsrdd 32+15, 15, 6 + mtvsrdd 32+16, 7, 16 + mtvsrdd 32+17, 0, 8 + mtvsrdd 32+18, 0, 14 + .long 0x126F8023 + .long 0x105194E3 + + + mtvsrdd 32+13, 16, 6 + mtvsrdd 32+14, 7, 17 + mtvsrdd 32+15, 14, 8 + mtvsrdd 32+16, 9, 15 + .long 0x126D7023 + .long 0x106F84E3 + + + mtvsrdd 32+13, 17, 6 + mtvsrdd 32+14, 7, 18 + mtvsrdd 32+15, 15, 8 + mtvsrdd 32+16, 9, 16 + mtvsrdd 32+17, 0, 10 + mtvsrdd 32+18, 0, 14 + .long 0x126D7023 + .long 0x108F84E3 + .long 0x10919123 + + + mtvsrdd 32+13, 18, 6 + mtvsrdd 32+14, 7, 19 + mtvsrdd 32+15, 16, 8 + mtvsrdd 32+16, 9, 17 + mtvsrdd 32+17, 14, 10 + mtvsrdd 32+18, 11, 15 + .long 0x126D7023 + .long 0x10AF84E3 + .long 0x10B19163 + + stxv 32+1, 16(3) + stxv 32+2, 32(3) + stxv 32+3, 48(3) + stxv 32+4, 64(3) + stxv 32+5, 80(3) + + + mtvsrdd 32+13, 19, 6 + mtvsrdd 32+14, 7, 20 + mtvsrdd 32+15, 17, 8 + mtvsrdd 32+16, 9, 18 + mtvsrdd 32+17, 15, 10 + mtvsrdd 32+18, 11, 16 + .long 0x126D7023 + .long 0x10CF84E3 + mtvsrdd 32+13, 0, 12 + mtvsrdd 32+14, 0, 14 + .long 0x127191A3 + .long 0x10CD74E3 + + + mtvsrdd 32+13, 19, 7 + mtvsrdd 32+14, 8, 20 + mtvsrdd 32+15, 17, 9 + mtvsrdd 32+16, 10, 18 + mtvsrdd 32+17, 15, 11 + mtvsrdd 32+18, 12, 16 + .long 0x126D7023 + .long 0x10EF84E3 + .long 0x10F191E3 + + + mtvsrdd 32+13, 19, 8 + mtvsrdd 32+14, 9, 20 + mtvsrdd 32+15, 17, 10 + mtvsrdd 32+16, 11, 18 + mtvsrdd 32+17, 0, 12 + mtvsrdd 32+18, 0, 16 + .long 0x126D7023 + .long 0x110F84E3 + .long 0x11119223 + + + mtvsrdd 32+13, 19, 9 + mtvsrdd 32+14, 10, 20 + mtvsrdd 32+15, 17, 11 + mtvsrdd 32+16, 12, 18 + .long 0x126D7023 + .long 0x112F84E3 + + + mtvsrdd 32+13, 19, 10 + mtvsrdd 32+14, 11, 20 + mtvsrdd 32+15, 0, 12 + mtvsrdd 32+16, 0, 18 + .long 0x126D7023 + .long 0x114F84E3 + + + mtvsrdd 32+17, 19, 11 + mtvsrdd 32+18, 12, 20 + .long 0x11719023 + + stxv 32+6, 96(3) + stxv 32+7, 112(3) + stxv 32+8, 128(3) + stxv 32+9, 144(3) + stxv 32+10, 160(3) + stxv 32+11, 176(3) + + + mulld 21, 20, 12 + mulhdu 22, 20, 12 + + std 21, 192(3) + std 22, 200(3) + + blr +.size _p384_felem_mul_core,.-_p384_felem_mul_core + + + + + +.type _p384_felem_square_core,@function +.align 4 +_p384_felem_square_core: +.localentry _p384_felem_square_core,0 + + + ld 6, 0(4) + ld 7, 8(4) + ld 8, 16(4) + ld 9, 24(4) + ld 10, 32(4) + ld 11, 40(4) + ld 12, 48(4) + + vxor 0, 0, 0 + + + mulld 14, 6, 6 + mulhdu 15, 6, 6 + std 14, 0(3) + std 15, 8(3) + + + add 14, 6, 6 + mtvsrdd 32+13, 0, 14 + mtvsrdd 32+14, 0, 7 + .long 0x102D7023 + + + mtvsrdd 32+15, 7, 14 + mtvsrdd 32+16, 7, 8 + .long 0x104F8023 + + + add 15, 7, 7 + mtvsrdd 32+13, 8, 14 + mtvsrdd 32+14, 15, 9 + .long 0x106D7023 + + + mtvsrdd 32+13, 9, 14 + mtvsrdd 32+14, 15, 10 + mtvsrdd 32+15, 0, 8 + .long 0x108D7023 + .long 0x108F7923 + + + mtvsrdd 32+13, 10, 14 + mtvsrdd 32+14, 15, 11 + add 16, 8, 8 + mtvsrdd 32+15, 0, 16 + mtvsrdd 32+16, 0, 9 + .long 0x10AD7023 + .long 0x10AF8163 + + stxv 32+1, 16(3) + stxv 32+2, 32(3) + stxv 32+3, 48(3) + stxv 32+4, 64(3) + + + mtvsrdd 32+13, 11, 14 + mtvsrdd 32+14, 15, 12 + mtvsrdd 32+15, 9, 16 + mtvsrdd 32+16, 9, 10 + stxv 32+5, 80(3) + .long 0x126D7023 + .long 0x10CF84E3 + + + add 17, 9, 9 + mtvsrdd 32+13, 11, 15 + mtvsrdd 32+14, 16, 12 + mtvsrdd 32+15, 0, 17 + mtvsrdd 32+16, 0, 10 + .long 0x126D7023 + .long 0x10EF84E3 + + + mtvsrdd 32+13, 11, 16 + mtvsrdd 32+14, 17, 12 + mtvsrdd 32+15, 0, 10 + .long 0x126D7023 + .long 0x110F7CE3 + + + add 14, 10, 10 + mtvsrdd 32+13, 11, 17 + mtvsrdd 32+14, 14, 12 + .long 0x112D7023 + + + mtvsrdd 32+13, 11, 14 + mtvsrdd 32+14, 11, 12 + .long 0x114D7023 + + stxv 32+6, 96(3) + stxv 32+7, 112(3) + + + + + + + + mulld 6, 12, 11 + mulhdu 7, 12, 11 + addc 8, 6, 6 + adde 9, 7, 7 + + stxv 32+8, 128(3) + stxv 32+9, 144(3) + stxv 32+10, 160(3) + + + + mulld 14, 12, 12 + mulhdu 15, 12, 12 + + std 8, 176(3) + std 9, 184(3) + std 14, 192(3) + std 15, 200(3) + + blr +.size _p384_felem_square_core,.-_p384_felem_square_core + + + + +.macro F128_X_8 _off1 _off2 + ld 9,\_off1(3) + ld 8,\_off2(3) + srdi 10,9,61 + rldimi 10,8,3,0 + sldi 9,9,3 + std 9,\_off1(3) + std 10,\_off2(3) +.endm + +.globl p384_felem128_mul_by_8 +.type p384_felem128_mul_by_8,@function +.type p384_felem128_mul_by_8,@function +.align 4 +p384_felem128_mul_by_8: +.localentry p384_felem128_mul_by_8,0 + + + F128_X_8 0, 8 + + F128_X_8 16, 24 + + F128_X_8 32, 40 + + F128_X_8 48, 56 + + F128_X_8 64, 72 + + F128_X_8 80, 88 + + F128_X_8 96, 104 + + F128_X_8 112, 120 + + F128_X_8 128, 136 + + F128_X_8 144, 152 + + F128_X_8 160, 168 + + F128_X_8 176, 184 + + F128_X_8 192, 200 + + blr +.size p384_felem128_mul_by_8,.-p384_felem128_mul_by_8 + + + + +.macro F128_X_2 _off1 _off2 + ld 9,\_off1(3) + ld 8,\_off2(3) + srdi 10,9,63 + rldimi 10,8,1,0 + sldi 9,9,1 + std 9,\_off1(3) + std 10,\_off2(3) +.endm + +.globl p384_felem128_mul_by_2 +.type p384_felem128_mul_by_2,@function +.type p384_felem128_mul_by_2,@function +.align 4 +p384_felem128_mul_by_2: +.localentry p384_felem128_mul_by_2,0 + + + F128_X_2 0, 8 + + F128_X_2 16, 24 + + F128_X_2 32, 40 + + F128_X_2 48, 56 + + F128_X_2 64, 72 + + F128_X_2 80, 88 + + F128_X_2 96, 104 + + F128_X_2 112, 120 + + F128_X_2 128, 136 + + F128_X_2 144, 152 + + F128_X_2 160, 168 + + F128_X_2 176, 184 + + F128_X_2 192, 200 + + blr +.size p384_felem128_mul_by_2,.-p384_felem128_mul_by_2 + +.globl p384_felem_diff128 +.type p384_felem_diff128,@function +.type p384_felem_diff128,@function +.align 4 +p384_felem_diff128: +.localentry p384_felem_diff128,0 + + + addis 5, 2, .LConst_two127@toc@ha + addi 5, 5, .LConst_two127@toc@l + + ld 10, 0(3) + ld 8, 8(3) + li 9, 0 + addc 10, 10, 9 + li 7, -1 + rldicr 7, 7, 0, 0 + adde 8, 8, 7 + ld 11, 0(4) + ld 12, 8(4) + subfc 11, 11, 10 + subfe 12, 12, 8 + std 11, 0(3) + std 12, 8(3) + + + ld 8, 16(3) + ld 7, 24(3) + ld 10, 24(5) + addc 8, 8, 9 + adde 7, 7, 10 + ld 11, 16(4) + ld 12, 24(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 16(3) + std 12, 24(3) + + ld 8, 32(3) + ld 7, 40(3) + addc 8, 8, 9 + adde 7, 7, 10 + ld 11, 32(4) + ld 12, 40(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 32(3) + std 12, 40(3) + + ld 8, 48(3) + ld 7, 56(3) + addc 8, 8, 9 + adde 7, 7, 10 + ld 11, 48(4) + ld 12, 56(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 48(3) + std 12, 56(3) + + ld 8, 64(3) + ld 7, 72(3) + addc 8, 8, 9 + adde 7, 7, 10 + ld 11, 64(4) + ld 12, 72(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 64(3) + std 12, 72(3) + + ld 8, 80(3) + ld 7, 88(3) + addc 8, 8, 9 + adde 7, 7, 10 + ld 11, 80(4) + ld 12, 88(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 80(3) + std 12, 88(3) + + ld 8, 96(3) + ld 7, 104(3) + ld 6, 40(5) + addc 8, 8, 9 + adde 7, 7, 6 + ld 11, 96(4) + ld 12, 104(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 96(3) + std 12, 104(3) + + ld 8, 112(3) + ld 7, 120(3) + ld 6, 56(5) + addc 8, 8, 9 + adde 7, 7, 6 + ld 11, 112(4) + ld 12, 120(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 112(3) + std 12, 120(3) + + ld 8, 128(3) + ld 7, 136(3) + ld 6, 72(5) + addc 8, 8, 9 + adde 7, 7, 6 + ld 11, 128(4) + ld 12, 136(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 128(3) + std 12, 136(3) + + ld 8, 144(3) + ld 7, 152(3) + addc 8, 8, 9 + adde 7, 7, 10 + ld 11, 144(4) + ld 12, 152(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 144(3) + std 12, 152(3) + + ld 8, 160(3) + ld 7, 168(3) + addc 8, 8, 9 + adde 7, 7, 10 + ld 11, 160(4) + ld 12, 168(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 160(3) + std 12, 168(3) + + ld 8, 176(3) + ld 7, 184(3) + addc 8, 8, 9 + adde 7, 7, 10 + ld 11, 176(4) + ld 12, 184(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 176(3) + std 12, 184(3) + + ld 8, 192(3) + ld 7, 200(3) + addc 8, 8, 9 + adde 7, 7, 10 + ld 11, 192(4) + ld 12, 200(4) + subfc 11, 11, 8 + subfe 12, 12, 7 + std 11, 192(3) + std 12, 200(3) + + blr +.size p384_felem_diff128,.-p384_felem_diff128 + +.data +.align 4 +.LConst_two127: + +.long 0x00000000, 0x00000000, 0x00000000, 0x80000000 + +.long 0x00000000, 0x00000000, 0xffffff80, 0x7fffffff + +.long 0x00000000, 0x00000000, 0xffff7f80, 0x80007fff + +.long 0x00000000, 0x00000000, 0xffffff80, 0x7f7fffff + +.long 0x00000000, 0x00000000, 0x7fffff80, 0x7fffffff + +.abiversion 2 +.text + +.globl p384_felem_diff_128_64 +.type p384_felem_diff_128_64,@function +.type p384_felem_diff_128_64,@function +.align 4 +p384_felem_diff_128_64: +.localentry p384_felem_diff_128_64,0 + + addis 5, 2, .LConst_128_two64@toc@ha + addi 5, 5, .LConst_128_two64@toc@l + + ld 9, 0(3) + ld 10, 8(3) + ld 8, 48(5) + li 7, 0 + addc 9, 9, 8 + li 6, 1 + adde 10, 10, 6 + ld 11, 0(4) + subfc 8, 11, 9 + subfe 12, 7, 10 + std 8, 0(3) + std 12, 8(3) + + ld 9, 16(3) + ld 10, 24(3) + ld 8, 0(5) + addc 9, 9, 8 + addze 10, 10 + ld 11, 8(4) + subfc 11, 11, 9 + subfe 12, 7, 10 + std 11, 16(3) + std 12, 24(3) + + ld 9, 32(3) + ld 10, 40(3) + ld 8, 16(5) + addc 9, 9, 8 + addze 10, 10 + ld 11, 16(4) + subfc 11, 11, 9 + subfe 12, 7, 10 + std 11, 32(3) + std 12, 40(3) + + ld 10, 48(3) + ld 8, 56(3) + + li 9, -256 + addc 10, 10, 9 + addze 8, 8 + ld 11, 24(4) + subfc 11, 11, 10 + subfe 12, 7, 8 + std 11, 48(3) + std 12, 56(3) + + ld 10, 64(3) + ld 8, 72(3) + addc 10, 10, 9 + addze 8, 8 + ld 11, 32(4) + subfc 11, 11, 10 + subfe 12, 7, 8 + std 11, 64(3) + std 12, 72(3) + + ld 10, 80(3) + ld 8, 88(3) + addc 10, 10, 9 + addze 8, 8 + ld 11, 40(4) + subfc 11, 11, 10 + subfe 12, 7, 8 + std 11, 80(3) + std 12, 88(3) + + ld 10, 96(3) + ld 8, 104(3) + addc 10, 10, 9 + addze 9, 8 + ld 11, 48(4) + subfc 11, 11, 10 + subfe 12, 7, 9 + std 11, 96(3) + std 12, 104(3) + + blr +.size p384_felem_diff_128_64,.-p384_felem_diff_128_64 + +.data +.align 4 +.LConst_128_two64: + +.long 0xffffff00, 0xfeffffff, 0x00000000, 0x00000000 + +.long 0xffffff00, 0xfffffffe, 0x00000000, 0x00000000 + +.long 0xffffff00, 0xffffffff, 0x00000000, 0x00000000 + +.long 0xffff0000, 0x0000ffff, 0x00000001, 0x00000000 + +.LConst_two60: + +.long 0xfffffff0, 0x0fefffff, 0x0, 0x0 + +.long 0xfffff000, 0x10000fff, 0x0, 0x0 + +.long 0xeffffff0, 0x0fffffff, 0x0, 0x0 + +.long 0xfffffff0, 0x0fffffff, 0x0, 0x0 + +.abiversion 2 +.text + + + +.globl p384_felem_diff64 +.type p384_felem_diff64,@function +.type p384_felem_diff64,@function +.align 4 +p384_felem_diff64: +.localentry p384_felem_diff64,0 + + addis 5, 2, .LConst_two60@toc@ha + addi 5, 5, .LConst_two60@toc@l + + ld 9, 0(3) + ld 8, 16(5) + li 7, 0 + add 9, 9, 8 + ld 11, 0(4) + subf 8, 11, 9 + std 8, 0(3) + + ld 9, 8(3) + ld 8, 0(5) + add 9, 9, 8 + ld 11, 8(4) + subf 11, 11, 9 + std 11, 8(3) + + ld 9, 16(3) + ld 8, 32(5) + add 9, 9, 8 + ld 11, 16(4) + subf 11, 11, 9 + std 11, 16(3) + + ld 10, 24(3) + ld 9, 48(5) + add 10, 10, 9 + ld 12, 24(4) + subf 12, 12, 10 + std 12, 24(3) + + ld 10, 32(3) + add 10, 10, 9 + ld 11, 32(4) + subf 11, 11, 10 + std 11, 32(3) + + ld 10, 40(3) + add 10, 10, 9 + ld 12, 40(4) + subf 12, 12, 10 + std 12, 40(3) + + ld 10, 48(3) + add 10, 10, 9 + ld 11, 48(4) + subf 11, 11, 10 + std 11, 48(3) + + blr +.size p384_felem_diff64,.-p384_felem_diff64 + +.abiversion 2 +.text + + + +.macro SHR o_h o_l in_h in_l nbits + srdi \o_l, \in_l, \nbits + rldimi \o_l, \in_h, 64-\nbits, 0 + srdi \o_h, \in_h, \nbits +.endm + + + + +.global p384_felem_reduce +.type p384_felem_reduce,@function +.align 4 +p384_felem_reduce: +.localentry p384_felem_reduce,0 + + + stdu 1, -208(1) + mflr 0 + std 14, 56(1) + std 15, 64(1) + std 16, 72(1) + std 17, 80(1) + std 18, 88(1) + std 19, 96(1) + std 20, 104(1) + std 21, 112(1) + std 22, 120(1) + std 23, 128(1) + std 24, 136(1) + std 25, 144(1) + std 26, 152(1) + std 27, 160(1) + std 28, 168(1) + std 29, 176(1) + std 30, 184(1) + std 31, 192(1) + + bl _p384_felem_reduce_core + + mtlr 0 + ld 14, 56(1) + ld 15, 64(1) + ld 16, 72(1) + ld 17, 80(1) + ld 18, 88(1) + ld 19, 96(1) + ld 20, 104(1) + ld 21, 112(1) + ld 22, 120(1) + ld 23, 128(1) + ld 24, 136(1) + ld 25, 144(1) + ld 26, 152(1) + ld 27, 160(1) + ld 28, 168(1) + ld 29, 176(1) + ld 30, 184(1) + ld 31, 192(1) + addi 1, 1, 208 + blr +.size p384_felem_reduce,.-p384_felem_reduce + + + + + +.type _p384_felem_reduce_core,@function +.align 4 +_p384_felem_reduce_core: +.localentry _p384_felem_reduce_core,0 + + addis 12, 2, .LConst@toc@ha + addi 12, 12, .LConst@toc@l + + + ld 11, 8(12) + + + ld 26, 96(4) + ld 27, 96+8(4) + add 27, 27, 11 + + + ld 24, 80(4) + ld 25, 80+8(4) + add 25, 25, 11 + + + ld 22, 64(4) + ld 23, 64+8(4) + add 23, 23, 11 + + + ld 20, 48(4) + ld 21, 48+8(4) + add 21, 21, 11 + + ld 11, 48+8(12) + + + ld 18, 32(4) + ld 19, 32+8(4) + add 19, 19, 11 + + ld 11, 16+8(12) + + + ld 16, 16(4) + ld 17, 16+8(4) + add 17, 17, 11 + + ld 11, 32+8(12) + + + ld 14, 0(4) + ld 15, 0+8(4) + add 15, 15, 11 + + + li 7, -1 + + + + + ld 5, 192(4) + ld 6, 192+8(4) + SHR 9, 10, 6, 5, 32 + ld 30, 128(4) + ld 31, 136(4) + addc 30, 30, 10 + adde 31, 31, 9 + + + srdi 11, 7, 32 + and 11, 11, 5 + sldi 11, 11, 24 + ld 28, 112(4) + ld 29, 120(4) + addc 28, 28, 11 + addze 29, 29 + + + SHR 9, 10, 6, 5, 8 + addc 28, 28, 10 + adde 29, 29, 9 + + + andi. 11, 5, 0xff + sldi 11, 11, 48 + addc 26, 26, 11 + addze 27, 27 + + + SHR 9, 10, 6, 5, 16 + subfc 26, 10, 26 + subfe 27, 9, 27 + + + srdi 11, 7, 48 + and 11, 11, 5 + sldi 11, 11, 40 + li 9, 0 + subfc 24, 11, 24 + subfe 25, 9, 25 + + + SHR 9, 10, 6, 5, 48 + addc 26, 26, 10 + adde 27, 27, 9 + + + srdi 11, 7, 16 + and 11, 11, 5 + sldi 11, 11, 8 + addc 24, 24, 11 + addze 25, 25 + + + + + ld 5, 176(4) + ld 6, 176+8(4) + SHR 9, 10, 6, 5, 32 + addc 28, 28, 10 + adde 29, 29, 9 + + + srdi 11, 7, 32 + and 11, 11, 5 + sldi 11, 11, 24 + addc 26, 26, 11 + addze 27, 27 + + + SHR 9, 10, 6, 5, 8 + addc 26, 26, 10 + adde 27, 27, 9 + + + andi. 11, 5, 0xff + sldi 11, 11, 48 + addc 24, 24, 11 + addze 25, 25 + + + SHR 9, 10, 6, 5, 16 + subfc 24, 10, 24 + subfe 25, 9, 25 + + + srdi 11, 7, 48 + and 11, 11, 5 + sldi 11, 11, 40 + li 9, 0 + subfc 22, 11, 22 + subfe 23, 9, 23 + + + SHR 9, 10, 6, 5, 48 + addc 24, 24, 10 + adde 25, 25, 9 + + + srdi 11, 7, 16 + and 11, 11, 5 + sldi 11, 11, 8 + addc 22, 22, 11 + addze 23, 23 + + + + + ld 5, 160(4) + ld 6, 160+8(4) + SHR 9, 10, 6, 5, 32 + addc 26, 26, 10 + adde 27, 27, 9 + + + srdi 11, 7, 32 + and 11, 11, 5 + sldi 11, 11, 24 + addc 24, 24, 11 + addze 25, 25 + + + SHR 9, 10, 6, 5, 8 + addc 24, 24, 10 + adde 25, 25, 9 + + + andi. 11, 5, 0xff + sldi 11, 11, 48 + addc 22, 22, 11 + addze 23, 23 + + + SHR 9, 10, 6, 5, 16 + subfc 22, 10, 22 + subfe 23, 9, 23 + + + srdi 11, 7, 48 + and 11, 11, 5 + sldi 11, 11, 40 + li 9, 0 + subfc 20, 11, 20 + subfe 21, 9, 21 + + + SHR 9, 10, 6, 5, 48 + addc 22, 22, 10 + adde 23, 23, 9 + + + srdi 11, 7, 16 + and 11, 11, 5 + sldi 11, 11, 8 + addc 20, 20, 11 + addze 21, 21 + + + + + ld 5, 144(4) + ld 6, 144+8(4) + SHR 9, 10, 6, 5, 32 + addc 24, 24, 10 + adde 25, 25, 9 + + + srdi 11, 7, 32 + and 11, 11, 5 + sldi 11, 11, 24 + addc 22, 22, 11 + addze 23, 23 + + + SHR 9, 10, 6, 5, 8 + addc 22, 22, 10 + adde 23, 23, 9 + + + andi. 11, 5, 0xff + sldi 11, 11, 48 + addc 20, 20, 11 + addze 21, 21 + + + SHR 9, 10, 6, 5, 16 + subfc 20, 10, 20 + subfe 21, 9, 21 + + + srdi 11, 7, 48 + and 11, 11, 5 + sldi 11, 11, 40 + li 9, 0 + subfc 18, 11, 18 + subfe 19, 9, 19 + + + SHR 9, 10, 6, 5, 48 + addc 20, 20, 10 + adde 21, 21, 9 + + + srdi 11, 7, 16 + and 11, 11, 5 + sldi 11, 11, 8 + addc 18, 18, 11 + addze 19, 19 + + + + + mr 5, 30 + mr 6, 31 + SHR 9, 10, 6, 5, 32 + addc 22, 22, 10 + adde 23, 23, 9 + + + srdi 11, 7, 32 + and 11, 11, 5 + sldi 11, 11, 24 + addc 20, 20, 11 + addze 21, 21 + + + SHR 9, 10, 6, 5, 8 + addc 20, 20, 10 + adde 21, 21, 9 + + + andi. 11, 5, 0xff + sldi 11, 11, 48 + addc 18, 18, 11 + addze 19, 19 + + + SHR 9, 10, 6, 5, 16 + subfc 18, 10, 18 + subfe 19, 9, 19 + + + srdi 11, 7, 48 + and 11, 11, 5 + sldi 11, 11, 40 + li 9, 0 + subfc 16, 11, 16 + subfe 17, 9, 17 + + + SHR 9, 10, 6, 5, 48 + addc 18, 18, 10 + adde 19, 19, 9 + + + srdi 11, 7, 16 + and 11, 11, 5 + sldi 11, 11, 8 + addc 16, 16, 11 + addze 17, 17 + + + + + mr 5, 28 + mr 6, 29 + SHR 9, 10, 6, 5, 32 + addc 20, 20, 10 + adde 21, 21, 9 + + + srdi 11, 7, 32 + and 11, 11, 5 + sldi 11, 11, 24 + addc 18, 18, 11 + addze 19, 19 + + + SHR 9, 10, 6, 5, 8 + addc 18, 18, 10 + adde 19, 19, 9 + + + andi. 11, 5, 0xff + sldi 11, 11, 48 + addc 16, 16, 11 + addze 17, 17 + + + SHR 9, 10, 6, 5, 16 + subfc 16, 10, 16 + subfe 17, 9, 17 + + + srdi 11, 7, 48 + and 11, 11, 5 + sldi 11, 11, 40 + li 9, 0 + subfc 14, 11, 14 + subfe 15, 9, 15 + + + SHR 9, 10, 6, 5, 48 + addc 16, 16, 10 + adde 17, 17, 9 + + + srdi 11, 7, 16 + and 11, 11, 5 + sldi 11, 11, 8 + addc 14, 14, 11 + addze 15, 15 + + + + + + + SHR 9, 10, 23, 22, 56 + addc 24, 24, 10 + adde 25, 25, 9 + srdi 11, 7, 8 + and 22, 22, 11 + li 23, 0 + + + + SHR 9, 10, 25, 24, 56 + addc 26, 26, 10 + adde 27, 27, 9 + and 24, 24, 11 + li 25, 0 + + + + + SHR 31, 30, 27, 26, 48 + srdi 11, 7, 16 + and 26, 26, 11 + li 27, 0 + + + + SHR 9, 10, 31, 30, 40 + addc 20, 20, 10 + adde 21, 21, 9 + + + srdi 11, 7, 24 + and 10, 30, 11 + sldi 10, 10, 16 + addc 18, 18, 10 + addze 19, 19 + + + SHR 9, 10, 31, 30, 16 + addc 18, 18, 10 + adde 19, 19, 9 + + + srdi 11, 7, 48 + and 10, 30, 11 + sldi 10, 10, 40 + addc 16, 16, 10 + addze 17, 17 + + + SHR 9, 10, 31, 30, 24 + subfc 16, 10, 16 + subfe 17, 9, 17 + + + srdi 11, 7, 40 + and 10, 30, 11 + sldi 10, 10, 32 + li 9, 0 + subfc 14, 10, 14 + subfe 15, 9, 15 + + + addc 14, 14, 30 + adde 15, 15, 31 + + + + + SHR 9, 10, 15, 14, 56 + addc 16, 16, 10 + adde 17, 17, 9 + + + srdi 11, 7, 8 + and 14, 14, 11 + li 15, 0 + + + SHR 9, 10, 17, 16, 56 + addc 18, 18, 10 + adde 19, 19, 9 + + + and 16, 16, 11 + li 17, 0 + + + SHR 9, 10, 19, 18, 56 + addc 20, 20, 10 + adde 21, 21, 9 + + + and 18, 18, 11 + li 19, 0 + + + SHR 9, 10, 21, 20, 56 + addc 22, 22, 10 + adde 23, 23, 9 + + + and 20, 20, 11 + li 21, 0 + + + SHR 9, 10, 23, 22, 56 + addc 24, 24, 10 + adde 25, 25, 9 + + + and 22, 22, 11 + + + SHR 9, 10, 25, 24, 56 + addc 26, 26, 10 + adde 27, 27, 9 + + + and 24, 24, 11 + + std 14, 0(3) + std 16, 8(3) + std 18, 16(3) + std 20, 24(3) + std 22, 32(3) + std 24, 40(3) + std 26, 48(3) + blr +.size _p384_felem_reduce_core,.-_p384_felem_reduce_core + +.data +.align 4 +.LConst: + +.long 0x0, 0x0, 0xfffffff0, 0xfffffff + +.long 0x0, 0x0, 0xfffffff0, 0xfefffff + +.long 0x0, 0x0, 0xfffff000, 0x10000fff + +.long 0x0, 0x0, 0xeffffff0, 0xfffffff + +.abiversion 2 +.text + + + + +.global p384_felem_square_reduce +.type p384_felem_square_reduce,@function +.align 4 +p384_felem_square_reduce: +.localentry p384_felem_square_reduce,0 + + stdu 1, -512(1) + mflr 0 + std 14, 56(1) + std 15, 64(1) + std 16, 72(1) + std 17, 80(1) + std 18, 88(1) + std 19, 96(1) + std 20, 104(1) + std 21, 112(1) + std 22, 120(1) + std 23, 128(1) + std 24, 136(1) + std 25, 144(1) + std 26, 152(1) + std 27, 160(1) + std 28, 168(1) + std 29, 176(1) + std 30, 184(1) + std 31, 192(1) + + std 3, 496(1) + addi 3, 1, 208 + bl _p384_felem_square_core + + mr 4, 3 + ld 3, 496(1) + bl _p384_felem_reduce_core + + ld 14, 56(1) + ld 15, 64(1) + ld 16, 72(1) + ld 17, 80(1) + ld 18, 88(1) + ld 19, 96(1) + ld 20, 104(1) + ld 21, 112(1) + ld 22, 120(1) + ld 23, 128(1) + ld 24, 136(1) + ld 25, 144(1) + ld 26, 152(1) + ld 27, 160(1) + ld 28, 168(1) + ld 29, 176(1) + ld 30, 184(1) + ld 31, 192(1) + addi 1, 1, 512 + mtlr 0 + blr +.size p384_felem_square_reduce,.-p384_felem_square_reduce + + + + +.global p384_felem_mul_reduce +.type p384_felem_mul_reduce,@function +.align 5 +p384_felem_mul_reduce: +.localentry p384_felem_mul_reduce,0 + + stdu 1, -512(1) + mflr 0 + std 14, 56(1) + std 15, 64(1) + std 16, 72(1) + std 17, 80(1) + std 18, 88(1) + std 19, 96(1) + std 20, 104(1) + std 21, 112(1) + std 22, 120(1) + std 23, 128(1) + std 24, 136(1) + std 25, 144(1) + std 26, 152(1) + std 27, 160(1) + std 28, 168(1) + std 29, 176(1) + std 30, 184(1) + std 31, 192(1) + + std 3, 496(1) + addi 3, 1, 208 + bl _p384_felem_mul_core + + mr 4, 3 + ld 3, 496(1) + bl _p384_felem_reduce_core + + ld 14, 56(1) + ld 15, 64(1) + ld 16, 72(1) + ld 17, 80(1) + ld 18, 88(1) + ld 19, 96(1) + ld 20, 104(1) + ld 21, 112(1) + ld 22, 120(1) + ld 23, 128(1) + ld 24, 136(1) + ld 25, 144(1) + ld 26, 152(1) + ld 27, 160(1) + ld 28, 168(1) + ld 29, 176(1) + ld 30, 184(1) + ld 31, 192(1) + addi 1, 1, 512 + mtlr 0 + blr +.size p384_felem_mul_reduce,.-p384_felem_mul_reduce |