From 5a37a60ccbdcbb5ae1c416d7292a0080f7aa0eb5 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Sat, 5 Jan 2008 21:33:33 +0100 Subject: [PATCH] i386.c (ix86_builtin_reciprocal): Remove check for TARGET_RECIP. * config/i386/i386.c (ix86_builtin_reciprocal): Remove check for TARGET_RECIP. (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion. From-SVN: r131342 --- gcc/ChangeLog | 6 ++++++ gcc/config/i386/i386.c | 12 +++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 633c096e343..85cdacaf8f3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-01-05 Uros Bizjak + + * config/i386/i386.c (ix86_builtin_reciprocal): Remove check + for TARGET_RECIP. + (ix86_emit_swsqrtsf): Do not filter out infinity for rsqrt expansion. + 2008-01-05 Richard Sandiford * c-omp.c (check_omp_for_incr_expr): Handle CONVERT_EXPR. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index f29df8d5550..2ca287214ce 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -21466,7 +21466,7 @@ static tree ix86_builtin_reciprocal (unsigned int fn, bool md_fn, bool sqrt ATTRIBUTE_UNUSED) { - if (! (TARGET_SSE_MATH && TARGET_RECIP && !optimize_size + if (! (TARGET_SSE_MATH && !optimize_size && flag_finite_math_only && !flag_trapping_math && flag_unsafe_math_optimizations)) return NULL_TREE; @@ -24239,16 +24239,18 @@ void ix86_emit_swsqrtsf (rtx res, rtx a, enum machine_mode mode, 1.0 / sqrt(a) = 0.5 * rsqrtss(a) * (3.0 - a * rsqrtss(a) * rsqrtss(a)) */ /* Compare a to zero. */ - emit_insn (gen_rtx_SET (VOIDmode, mask, - gen_rtx_NE (mode, zero, a))); + if (!recip) + emit_insn (gen_rtx_SET (VOIDmode, mask, + gen_rtx_NE (mode, zero, a))); /* x0 = 1./sqrt(a) estimate */ emit_insn (gen_rtx_SET (VOIDmode, x0, gen_rtx_UNSPEC (mode, gen_rtvec (1, a), UNSPEC_RSQRT))); /* Filter out infinity. */ - emit_insn (gen_rtx_SET (VOIDmode, x0, - gen_rtx_AND (mode, x0, mask))); + if (!recip) + emit_insn (gen_rtx_SET (VOIDmode, x0, + gen_rtx_AND (mode, x0, mask))); /* e0 = x0 * a */ emit_insn (gen_rtx_SET (VOIDmode, e0, gen_rtx_MULT (mode, x0, a))); -- 2.30.2