Wed May 29 12:53:10 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
[glibc.git] / sysdeps / mips / sub_n.s
blob3368ef29d665ecf57d09e35222ad0bd9c7b21807
1 # MIPS2 __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 lw $10,0($5)
39 lw $11,0($6)
41 addiu $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 subu $7,$7,$9
48 .Loop0: addiu $9,$9,-1
49 lw $12,4($5)
50 addu $11,$11,$2
51 lw $13,4($6)
52 sltu $8,$11,$2
53 subu $11,$10,$11
54 sltu $2,$10,$11
55 sw $11,0($4)
56 or $2,$2,$8
58 addiu $5,$5,4
59 addiu $6,$6,4
60 move $10,$12
61 move $11,$13
62 bne $9,$0,.Loop0
63 addiu $4,$4,4
65 .L0: beq $7,$0,.Lend
66 nop
68 .Loop: addiu $7,$7,-4
70 lw $12,4($5)
71 addu $11,$11,$2
72 lw $13,4($6)
73 sltu $8,$11,$2
74 subu $11,$10,$11
75 sltu $2,$10,$11
76 sw $11,0($4)
77 or $2,$2,$8
79 lw $10,8($5)
80 addu $13,$13,$2
81 lw $11,8($6)
82 sltu $8,$13,$2
83 subu $13,$12,$13
84 sltu $2,$12,$13
85 sw $13,4($4)
86 or $2,$2,$8
88 lw $12,12($5)
89 addu $11,$11,$2
90 lw $13,12($6)
91 sltu $8,$11,$2
92 subu $11,$10,$11
93 sltu $2,$10,$11
94 sw $11,8($4)
95 or $2,$2,$8
97 lw $10,16($5)
98 addu $13,$13,$2
99 lw $11,16($6)
100 sltu $8,$13,$2
101 subu $13,$12,$13
102 sltu $2,$12,$13
103 sw $13,12($4)
104 or $2,$2,$8
106 addiu $5,$5,16
107 addiu $6,$6,16
109 bne $7,$0,.Loop
110 addiu $4,$4,16
112 .Lend: addu $11,$11,$2
113 sltu $8,$11,$2
114 subu $11,$10,$11
115 sltu $2,$10,$11
116 sw $11,0($4)
117 j $31
118 or $2,$2,$8
120 .end __mpn_sub_n