Annotation of OpenXM_contrib/gmp/mpn/mips2/lshift.s, Revision 1.1.1.1
1.1 maekawa 1: # MIPS2 __mpn_lshift --
2:
3: # Copyright (C) 1995 Free Software Foundation, Inc.
4:
5: # This file is part of the GNU MP Library.
6:
7: # The GNU MP Library is free software; you can redistribute it and/or modify
8: # it under the terms of the GNU Library General Public License as published by
9: # the Free Software Foundation; either version 2 of the License, or (at your
10: # option) any later version.
11:
12: # The GNU MP Library is distributed in the hope that it will be useful, but
13: # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14: # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
15: # License for more details.
16:
17: # You should have received a copy of the GNU Library General Public License
18: # along with the GNU MP Library; see the file COPYING.LIB. If not, write to
19: # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
20: # MA 02111-1307, USA.
21:
22:
23: # INPUT PARAMETERS
24: # res_ptr $4
25: # src_ptr $5
26: # size $6
27: # cnt $7
28:
29: .text
30: .align 2
31: .globl __mpn_lshift
32: .ent __mpn_lshift
33: __mpn_lshift:
34: .set noreorder
35: .set nomacro
36:
37: sll $2,$6,2
38: addu $5,$5,$2 # make r5 point at end of src
39: lw $10,-4($5) # load first limb
40: subu $13,$0,$7
41: addu $4,$4,$2 # make r4 point at end of res
42: addiu $6,$6,-1
43: and $9,$6,4-1 # number of limbs in first loop
44: beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
45: srl $2,$10,$13 # compute function result
46:
47: subu $6,$6,$9
48:
49: .Loop0: lw $3,-8($5)
50: addiu $4,$4,-4
51: addiu $5,$5,-4
52: addiu $9,$9,-1
53: sll $11,$10,$7
54: srl $12,$3,$13
55: move $10,$3
56: or $8,$11,$12
57: bne $9,$0,.Loop0
58: sw $8,0($4)
59:
60: .L0: beq $6,$0,.Lend
61: nop
62:
63: .Loop: lw $3,-8($5)
64: addiu $4,$4,-16
65: addiu $6,$6,-4
66: sll $11,$10,$7
67: srl $12,$3,$13
68:
69: lw $10,-12($5)
70: sll $14,$3,$7
71: or $8,$11,$12
72: sw $8,12($4)
73: srl $9,$10,$13
74:
75: lw $3,-16($5)
76: sll $11,$10,$7
77: or $8,$14,$9
78: sw $8,8($4)
79: srl $12,$3,$13
80:
81: lw $10,-20($5)
82: sll $14,$3,$7
83: or $8,$11,$12
84: sw $8,4($4)
85: srl $9,$10,$13
86:
87: addiu $5,$5,-16
88: or $8,$14,$9
89: bgtz $6,.Loop
90: sw $8,0($4)
91:
92: .Lend: sll $8,$10,$7
93: j $31
94: sw $8,-4($4)
95: .end __mpn_lshift
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>