Index: gcc/gmp/mpn/pa64/aorslsh1_n.asm |
diff --git a/gcc/gmp/mpn/pa64/aorslsh1_n.asm b/gcc/gmp/mpn/pa64/aorslsh1_n.asm |
deleted file mode 100644 |
index b2cca7a3568e3ccf66cab92d51544442044669c3..0000000000000000000000000000000000000000 |
--- a/gcc/gmp/mpn/pa64/aorslsh1_n.asm |
+++ /dev/null |
@@ -1,217 +0,0 @@ |
-dnl PA64 mpn_addlsh1_n/mpn_sublsh1_n -- rp[] = up[] +- (vp[] << 1). |
- |
-dnl Copyright 2003 Free Software Foundation, Inc. |
- |
-dnl This file is part of the GNU MP Library. |
- |
-dnl The GNU MP Library is free software; you can redistribute it and/or modify |
-dnl it under the terms of the GNU Lesser General Public License as published |
-dnl by the Free Software Foundation; either version 3 of the License, or (at |
-dnl your option) any later version. |
- |
-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 Lesser General Public |
-dnl License for more details. |
- |
-dnl You should have received a copy of the GNU Lesser General Public License |
-dnl along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. |
- |
-include(`../config.m4') |
- |
-C cycles/limb |
-C 8000,8200: 2 |
-C 8500,8600,8700: 1.75 |
- |
-C TODO |
-C * Write special feed-in code for each (n mod 8). (See the ia64 code.) |
-C * Try to make this run at closer to 1.5 c/l. |
-C * Set up register aliases (define(`u0',`%r19')). |
-C * Explicitly align loop. |
- |
-dnl INPUT PARAMETERS |
-define(`rp',`%r26') |
-define(`up',`%r25') |
-define(`vp',`%r24') |
-define(`n',`%r23') |
- |
-ifdef(`OPERATION_addlsh1_n',` |
- define(ADCSBC, `add,dc') |
- define(INITC, `ldi 0,') |
- define(func, mpn_addlsh1_n) |
-') |
-ifdef(`OPERATION_sublsh1_n',` |
- define(ADCSBC, `sub,db') |
- define(INITC, `ldi 1,') |
- define(func, mpn_sublsh1_n) |
-') |
- |
-MULFUNC_PROLOGUE(mpn_addlsh1_n mpn_sublsh1_n) |
- |
-ifdef(`HAVE_ABI_2_0w',` |
- define(LEVEL, `.level 2.0w') |
- define(RETREG, `%r28') |
- define(CLRRET1, `dnl') |
-') |
-ifdef(`HAVE_ABI_2_0n',` |
- define(LEVEL, `.level 2.0') |
- define(RETREG, `%r29') |
- define(CLRRET1, `ldi 0, %r28') |
-') |
- |
- LEVEL |
-PROLOGUE(func) |
- std,ma %r3, 0x100(%r30) C save reg |
- |
- INITC %r1 C init saved cy |
- |
-C Primitive code for the first (n mod 8) limbs: |
- extrd,u n, 63, 3, %r22 C count for loop0 |
- comib,= 0, %r22, L(unrolled) C skip loop0? |
- copy %r0, %r28 |
-LDEF(loop0) |
- ldd 0(vp), %r21 |
- ldo 8(vp), vp |
- ldd 0(up), %r19 |
- ldo 8(up), up |
- shrpd %r21, %r28, 63, %r31 |
- addi -1, %r1, %r0 C restore cy |
- ADCSBC %r19, %r31, %r29 |
- std %r29, 0(rp) |
- add,dc %r0, %r0, %r1 C save cy |
- copy %r21, %r28 |
- addib,> -1, %r22, L(loop0) |
- ldo 8(rp), rp |
- |
- addib,>= -8, n, L(unrolled) |
- addi -1, %r1, %r0 C restore cy |
- |
- shrpd %r0, %r28, 63, %r28 |
- ADCSBC %r0, %r28, RETREG |
-ifdef(`OPERATION_sublsh1_n', |
-` sub %r0, RETREG, RETREG') |
- CLRRET1 |
- |
- bve (%r2) |
- ldd,mb -0x100(%r30), %r3 |
- |
- |
-LDEF(unrolled) |
- std %r4, -0xf8(%r30) C save reg |
- ldd 0(vp), %r4 |
- std %r5, -0xf0(%r30) C save reg |
- ldd 8(vp), %r5 |
- std %r6, -0xe8(%r30) C save reg |
- ldd 16(vp), %r6 |
- std %r7, -0xe0(%r30) C save reg |
- |
- ldd 24(vp), %r7 |
- shrpd %r4, %r28, 63, %r31 |
- std %r8, -0xd8(%r30) C save reg |
- ldd 32(vp), %r8 |
- shrpd %r5, %r4, 63, %r4 |
- std %r9, -0xd0(%r30) C save reg |
- ldd 40(vp), %r9 |
- shrpd %r6, %r5, 63, %r5 |
- ldd 48(vp), %r3 |
- shrpd %r7, %r6, 63, %r6 |
- ldd 56(vp), %r28 |
- shrpd %r8, %r7, 63, %r7 |
- ldd 0(up), %r19 |
- shrpd %r9, %r8, 63, %r8 |
- ldd 8(up), %r20 |
- shrpd %r3, %r9, 63, %r9 |
- ldd 16(up), %r21 |
- shrpd %r28, %r3, 63, %r3 |
- ldd 24(up), %r22 |
- |
- nop C alignment FIXME |
- addib,<= -8, n, L(end) |
- addi -1, %r1, %r0 C restore cy |
-LDEF(loop) |
- ADCSBC %r19, %r31, %r29 |
- ldd 32(up), %r19 |
- std %r29, 0(rp) |
- ADCSBC %r20, %r4, %r29 |
- ldd 40(up), %r20 |
- std %r29, 8(rp) |
- ADCSBC %r21, %r5, %r29 |
- ldd 48(up), %r21 |
- std %r29, 16(rp) |
- ADCSBC %r22, %r6, %r29 |
- ldd 56(up), %r22 |
- std %r29, 24(rp) |
- ADCSBC %r19, %r7, %r29 |
- ldd 64(vp), %r4 |
- std %r29, 32(rp) |
- ADCSBC %r20, %r8, %r29 |
- ldd 72(vp), %r5 |
- std %r29, 40(rp) |
- ADCSBC %r21, %r9, %r29 |
- ldd 80(vp), %r6 |
- std %r29, 48(rp) |
- ADCSBC %r22, %r3, %r29 |
- std %r29, 56(rp) |
- |
- add,dc %r0, %r0, %r1 C save cy |
- |
- ldd 88(vp), %r7 |
- shrpd %r4, %r28, 63, %r31 |
- ldd 96(vp), %r8 |
- shrpd %r5, %r4, 63, %r4 |
- ldd 104(vp), %r9 |
- shrpd %r6, %r5, 63, %r5 |
- ldd 112(vp), %r3 |
- shrpd %r7, %r6, 63, %r6 |
- ldd 120(vp), %r28 |
- shrpd %r8, %r7, 63, %r7 |
- ldd 64(up), %r19 |
- shrpd %r9, %r8, 63, %r8 |
- ldd 72(up), %r20 |
- shrpd %r3, %r9, 63, %r9 |
- ldd 80(up), %r21 |
- shrpd %r28, %r3, 63, %r3 |
- ldd 88(up), %r22 |
- |
- ldo 64(vp), vp |
- ldo 64(rp), rp |
- ldo 64(up), up |
- addib,> -8, n, L(loop) |
- addi -1, %r1, %r0 C restore cy |
-LDEF(end) |
- ADCSBC %r19, %r31, %r29 |
- ldd 32(up), %r19 |
- std %r29, 0(rp) |
- ADCSBC %r20, %r4, %r29 |
- ldd 40(up), %r20 |
- std %r29, 8(rp) |
- ADCSBC %r21, %r5, %r29 |
- ldd 48(up), %r21 |
- std %r29, 16(rp) |
- ADCSBC %r22, %r6, %r29 |
- ldd 56(up), %r22 |
- std %r29, 24(rp) |
- ADCSBC %r19, %r7, %r29 |
- ldd -0xf8(%r30), %r4 C restore reg |
- std %r29, 32(rp) |
- ADCSBC %r20, %r8, %r29 |
- ldd -0xf0(%r30), %r5 C restore reg |
- std %r29, 40(rp) |
- ADCSBC %r21, %r9, %r29 |
- ldd -0xe8(%r30), %r6 C restore reg |
- std %r29, 48(rp) |
- ADCSBC %r22, %r3, %r29 |
- ldd -0xe0(%r30), %r7 C restore reg |
- std %r29, 56(rp) |
- |
- shrpd %r0, %r28, 63, %r28 |
- ldd -0xd8(%r30), %r8 C restore reg |
- ADCSBC %r0, %r28, RETREG |
-ifdef(`OPERATION_sublsh1_n', |
-` sub %r0, RETREG, RETREG') |
- CLRRET1 |
- |
- ldd -0xd0(%r30), %r9 C restore reg |
- bve (%r2) |
- ldd,mb -0x100(%r30), %r3 C restore reg |
-EPILOGUE() |