FIX BUILD (with GHC 6.2.x): System.Directory.Internals is no more
[ghc-hetmet.git] / rts / gmp / mpn / hppa / hppa1_1 / udiv_qrnnd.S
1 ; HP-PA  __udiv_qrnnd division support, used from longlong.h.
2 ; This version runs fast on PA 7000 and later.
3
4 ; Copyright (C) 1993, 1994, 2000 Free Software Foundation, Inc.
5
6 ; This file is part of the GNU MP Library.
7
8 ; The GNU MP Library is free software; you can redistribute it and/or modify
9 ; it under the terms of the GNU Lesser General Public License as published by
10 ; the Free Software Foundation; either version 2.1 of the License, or (at your
11 ; option) any later version.
12
13 ; The GNU MP Library is distributed in the hope that it will be useful, but
14 ; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 ; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
16 ; License for more details.
17
18 ; You should have received a copy of the GNU Lesser General Public License
19 ; along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
20 ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
21 ; MA 02111-1307, USA.
22
23
24 ; INPUT PARAMETERS
25 ; rem_ptr       gr26
26 ; n1            gr25
27 ; n0            gr24
28 ; d             gr23
29
30         .code
31 L$0000  .word           0x43f00000              ; 2^64
32         .word           0x0
33         .export         __gmpn_udiv_qrnnd
34 __gmpn_udiv_qrnnd
35         .proc
36         .callinfo       frame=64,no_calls
37         .entry
38         ldo             64(%r30),%r30
39
40         stws            %r25,-16(0,%r30)        ; n_hi
41         stws            %r24,-12(0,%r30)        ; n_lo
42 #ifdef PIC
43         addil           LT%L$0000,%r19
44         ldo             RT%L$0000(%r1),%r19
45 #else
46         ldil            L%L$0000,%r19
47         ldo             R%L$0000(%r19),%r19
48 #endif  
49         fldds           -16(0,%r30),%fr5
50         stws            %r23,-12(0,%r30)
51         comib,<=        0,%r25,L$1
52         fcnvxf,dbl,dbl  %fr5,%fr5
53         fldds           0(0,%r19),%fr4
54         fadd,dbl        %fr4,%fr5,%fr5
55 L$1
56         fcpy,sgl        %fr0,%fr6L
57         fldws           -12(0,%r30),%fr6R
58         fcnvxf,dbl,dbl  %fr6,%fr4
59
60         fdiv,dbl        %fr5,%fr4,%fr5
61
62         fcnvfx,dbl,dbl  %fr5,%fr4
63         fstws           %fr4R,-16(%r30)
64         xmpyu           %fr4R,%fr6R,%fr6
65         ldws            -16(%r30),%r28
66         fstds           %fr6,-16(0,%r30)
67         ldws            -12(0,%r30),%r21
68         ldws            -16(0,%r30),%r20
69         sub             %r24,%r21,%r22
70         subb            %r25,%r20,%r19
71         comib,=         0,%r19,L$2
72         ldo             -64(%r30),%r30
73
74         add             %r22,%r23,%r22
75         ldo             -1(%r28),%r28
76 L$2     bv              0(%r2)
77         stws            %r22,0(0,%r26)
78
79         .exit
80         .procend