2006-01-07 Carlos O'Donell <carlos@systemhalted.org>
[glibc-ports.git] / sysdeps / hppa / hppa1.1 / udiv_qrnnd.s
blob7b83619c7df31a0ca1b8613f539a60ccc1aa0bd9
1 ;! HP-PA __udiv_qrnnd division support, used from longlong.h.
2 ;! This version runs fast on PA 7000 and later.
4 ;! Copyright (C) 1993, 1994 Free Software Foundation, Inc.
6 ;! This file is part of the GNU MP Library.
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.
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.
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.
24 ;! INPUT PARAMETERS
25 ;! rem_ptr gr26
26 ;! n1 gr25
27 ;! n0 gr24
28 ;! d gr23
30 .text
31 L$0000:
32 .word 0x43f00000
33 .word 0x0
34 .export __udiv_qrnnd
35 __udiv_qrnnd:
36 .proc
37 .callinfo frame=64,no_calls
38 .entry
39 ldo 64(%r30),%r30
41 stws %r25,-16(%r30) ;! n_hi
42 stws %r24,-12(%r30) ;! n_lo
43 b,l L$0,%r1
44 ldo L$0000-L$0(%r1),%r1
45 L$0:
46 fldds -16(%r30),%fr5
47 stws %r23,-12(%r30)
48 comib,<= 0,%r25,L$1
49 fcnvxf,dbl,dbl %fr5,%fr5
50 fldds 0(%r1),%fr4
51 fadd,dbl %fr4,%fr5,%fr5
52 L$1:
53 fcpy,sgl %fr0,%fr6L
54 fldws -12(%r30),%fr6R
55 fcnvxf,dbl,dbl %fr6,%fr4
57 fdiv,dbl %fr5,%fr4,%fr5
59 fcnvfx,dbl,dbl %fr5,%fr4
60 fstws %fr4R,-16(%r30)
61 xmpyu %fr4R,%fr6R,%fr6
62 ldws -16(%r30),%r28
63 fstds %fr6,-16(%r30)
64 ldws -12(%r30),%r21
65 ldws -16(%r30),%r20
66 sub %r24,%r21,%r22
67 subb %r25,%r20,%r1
68 comib,= 0,%r1,L$2
69 ldo -64(%r30),%r30
71 add %r22,%r23,%r22
72 ldo -1(%r28),%r28
73 L$2:
74 bv 0(%r2)
75 stws %r22,0(%r26)
77 .exit
78 .procend