Signed-off-by: Amitay Isaacs <ami...@ozlabs.org>
---
 powerpc64/ecc-secp192r1-modp.asm | 93 ++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)
 create mode 100644 powerpc64/ecc-secp192r1-modp.asm

diff --git a/powerpc64/ecc-secp192r1-modp.asm b/powerpc64/ecc-secp192r1-modp.asm
new file mode 100644
index 00000000..97c71a83
--- /dev/null
+++ b/powerpc64/ecc-secp192r1-modp.asm
@@ -0,0 +1,93 @@
+C powerpc64/ecc-secp192r1-modp.asm
+
+ifelse(`
+   Copyright (C) 2021 Amitay Isaacs, IBM Corporation
+
+   This file is part of GNU Nettle.
+
+   GNU Nettle is free software: you can redistribute it and/or
+   modify it under the terms of either:
+
+     * the GNU Lesser General Public License as published by the Free
+       Software Foundation; either version 3 of the License, or (at your
+       option) any later version.
+
+   or
+
+     * the GNU General Public License as published by the Free
+       Software Foundation; either version 2 of the License, or (at your
+       option) any later version.
+
+   or both in parallel, as here.
+
+   GNU Nettle is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received copies of the GNU General Public License and
+   the GNU Lesser General Public License along with this program.  If
+   not, see http://www.gnu.org/licenses/.
+')
+
+       .file "ecc-secp192r1-modp.asm"
+
+define(`RP', `r4')
+define(`XP', `r5')
+
+define(`T0', `r6')
+define(`T1', `r7')
+define(`T2', `r8')
+define(`T3', `r9')
+define(`C1', `r10')
+define(`C2', `r11')
+
+       C void ecc_secp192r1_modp (const struct ecc_modulo *m, mp_limb_t *rp)
+       .text
+define(`FUNC_ALIGN', `5')
+PROLOGUE(_nettle_ecc_secp192r1_modp)
+       ld      T0, 0(XP)
+       ld      T1, 8(XP)
+       ld      T2, 16(XP)
+
+       li      C1, 0
+       li      C2, 0
+
+       ld      T3, 24(XP)
+       addc    T0, T3, T0
+       adde    T1, T3, T1
+       addze   T2, T2
+       addze   C1, C1
+
+       ld      T3, 32(XP)
+       addc    T1, T3, T1
+       adde    T2, T3, T2
+       addze   C1, C1
+
+       ld      T3, 40(XP)
+       addc    T0, T3, T0
+       adde    T1, T3, T1
+       adde    T2, T3, T2
+       addze   C1, C1
+
+       addc    T0, C1, T0
+       adde    T1, C1, T1
+       addze   T2, T2
+       addze   C2, C2
+
+       li      C1, 0
+       addc    T0, C2, T0
+       adde    T1, C2, T1
+       addze   T2, T2
+       addze   C1, C1
+
+       addc    T0, C1, T0
+       adde    T1, C1, T1
+       addze   T2, T2
+
+       std     T0, 0(RP)
+       std     T1, 8(RP)
+       std     T2, 16(RP)
+
+       blr
+EPILOGUE(_nettle_ecc_secp192r1_modp)
-- 
2.33.1

_______________________________________________
nettle-bugs mailing list
nettle-bugs@lists.lysator.liu.se
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs

Reply via email to