Annotation of OpenXM_contrib/gmp/mpn/pa64/lshift.s, Revision 1.1.1.1
1.1 maekawa 1: ; HP-PA 2.0 __gmpn_lshift --
2:
3: ; Copyright (C) 1997, 2000 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 Lesser General Public License as published by
9: ; the Free Software Foundation; either version 2.1 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 Lesser General Public
15: ; License for more details.
16:
17: ; You should have received a copy of the GNU Lesser 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 gr26
25: ; s1_ptr gr25
26: ; size gr24
27: ; cnt gr23
28:
29: ; This runs at 1.5 cycles/limb on PA8000.
30:
31: .level 2.0n
32: .code
33: .export __gmpn_lshift,entry
34: __gmpn_lshift
35: .proc
36: .callinfo frame=0,args_saved
37: .entry
38:
39: shladd %r24,3,%r25,%r25
40: shladd %r24,3,%r26,%r26
41: subi 64,%r23,%r23
42: mtsar %r23
43: ldd -8(%r25),%r21
44: addib,= -1,%r24,L$end
45: shrpd %r0,%r21,%sar,%r29 ; compute carry out limb
46: depw,z %r24,31,3,%r28 ; r28 = (size & 7)
47: sub %r0,%r24,%r22
48: depw,z %r22,28,3,%r22 ; r22 = 8 * (-size & 7)
49: add %r25,%r22,%r25 ; offset s1_ptr
50: blr %r28,%r0 ; branch into jump table
51: add %r26,%r22,%r26 ; offset res_ptr
52: b L$0
53: nop
54: b L$1
55: copy %r21,%r20
56: b L$2
57: nop
58: b L$3
59: copy %r21,%r20
60: b L$4
61: nop
62: b L$5
63: copy %r21,%r20
64: b L$6
65: nop
66: b L$7
67: copy %r21,%r20
68:
69: L$loop
70: L$0 ldd -16(%r25),%r20
71: shrpd %r21,%r20,%sar,%r21
72: std %r21,-8(%r26)
73: L$7 ldd -24(%r25),%r21
74: shrpd %r20,%r21,%sar,%r20
75: std %r20,-16(%r26)
76: L$6 ldd -32(%r25),%r20
77: shrpd %r21,%r20,%sar,%r21
78: std %r21,-24(%r26)
79: L$5 ldd -40(%r25),%r21
80: shrpd %r20,%r21,%sar,%r20
81: std %r20,-32(%r26)
82: L$4 ldd -48(%r25),%r20
83: shrpd %r21,%r20,%sar,%r21
84: std %r21,-40(%r26)
85: L$3 ldd -56(%r25),%r21
86: shrpd %r20,%r21,%sar,%r20
87: std %r20,-48(%r26)
88: L$2 ldd -64(%r25),%r20
89: shrpd %r21,%r20,%sar,%r21
90: std %r21,-56(%r26)
91: L$1 ldd -72(%r25),%r21
92: ldo -64(%r25),%r25
93: shrpd %r20,%r21,%sar,%r20
94: std %r20,-64(%r26)
95: addib,> -8,%r24,L$loop
96: ldo -64(%r26),%r26
97:
98: L$end shrpd %r21,%r0,%sar,%r21
99: std %r21,-8(%r26)
100: bve (%r2)
101: .exit
102: extrd,u %r29,31,32,%r28
103: .procend
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>