diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9643b5fff2ecc2decb635afd806280b3ce121edd..b5ceb7b6b91a7d0e7ee2049b62fcaf6d665081c3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-11-05 Michael Matz <matz@suse.de> + + * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency + on TARGET_RECIP. + * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip + for 1/sqrtf. + 2009-11-04 Jason Merrill <jason@redhat.com> PR c++/36912 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 1c064bf98d86b748f9901722d63d67c1a3874171..2031dfb6e987fa3fd5ba2c2b08a5e8e22f324426 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -26070,7 +26070,7 @@ static tree ix86_builtin_reciprocal (unsigned int fn, bool md_fn, bool sqrt ATTRIBUTE_UNUSED) { - if (! (TARGET_SSE_MATH && TARGET_RECIP && !optimize_insn_for_size_p () + if (! (TARGET_SSE_MATH && !optimize_insn_for_size_p () && flag_finite_math_only && !flag_trapping_math && flag_unsafe_math_optimizations)) return NULL_TREE; diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 0a8911b6a56070d0a1ce082dda29914079fc1ec9..20a9395f0b7e248b5212e80a3dc9a3f3ee6d9b00 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -12096,6 +12096,10 @@ Note that while the throughput of the sequence is higher than the throughput of the non-reciprocal instruction, the precision of the sequence can be decreased by up to 2 ulp (i.e. the inverse of 1.0 equals 0.99999994). +Note that GCC implements 1.0f/sqrtf(x) in terms of RSQRTSS (or RSQRTPS) +already with @option{-ffast-math} (or the above option combination), and +doesn't need @option{-mrecip}. + @item -mveclibabi=@var{type} @opindex mveclibabi Specifies the ABI type to use for vectorizing intrinsics using an