gcc.target/i386/recip-sqrtf.c shows some missed opportunities for the reciprocal estimate instructions. One example: float t3(float a) { return sqrtf(a); } On x86 (and PowerPC clang), we use the square root reciprocal estimate instructions, but PowerPC gcc does not.
Confirmed.
Author: dje Date: Sat Dec 5 12:53:45 2015 New Revision: 231317 URL: https://gcc.gnu.org/viewcvs?rev=231317&root=gcc&view=rev Log: PR target/68609 * config/rs6000/rs6000-protos.h (rs6000_emit_swsqrt): Rename and add bool arguement. * config/rs6000/rs6000.c (rs6000_emit_swsqrt): Rename. Add non-reciporcal path. * config/rs6000/rs6000.md (rsqrt<mode>2): Call new function name. (sqrt<mode>2): Replace define_insn with define_expand that may call rs6000_emit_swsqrt. Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/rs6000-protos.h trunk/gcc/config/rs6000/rs6000.c trunk/gcc/config/rs6000/rs6000.md
Fixed.
Author: dje Date: Fri Jan 15 16:38:08 2016 New Revision: 232439 URL: https://gcc.gnu.org/viewcvs?rev=232439&root=gcc&view=rev Log: PR target/68609 * config/rs6000/rs6000.c (rs6000_emit_msub): Delete. (rs6000_emit_swsqrt): Convert to Goldschmidt's Algorithm * config/rs6000/rs6000.md (sqrt<mode>2): Limit swsqrt to high precision estimate. Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/rs6000.c trunk/gcc/config/rs6000/rs6000.md
Author: dje Date: Fri Jan 15 23:04:23 2016 New Revision: 232456 URL: https://gcc.gnu.org/viewcvs?rev=232456&root=gcc&view=rev Log: PR target/68609 * gcc.target/powerpc/recip-1.c: Adjust for Goldschmidt's Algorithm. * gcc.target/powerpc/recip-2.c: Same. * gcc.target/powerpc/recip-3.c: Same. * gcc.target/powerpc/recip-4.c: Same. * gcc.target/powerpc/recip-sqrtf.c: Same. Modified: trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.target/powerpc/recip-1.c trunk/gcc/testsuite/gcc.target/powerpc/recip-2.c trunk/gcc/testsuite/gcc.target/powerpc/recip-3.c trunk/gcc/testsuite/gcc.target/powerpc/recip-4.c trunk/gcc/testsuite/gcc.target/powerpc/recip-sqrtf.c
Author: dje Date: Sat Jan 16 20:04:33 2016 New Revision: 232468 URL: https://gcc.gnu.org/viewcvs?rev=232468&root=gcc&view=rev Log: PR target/68609 * gcc.target/powerpc/recip-6.c: Enable on AIX. * gcc.target/powerpc/recip-7.c: Same. Modified: trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.target/powerpc/recip-6.c trunk/gcc/testsuite/gcc.target/powerpc/recip-7.c
Author: dje Date: Wed Jan 20 19:39:08 2016 New Revision: 232632 URL: https://gcc.gnu.org/viewcvs?rev=232632&root=gcc&view=rev Log: PR target/68609 * config/rs6000/rs6000.c (rs6000_emit_swsqrt): Add vector sqrt domain check. * config/rs6000/vector.md (sqrt<mode>2): Call rs6000_emit_swsqrt for V4SFmode. Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/rs6000.c trunk/gcc/config/rs6000/vector.md