| dnl Alpha mpn_copyd -- copy, decrementing. |
| |
| dnl Copyright 2002, 2003 Free Software Foundation, Inc. |
| |
| dnl This file is part of the GNU MP Library. |
| dnl |
| dnl The GNU MP Library is free software; you can redistribute it and/or modify |
| dnl it under the terms of either: |
| dnl |
| dnl * the GNU Lesser General Public License as published by the Free |
| dnl Software Foundation; either version 3 of the License, or (at your |
| dnl option) any later version. |
| dnl |
| dnl or |
| dnl |
| dnl * the GNU General Public License as published by the Free Software |
| dnl Foundation; either version 2 of the License, or (at your option) any |
| dnl later version. |
| dnl |
| dnl or both in parallel, as here. |
| dnl |
| dnl The GNU MP Library is distributed in the hope that it will be useful, but |
| dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
| dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| dnl for more details. |
| dnl |
| dnl You should have received copies of the GNU General Public License and the |
| dnl GNU Lesser General Public License along with the GNU MP Library. If not, |
| dnl see https://www.gnu.org/licenses/. |
| |
| include(`../config.m4') |
| |
| C cycles/limb |
| C EV4: 4 |
| C EV5: 1.75 |
| C EV6: 1 |
| |
| C INPUT PARAMETERS |
| C rp r16 |
| C up r17 |
| C n r18 |
| |
| |
| ASM_START() |
| PROLOGUE(mpn_copyd) |
| s8addq r18,r16,r16 C E0 |
| s8addq r18,r17,r17 C E1 |
| lda r18,-8(r18) C E0 |
| blt r18,$Lend C E1 |
| $Loop: ldq r0,-8(r17) C E0 |
| ldq r1,-16(r17) C E1 |
| ldq r2,-24(r17) C E0 |
| ldq r3,-32(r17) C E1 |
| ldq r4,-40(r17) C E0 |
| ldq r5,-48(r17) C E1 |
| ldq r6,-56(r17) C E0 |
| ldq r7,-64(r17) C E1 |
| stq r0,-8(r16) C E0 |
| lda r17,-64(r17) C E1 |
| stq r1,-16(r16) C E0 |
| bis r31, r31, r31 C E1 |
| stq r2,-24(r16) C E0 |
| lda r18,-8(r18) C E1 |
| stq r3,-32(r16) C E0 |
| bis r31, r31, r31 C E1 |
| stq r4,-40(r16) C E0 |
| bis r31, r31, r31 C E1 |
| stq r5,-48(r16) C E0 |
| bis r31, r31, r31 C E1 |
| stq r6,-56(r16) C E0 |
| bis r31, r31, r31 C E1 |
| stq r7,-64(r16) C E0 |
| lda r16,-64(r16) C E1 |
| bge r18,$Loop C E1 |
| $Lend: lda r18,7(r18) C E0 |
| blt r18,$Lret C E1 |
| ldq r0,-8(r17) C E0 |
| beq r18,$Lend0 C E1 |
| $Loop0: stq r0,-8(r16) C E0 |
| lda r16,-8(r16) C E1 |
| ldq r0,-16(r17) C E0 |
| lda r18,-1(r18) C E1 |
| lda r17,-8(r17) C E0 |
| bgt r18,$Loop0 C E1 |
| $Lend0: stq r0,-8(r16) C E0 |
| $Lret: ret r31,(r26),1 C E1 |
| EPILOGUE(mpn_copyd) |
| ASM_END() |