This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, middle-end, i386]: reciprocal rsqrt pass + full recip x86 backend support
- From: "Andrew Pinski" <pinskia at gmail dot com>
- To: "Uros Bizjak" <ubizjak at gmail dot com>
- Cc: "GCC Patches" <gcc-patches at gcc dot gnu dot org>, "Richard Guenther" <rguenther at suse dot de>, "Paolo Bonzini" <paolo dot bonzini at lu dot unisi dot ch>, "Diego Novillo" <dnovillo at google dot com>
- Date: Sat, 16 Jun 2007 11:07:48 -0700
- Subject: Re: [PATCH, middle-end, i386]: reciprocal rsqrt pass + full recip x86 backend support
- References: <5787cf470706140216p78e731a2o8ad47c5c4d1efc00@mail.gmail.com> <4673B607.8090506@gmail.com>
On 6/16/07, Uros Bizjak <ubizjak@gmail.com> wrote:
Uros Bizjak wrote:
> This patch implements reciprocal sqrt pass. At the a/func(b) ->
> a*rfunc(b) was put in existing recip pass, where new rsqrt pass
> processes only sqrt(a/b)->rsqrt(b/a) optimization (as discussed, due
> to interference with a/b RTL reciprocal expansion, where we can't
> perform this optimization anymore). sqrt(a)-> a*rsqrt(a) is performed
> during RTL expansion time due to CSE of a*rsqrtss(a) during NR step.
I went ahead and committed this patch to SVN (after re-testing it on
x86_64-pc-linux-gnu), due to following reasons:
This patch causes a bootstrap failure on every target except for x86_64/i686.
../../gcc/config/mips/mips.c:1259: warning: initialization from
incompatible pointer type
rs6000.c:1118: error: initialization from incompatible pointer type
etc.
It should be noted that the trunk was frozen for regression only fixes
also (except for a couple of things, and IIRC this was not one of
them).
#define TARGET_BUILTIN_RECIPROCAL hook_tree_tree_bool_null
target.h: tree (* builtin_reciprocal) (unsigned, bool);
These two pointers will never be compatible.
Thanks,
Andrew Pinski