aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/sparc/sparc32/submul_1.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/sparc/sparc32/submul_1.S')
-rw-r--r--sysdeps/sparc/sparc32/submul_1.S50
1 files changed, 25 insertions, 25 deletions
diff --git a/sysdeps/sparc/sparc32/submul_1.S b/sysdeps/sparc/sparc32/submul_1.S
index a8ebd501a7..805699b7b2 100644
--- a/sysdeps/sparc/sparc32/submul_1.S
+++ b/sysdeps/sparc/sparc32/submul_1.S
@@ -1,20 +1,20 @@
! SPARC __mpn_submul_1 -- Multiply a limb vector with a limb and subtract
! the result from 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,17 +22,14 @@
! INPUT PARAMETERS
-! res_ptr o0
-! s1_ptr o1
-! size o2
-! s2_limb o3
+! RES_PTR o0
+! S1_PTR o1
+! SIZE o2
+! S2_LIMB o3
-#include "sysdep.h"
+#include <sysdep.h>
-.text
- .align 4
- .global C_SYMBOL_NAME(__mpn_submul_1)
-C_SYMBOL_NAME(__mpn_submul_1):
+ENTRY(__mpn_submul_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
@@ -41,19 +38,19 @@ C_SYMBOL_NAME(__mpn_submul_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):
subcc %o5,%g1,%g1
ld [%o1+%o2],%o5
addx %o0,%g0,%o0
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
@@ -79,7 +76,7 @@ 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 Loop0
+ bne LOC(loop0)
ld [%o4+%o2],%o5
subcc %o5,%g1,%g1
@@ -88,17 +85,18 @@ L0: wr %g0,%o3,%y
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):
subcc %o5,%g3,%g3
ld [%o1+%o2],%o5
addx %o0,%g0,%o0
st %g3,[%o4+%o2]
-L1: wr %g0,%o5,%y
+LOC(1): wr %g0,%o5,%y
and %o5,%g4,%g2
andcc %g0,%g0,%g1
mulscc %g1,%o3,%g1
@@ -138,10 +136,12 @@ L1: wr %g0,%o5,%y
addcc %g3,%o0,%g3
addx %g2,%g1,%o0
addcc %o2,4,%o2
- bne Loop
+ bne LOC(loop)
ld [%o4+%o2],%o5
subcc %o5,%g3,%g3
addx %o0,%g0,%o0
retl
st %g3,[%o4+%o2]
+
+END(__mpn_submul_1)