Update.
[glibc.git] / sysdeps / mips / mips3 / sub_n.s
blob56c77d8bc4e7f4afa5d2614b660b65127f28610c
1 # MIPS3 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
2 # store difference in a third limb vector.
4 # Copyright (C) 1995 Free Software Foundation, Inc.
6 # This file is part of the GNU MP Library.
8 # The GNU MP Library is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU Library General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or (at your
11 # option) any later version.
13 # The GNU MP Library is distributed in the hope that it will be useful, but
14 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
16 # License for more details.
18 # You should have received a copy of the GNU Library General Public License
19 # along with the GNU MP Library; see the file COPYING.LIB. If not, write to
20 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 # MA 02111-1307, USA.
24 # INPUT PARAMETERS
25 # res_ptr $4
26 # s1_ptr $5
27 # s2_ptr $6
28 # size $7
30 .text
31 .align 2
32 .globl __mpn_sub_n
33 .ent __mpn_sub_n
34 __mpn_sub_n:
35 .set noreorder
36 .set nomacro
38 ld $10,0($5)
39 ld $11,0($6)
41 daddiu $7,$7,-1
42 and $9,$7,4-1 # number of limbs in first loop
43 beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
44 move $2,$0
46 dsubu $7,$7,$9
48 .Loop0: daddiu $9,$9,-1
49 ld $12,8($5)
50 daddu $11,$11,$2
51 ld $13,8($6)
52 sltu $8,$11,$2
53 dsubu $11,$10,$11
54 sltu $2,$10,$11
55 sd $11,0($4)
56 or $2,$2,$8
58 daddiu $5,$5,8
59 daddiu $6,$6,8
60 move $10,$12
61 move $11,$13
62 bne $9,$0,.Loop0
63 daddiu $4,$4,8
65 .L0: beq $7,$0,.Lend
66 nop
68 .Loop: daddiu $7,$7,-4
70 ld $12,8($5)
71 daddu $11,$11,$2
72 ld $13,8($6)
73 sltu $8,$11,$2
74 dsubu $11,$10,$11
75 sltu $2,$10,$11
76 sd $11,0($4)
77 or $2,$2,$8
79 ld $10,16($5)
80 daddu $13,$13,$2
81 ld $11,16($6)
82 sltu $8,$13,$2
83 dsubu $13,$12,$13
84 sltu $2,$12,$13
85 sd $13,8($4)
86 or $2,$2,$8
88 ld $12,24($5)
89 daddu $11,$11,$2
90 ld $13,24($6)
91 sltu $8,$11,$2
92 dsubu $11,$10,$11
93 sltu $2,$10,$11
94 sd $11,16($4)
95 or $2,$2,$8
97 ld $10,32($5)
98 daddu $13,$13,$2
99 ld $11,32($6)
100 sltu $8,$13,$2
101 dsubu $13,$12,$13
102 sltu $2,$12,$13
103 sd $13,24($4)
104 or $2,$2,$8
106 daddiu $5,$5,32
107 daddiu $6,$6,32
109 bne $7,$0,.Loop
110 daddiu $4,$4,32
112 .Lend: daddu $11,$11,$2
113 sltu $8,$11,$2
114 dsubu $11,$10,$11
115 sltu $2,$10,$11
116 sd $11,0($4)
117 j $31
118 or $2,$2,$8
120 .end __mpn_sub_n