diff options
Diffstat (limited to 'sysdeps/sparc/sparc32/mul_1.S')
-rw-r--r-- | sysdeps/sparc/sparc32/mul_1.S | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/sysdeps/sparc/sparc32/mul_1.S b/sysdeps/sparc/sparc32/mul_1.S index 142fd8ba2a..d39ec61028 100644 --- a/sysdeps/sparc/sparc32/mul_1.S +++ b/sysdeps/sparc/sparc32/mul_1.S @@ -1,20 +1,20 @@ ! SPARC __mpn_mul_1 -- Multiply a limb vector with a limb and store ! the result in a second limb vector. - -! Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. - +! +! Copyright (C) 1992, 1993, 1994, 1997 Free Software Foundation, Inc. +! ! This file is part of the GNU MP Library. - +! ! The GNU MP Library is free software; you can redistribute it and/or modify ! it under the terms of the GNU Library General Public License as published by ! the Free Software Foundation; either version 2 of the License, or (at your ! option) any later version. - +! ! The GNU MP 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 Library General Public ! License for more details. - +! ! You should have received a copy of the GNU Library General Public License ! along with the GNU MP Library; see the file COPYING.LIB. If not, write to ! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, @@ -22,10 +22,10 @@ ! INPUT PARAMETERS -! res_ptr o0 -! s1_ptr o1 -! size o2 -! s2_limb o3 +! RES_PTR o0 +! S1_PTR o1 +! SIZE o2 +! S2_LIMB o3 ! ADD CODE FOR SMALL MULTIPLIERS! !1: ld @@ -89,12 +89,9 @@ ! sll a,29,y2 ! st x, -#include "sysdep.h" +#include <sysdep.h> -.text - .align 4 - .global C_SYMBOL_NAME(__mpn_mul_1) -C_SYMBOL_NAME(__mpn_mul_1): +ENTRY(__mpn_mul_1) ! Make S1_PTR and RES_PTR point at the end of their blocks ! and put (- 4 x SIZE) in index/loop counter. sll %o2,2,%o2 @@ -103,16 +100,16 @@ C_SYMBOL_NAME(__mpn_mul_1): sub %g0,%o2,%o2 cmp %o3,0xfff - bgu Large + bgu LOC(large) nop ld [%o1+%o2],%o5 mov 0,%o0 - b L0 + b LOC(0) add %o4,-4,%o4 -Loop0: +LOC(loop0): st %g1,[%o4+%o2] -L0: wr %g0,%o3,%y +LOC(0): wr %g0,%o3,%y sra %o5,31,%g2 and %o3,%g2,%g2 andcc %g1,0,%g1 @@ -138,21 +135,22 @@ L0: wr %g0,%o3,%y addcc %g1,%o0,%g1 addx %g2,%g4,%o0 ! add sign-compensation and cy to hi limb addcc %o2,4,%o2 ! loop counter - bne,a Loop0 + bne,a LOC(loop0) ld [%o1+%o2],%o5 retl st %g1,[%o4+%o2] -Large: ld [%o1+%o2],%o5 +LOC(large): + ld [%o1+%o2],%o5 mov 0,%o0 sra %o3,31,%g4 ! g4 = mask of ones iff S2_LIMB < 0 - b L1 + b LOC(1) add %o4,-4,%o4 -Loop: +LOC(loop): st %g3,[%o4+%o2] -L1: wr %g0,%o5,%y +LOC(1): wr %g0,%o5,%y and %o5,%g4,%g2 ! g2 = S1_LIMB iff S2_LIMB < 0, else 0 andcc %g0,%g0,%g1 mulscc %g1,%o3,%g1 @@ -192,8 +190,10 @@ L1: wr %g0,%o5,%y addcc %g3,%o0,%g3 addx %g2,%g1,%o0 ! add sign-compensation and cy to hi limb addcc %o2,4,%o2 ! loop counter - bne,a Loop + bne,a LOC(loop) ld [%o1+%o2],%o5 retl st %g3,[%o4+%o2] + +END(__mpn_mul_1) |