Reorganisation of the source tree
[ghc-hetmet.git] / rts / gmp / mpn / vax / rshift.s
1 # VAX __gmpn_rshift -- right shift.
2
3 # Copyright (C) 1999, 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 # rptr          (sp + 4)
25 # sptr          (sp + 8)
26 # size          (sp + 12)
27 # cnt           (sp + 16)
28 # r0=retval r1=size r2,r3=itmp r4,r5=otmp       call-used registers
29 # r6=sptr r7=rptr r8=cnt r9 r10 r11             call-saved registers
30
31 .text
32         .align 1
33 .globl ___gmpn_rshift
34 ___gmpn_rshift:
35         .word   0x1c0
36         movl    4(ap),r7
37         movl    8(ap),r6
38         movl    12(ap),r1
39         movl    16(ap),r8
40
41         movl    (r6)+,r2
42         subl3   r8,$32,r8
43         ashl    r8,r2,r0
44         decl    r1
45         jeql    Lend
46
47 Loop:   movl    (r6)+,r3
48         ashq    r8,r2,r4
49         movl    r5,(r7)+
50         movl    r3,r2
51         jsobgtr r1,Loop
52
53 Lend:   clrl    r3
54         ashq    r8,r2,r4
55         movl    r5,(r7)
56         ret