Home | History | Annotate | Line # | Download | only in sparc32
      1      1.1  mrg dnl  SPARC v7 __udiv_qrnnd division support, used from longlong.h.
      2      1.1  mrg dnl  This is for v7 CPUs with a floating-point unit.
      3      1.1  mrg 
      4      1.1  mrg dnl  Copyright 1993, 1994, 1996, 2000 Free Software Foundation, Inc.
      5      1.1  mrg 
      6      1.1  mrg dnl  This file is part of the GNU MP Library.
      7  1.1.1.2  mrg dnl
      8      1.1  mrg dnl  The GNU MP Library is free software; you can redistribute it and/or modify
      9  1.1.1.2  mrg dnl  it under the terms of either:
     10  1.1.1.2  mrg dnl
     11  1.1.1.2  mrg dnl    * the GNU Lesser General Public License as published by the Free
     12  1.1.1.2  mrg dnl      Software Foundation; either version 3 of the License, or (at your
     13  1.1.1.2  mrg dnl      option) any later version.
     14  1.1.1.2  mrg dnl
     15  1.1.1.2  mrg dnl  or
     16  1.1.1.2  mrg dnl
     17  1.1.1.2  mrg dnl    * the GNU General Public License as published by the Free Software
     18  1.1.1.2  mrg dnl      Foundation; either version 2 of the License, or (at your option) any
     19  1.1.1.2  mrg dnl      later version.
     20  1.1.1.2  mrg dnl
     21  1.1.1.2  mrg dnl  or both in parallel, as here.
     22  1.1.1.2  mrg dnl
     23      1.1  mrg dnl  The GNU MP Library is distributed in the hope that it will be useful, but
     24      1.1  mrg dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     25  1.1.1.2  mrg dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     26  1.1.1.2  mrg dnl  for more details.
     27  1.1.1.2  mrg dnl
     28  1.1.1.2  mrg dnl  You should have received copies of the GNU General Public License and the
     29  1.1.1.2  mrg dnl  GNU Lesser General Public License along with the GNU MP Library.  If not,
     30  1.1.1.2  mrg dnl  see https://www.gnu.org/licenses/.
     31      1.1  mrg 
     32      1.1  mrg 
     33      1.1  mrg include(`../config.m4')
     34      1.1  mrg 
     35      1.1  mrg C INPUT PARAMETERS
     36      1.1  mrg C rem_ptr	i0
     37      1.1  mrg C n1		i1
     38      1.1  mrg C n0		i2
     39      1.1  mrg C d		i3
     40      1.1  mrg 
     41      1.1  mrg ASM_START()
     42      1.1  mrg 
     43      1.1  mrg ifdef(`PIC',
     44      1.1  mrg `	TEXT
     45      1.1  mrg L(getpc):
     46      1.1  mrg 	retl
     47      1.1  mrg 	nop')
     48      1.1  mrg 
     49      1.1  mrg 	TEXT
     50      1.1  mrg 	ALIGN(8)
     51      1.1  mrg L(C0):	.double	0r4294967296
     52      1.1  mrg L(C1):	.double	0r2147483648
     53      1.1  mrg 
     54      1.1  mrg PROLOGUE(mpn_udiv_qrnnd)
     55      1.1  mrg 	save	%sp,-104,%sp
     56      1.1  mrg 	st	%i1,[%fp-8]
     57      1.1  mrg 	ld	[%fp-8],%f10
     58      1.1  mrg 
     59      1.1  mrg ifdef(`PIC',
     60      1.1  mrg `L(pc):	call	L(getpc)		C put address of this insn in %o7
     61      1.1  mrg 	ldd	[%o7+L(C0)-L(pc)],%f8',
     62      1.1  mrg `	sethi	%hi(L(C0)),%o7
     63      1.1  mrg 	ldd	[%o7+%lo(L(C0))],%f8')
     64      1.1  mrg 
     65      1.1  mrg 	fitod	%f10,%f4
     66      1.1  mrg 	cmp	%i1,0
     67      1.1  mrg 	bge	L(248)
     68      1.1  mrg 	mov	%i0,%i5
     69      1.1  mrg 	faddd	%f4,%f8,%f4
     70      1.1  mrg L(248):
     71      1.1  mrg 	st	%i2,[%fp-8]
     72      1.1  mrg 	ld	[%fp-8],%f10
     73      1.1  mrg 	fmuld	%f4,%f8,%f6
     74      1.1  mrg 	cmp	%i2,0
     75      1.1  mrg 	bge	L(249)
     76      1.1  mrg 	fitod	%f10,%f2
     77      1.1  mrg 	faddd	%f2,%f8,%f2
     78      1.1  mrg L(249):
     79      1.1  mrg 	st	%i3,[%fp-8]
     80      1.1  mrg 	faddd	%f6,%f2,%f2
     81      1.1  mrg 	ld	[%fp-8],%f10
     82      1.1  mrg 	cmp	%i3,0
     83      1.1  mrg 	bge	L(250)
     84      1.1  mrg 	fitod	%f10,%f4
     85      1.1  mrg 	faddd	%f4,%f8,%f4
     86      1.1  mrg L(250):
     87      1.1  mrg 	fdivd	%f2,%f4,%f2
     88      1.1  mrg 
     89      1.1  mrg ifdef(`PIC',
     90      1.1  mrg `	ldd	[%o7+L(C1)-L(pc)],%f4',
     91      1.1  mrg `	sethi	%hi(L(C1)),%o7
     92      1.1  mrg 	ldd	[%o7+%lo(L(C1))],%f4')
     93      1.1  mrg 
     94      1.1  mrg 	fcmped	%f2,%f4
     95      1.1  mrg 	nop
     96      1.1  mrg 	fbge,a	L(251)
     97      1.1  mrg 	fsubd	%f2,%f4,%f2
     98      1.1  mrg 	fdtoi	%f2,%f2
     99      1.1  mrg 	st	%f2,[%fp-8]
    100      1.1  mrg 	b	L(252)
    101      1.1  mrg 	ld	[%fp-8],%i4
    102      1.1  mrg L(251):
    103      1.1  mrg 	fdtoi	%f2,%f2
    104      1.1  mrg 	st	%f2,[%fp-8]
    105      1.1  mrg 	ld	[%fp-8],%i4
    106      1.1  mrg 	sethi	%hi(-2147483648),%g2
    107      1.1  mrg 	xor	%i4,%g2,%i4
    108      1.1  mrg L(252):
    109      1.1  mrg 	wr	%g0,%i4,%y
    110      1.1  mrg 	sra	%i3,31,%g2
    111      1.1  mrg 	and	%i4,%g2,%g2
    112      1.1  mrg 	andcc	%g0,0,%g1
    113      1.1  mrg 	mulscc	%g1,%i3,%g1
    114      1.1  mrg 	mulscc	%g1,%i3,%g1
    115      1.1  mrg 	mulscc	%g1,%i3,%g1
    116      1.1  mrg 	mulscc	%g1,%i3,%g1
    117      1.1  mrg 	mulscc	%g1,%i3,%g1
    118      1.1  mrg 	mulscc	%g1,%i3,%g1
    119      1.1  mrg 	mulscc	%g1,%i3,%g1
    120      1.1  mrg 	mulscc	%g1,%i3,%g1
    121      1.1  mrg 	mulscc	%g1,%i3,%g1
    122      1.1  mrg 	mulscc	%g1,%i3,%g1
    123      1.1  mrg 	mulscc	%g1,%i3,%g1
    124      1.1  mrg 	mulscc	%g1,%i3,%g1
    125      1.1  mrg 	mulscc	%g1,%i3,%g1
    126      1.1  mrg 	mulscc	%g1,%i3,%g1
    127      1.1  mrg 	mulscc	%g1,%i3,%g1
    128      1.1  mrg 	mulscc	%g1,%i3,%g1
    129      1.1  mrg 	mulscc	%g1,%i3,%g1
    130      1.1  mrg 	mulscc	%g1,%i3,%g1
    131      1.1  mrg 	mulscc	%g1,%i3,%g1
    132      1.1  mrg 	mulscc	%g1,%i3,%g1
    133      1.1  mrg 	mulscc	%g1,%i3,%g1
    134      1.1  mrg 	mulscc	%g1,%i3,%g1
    135      1.1  mrg 	mulscc	%g1,%i3,%g1
    136      1.1  mrg 	mulscc	%g1,%i3,%g1
    137      1.1  mrg 	mulscc	%g1,%i3,%g1
    138      1.1  mrg 	mulscc	%g1,%i3,%g1
    139      1.1  mrg 	mulscc	%g1,%i3,%g1
    140      1.1  mrg 	mulscc	%g1,%i3,%g1
    141      1.1  mrg 	mulscc	%g1,%i3,%g1
    142      1.1  mrg 	mulscc	%g1,%i3,%g1
    143      1.1  mrg 	mulscc	%g1,%i3,%g1
    144      1.1  mrg 	mulscc	%g1,%i3,%g1
    145      1.1  mrg 	mulscc	%g1,0,%g1
    146      1.1  mrg 	add	%g1,%g2,%i0
    147      1.1  mrg 	rd	%y,%g3
    148      1.1  mrg 	subcc	%i2,%g3,%o7
    149      1.1  mrg 	subxcc	%i1,%i0,%g0
    150      1.1  mrg 	be	L(253)
    151      1.1  mrg 	cmp	%o7,%i3
    152      1.1  mrg 
    153      1.1  mrg 	add	%i4,-1,%i0
    154      1.1  mrg 	add	%o7,%i3,%o7
    155      1.1  mrg 	st	%o7,[%i5]
    156      1.1  mrg 	ret
    157      1.1  mrg 	restore
    158      1.1  mrg L(253):
    159      1.1  mrg 	blu	L(246)
    160      1.1  mrg 	mov	%i4,%i0
    161      1.1  mrg 	add	%i4,1,%i0
    162      1.1  mrg 	sub	%o7,%i3,%o7
    163      1.1  mrg L(246):
    164      1.1  mrg 	st	%o7,[%i5]
    165      1.1  mrg 	ret
    166      1.1  mrg 	restore
    167      1.1  mrg EPILOGUE(mpn_udiv_qrnnd)
    168