From: Richard Henderson Date: Wed, 31 Mar 2004 02:34:13 +0000 (+0000) Subject: * sysdeps/alpha/remqu.S: Detect power-of-two special case. X-Git-Tag: glibc-2.16-ports-before-merge~1196 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b89b1957dd0a036b99c34b3d8b0c1d57633ddc8;p=thirdparty%2Fglibc.git * sysdeps/alpha/remqu.S: Detect power-of-two special case. --- diff --git a/sysdeps/alpha/remqu.S b/sysdeps/alpha/remqu.S index 1a1dcad8a0e..fa2eb626c75 100644 --- a/sysdeps/alpha/remqu.S +++ b/sysdeps/alpha/remqu.S @@ -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