* sysdeps/alpha/remqu.S: Detect power-of-two special case.

2004-03-30  Richard Henderson  <rth@redhat.com>

	* sysdeps/alpha/remqu.S: Detect power-of-two special case.
This commit is contained in:
Richard Henderson 2004-03-31 02:34:13 +00:00
parent 3fa21fd813
commit b6f10974a7
2 changed files with 19 additions and 4 deletions

View File

@ -1,3 +1,7 @@
2004-03-30 Richard Henderson <rth@redhat.com>
* sysdeps/alpha/remqu.S: Detect power-of-two special case.
2004-03-30 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/libc-start.c (LIBC_START_MAIN)

View File

@ -54,24 +54,25 @@ __remqu:
going to use the results. */
stq X, 16(sp)
stq Y, 24(sp)
beq Y, DIVBYZERO
subq Y, 1, AT
stt $f0, 0(sp)
and Y, AT, AT
stt $f1, 8(sp)
beq AT, $powerof2
cfi_rel_offset ($f0, 0)
cfi_rel_offset ($f1, 8)
ldt $f0, 16(sp)
ldt $f1, 24(sp)
cvtqt $f0, $f0
cvtqt $f1, $f1
blt X, $x_is_neg
divt/c $f0, $f1, $f0
/* Check to see if Y was mis-converted as signed value. */
ldt $f1, 8(sp)
unop
nop
blt Y, $y_is_neg
/* Check to see if X fit in the double as an exact value. */
@ -245,6 +246,16 @@ $y_is_neg:
cfi_def_cfa_offset (0)
ret $31, (RA), 1
.align 4
cfi_def_cfa_offset (FRAME)
$powerof2:
subq Y, 1, AT
beq Y, DIVBYZERO
and X, AT, RV
lda sp, FRAME(sp)
cfi_def_cfa_offset (0)
ret $31, (RA), 1
cfi_endproc
.size __remqu, .-__remqu