Annotation of OpenXM_contrib/gmp/mpn/mips3/lshift.s, Revision 1.1.1.2
1.1.1.2 ! maekawa 1: # MIPS3 __gmpn_lshift --
1.1 maekawa 2:
1.1.1.2 ! maekawa 3: # Copyright (C) 1995, 2000 Free Software Foundation, Inc.
1.1 maekawa 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
1.1.1.2 ! maekawa 8: # it under the terms of the GNU Lesser General Public License as published by
! 9: # the Free Software Foundation; either version 2.1 of the License, or (at your
1.1 maekawa 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
1.1.1.2 ! maekawa 14: # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
1.1 maekawa 15: # License for more details.
16:
1.1.1.2 ! maekawa 17: # You should have received a copy of the GNU Lesser General Public License
1.1 maekawa 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
1.1.1.2 ! maekawa 31: .globl __gmpn_lshift
! 32: .ent __gmpn_lshift
! 33: __gmpn_lshift:
1.1 maekawa 34: .set noreorder
35: .set nomacro
36:
37: dsll $2,$6,3
38: daddu $5,$5,$2 # make r5 point at end of src
39: ld $10,-8($5) # load first limb
40: dsubu $13,$0,$7
41: daddu $4,$4,$2 # make r4 point at end of res
42: daddiu $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: dsrl $2,$10,$13 # compute function result
46:
47: dsubu $6,$6,$9
48:
49: .Loop0: ld $3,-16($5)
50: daddiu $4,$4,-8
51: daddiu $5,$5,-8
52: daddiu $9,$9,-1
53: dsll $11,$10,$7
54: dsrl $12,$3,$13
55: move $10,$3
56: or $8,$11,$12
57: bne $9,$0,.Loop0
58: sd $8,0($4)
59:
60: .L0: beq $6,$0,.Lend
61: nop
62:
63: .Loop: ld $3,-16($5)
64: daddiu $4,$4,-32
65: daddiu $6,$6,-4
66: dsll $11,$10,$7
67: dsrl $12,$3,$13
68:
69: ld $10,-24($5)
70: dsll $14,$3,$7
71: or $8,$11,$12
72: sd $8,24($4)
73: dsrl $9,$10,$13
74:
75: ld $3,-32($5)
76: dsll $11,$10,$7
77: or $8,$14,$9
78: sd $8,16($4)
79: dsrl $12,$3,$13
80:
81: ld $10,-40($5)
82: dsll $14,$3,$7
83: or $8,$11,$12
84: sd $8,8($4)
85: dsrl $9,$10,$13
86:
87: daddiu $5,$5,-32
88: or $8,$14,$9
89: bgtz $6,.Loop
90: sd $8,0($4)
91:
92: .Lend: dsll $8,$10,$7
93: j $31
94: sd $8,-8($4)
1.1.1.2 ! maekawa 95: .end __gmpn_lshift
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>