summaryrefslogtreecommitdiff
path: root/ports/sysdeps/arm/addmul_1.S
diff options
context:
space:
mode:
Diffstat (limited to 'ports/sysdeps/arm/addmul_1.S')
-rw-r--r--ports/sysdeps/arm/addmul_1.S73
1 files changed, 0 insertions, 73 deletions
diff --git a/ports/sysdeps/arm/addmul_1.S b/ports/sysdeps/arm/addmul_1.S
deleted file mode 100644
index fab1ae8cd4..0000000000
--- a/ports/sysdeps/arm/addmul_1.S
+++ /dev/null
@@ -1,73 +0,0 @@
-/* mpn_addmul_1 -- multiply and accumulate bignums.
- Copyright (C) 2013-2014 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-
- .syntax unified
- .text
-
-@ cycles/limb
-@ StrongArm ?
-@ Cortex-A8 ?
-@ Cortex-A9 ?
-@ Cortex-A15 4
-
-/* mp_limb_t mpn_addmul_1(res_ptr, src1_ptr, size, s2_limb) */
-
-ENTRY (__mpn_addmul_1)
- push { r4, r5, r6, r7 }
- cfi_adjust_cfa_offset (16)
- cfi_rel_offset (r4, 0)
- cfi_rel_offset (r5, 4)
- cfi_rel_offset (r6, 8)
- cfi_rel_offset (r7, 12)
-
- sfi_breg r1, \
- ldr r6, [\B], #4
- sfi_breg r0, \
- ldr r5, [\B]
- mov r4, #0 /* init carry in */
- b 1f
-0:
- sfi_breg r1, \
- ldr r6, [\B], #4 /* load next ul */
- adds r7, r4, r5 /* (out, c) = cl + lpl */
- sfi_breg r0, \
- ldr r5, [\B, #4] /* load next rl */
- adc r4, ip, #0 /* cl = hpl + c */
- sfi_breg r0, \
- str r7, [\B], #4
-1:
- mov ip, #0 /* zero-extend rl */
- umlal r5, ip, r6, r3 /* (hpl, lpl) = ul * vl + rl */
- subs r2, r2, #1
- bne 0b
-
- adds r4, r4, r5 /* (out, c) = cl + llpl */
- sfi_breg r0, \
- str r4, [\B]
- adc r0, ip, #0 /* return hpl + c */
-
- pop { r4, r5, r6, r7 }
- cfi_adjust_cfa_offset (-16)
- cfi_restore (r4)
- cfi_restore (r5)
- cfi_restore (r6)
- cfi_restore (r7)
- DO_RET (lr)
-END (__mpn_addmul_1)