Updated from ../=mpn/gmp-1.906.7
[kopensolaris-gnu/glibc.git] / sysdeps / hppa / lshift.s
1 ; HP-PA  __mpn_lshift --
2
3 ; Copyright (C) 1992, 1994 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., 675 Mass Ave, Cambridge, MA 02139, USA.
20
21
22 ; INPUT PARAMETERS
23 ; res_ptr       gr26
24 ; s_ptr         gr25
25 ; size          gr24
26 ; cnt           gr23
27
28         .code
29         .export         __mpn_lshift
30 __mpn_lshift
31         .proc
32         .callinfo       frame=64,no_calls
33         .entry
34
35         sh2add          %r24,%r25,%r25
36         sh2add          %r24,%r26,%r26
37         ldws,mb         -4(0,%r25),%r22
38         subi            32,%r23,%r1
39         mtsar           %r1
40         addib,=         -1,%r24,L$0004
41         vshd            %r0,%r22,%r28           ; compute carry out limb
42         ldws,mb         -4(0,%r25),%r29
43         addib,=         -1,%r24,L$0002
44         vshd            %r22,%r29,%r20
45
46 L$loop  ldws,mb         -4(0,%r25),%r22
47         stws,mb         %r20,-4(0,%r26)
48         addib,=         -1,%r24,L$0003
49         vshd            %r29,%r22,%r20
50         ldws,mb         -4(0,%r25),%r29
51         stws,mb         %r20,-4(0,%r26)
52         addib,<>        -1,%r24,L$loop
53         vshd            %r22,%r29,%r20
54
55 L$0002  stws,mb         %r20,-4(0,%r26)
56         vshd            %r29,%r0,%r20
57         bv              0(%r2)
58         stw             %r20,-4(0,%r26)
59 L$0003  stws,mb         %r20,-4(0,%r26)
60 L$0004  vshd            %r22,%r0,%r20
61         bv              0(%r2)
62         stw             %r20,-4(0,%r26)
63
64         .exit
65         .procend