Updated from ../=mpn/gmp-1.906.7
[kopensolaris-gnu/glibc.git] / sysdeps / 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 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 Library General Public License as published by
10 ; the Free Software Foundation; either version 2 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 Library General Public
16 ; License for more details.
17
18 ; You should have received a copy of the GNU Library 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., 675 Mass Ave, Cambridge, MA 02139, USA.
21
22
23 ; INPUT PARAMETERS
24 ; rem_ptr       gr26
25 ; n1            gr25
26 ; n0            gr24
27 ; d             gr23
28
29         .code
30 L$0000  .word           0x43f00000
31         .word           0x0
32         .export         __udiv_qrnnd
33 __udiv_qrnnd
34         .proc
35         .callinfo       frame=64,no_calls
36         .entry
37         ldo             64(%r30),%r30
38
39         stws            %r25,-16(0,%r30)        ; n_hi
40         stws            %r24,-12(0,%r30)        ; n_lo
41         ldil            L'L$0000,%r19
42         ldo             R'L$0000(%r19),%r19
43         fldds           -16(0,%r30),%fr5
44         stws            %r23,-12(0,%r30)
45         comib,<=        0,%r25,L$1
46         fcnvxf,dbl,dbl  %fr5,%fr5
47         fldds           0(0,%r19),%fr4
48         fadd,dbl        %fr4,%fr5,%fr5
49 L$1
50         fcpy,sgl        %fr0,%fr6L
51         fldws           -12(0,%r30),%fr6R
52         fcnvxf,dbl,dbl  %fr6,%fr4
53
54         fdiv,dbl        %fr5,%fr4,%fr5
55
56         fcnvfx,dbl,dbl  %fr5,%fr4
57         fstws           %fr4R,-16(%r30)
58         xmpyu           %fr4R,%fr6R,%fr6
59         ldws            -16(%r30),%r28
60         fstds           %fr6,-16(0,%r30)
61         ldws            -12(0,%r30),%r21
62         ldws            -16(0,%r30),%r20
63         sub             %r24,%r21,%r22
64         subb            %r25,%r20,%r19
65         comib,=         0,%r19,L$2
66         ldo             -64(%r30),%r30
67
68         add             %r22,%r23,%r22
69         ldo             -1(%r28),%r28
70 L$2     bv              0(%r2)
71         stws            %r22,0(0,%r26)
72
73         .exit
74         .procend