Nice. On 17 July 2012 15:26, Julian Brown <jul...@codesourcery.com> wrote: > Hi, > > This patch (originally by Jie Zhang) optimizes vdup builtins which use > a constant argument into the immediate variants of the vdup > instructions, rather than generating separate immediate-loads and > register vdups, as is presently done. It also adds support for loading > floating-point constant 0.0 to such instructions, by using integer > zero-load instructions (the bit pattern is the same). > > Tested with no regressions, and the new tests pass. One test needed > tweaking, since with the patch the (constant) calculations performed > now get entirely optimised away.
Yes, I know that one. I've been looking at fixing these with my other patch from earlier this month. Coincidentally the costs was something that I'd been looking at tweaking, so thanks. > > OK to apply? Ok. regards, Ramana > > Thanks, > > Julian > > ChangeLog > > Jie Zhang <jzhang...@gmail.com> > Julian Brown <jul...@codesourcery.com> > > gcc/ > * config/arm/arm.c (arm_rtx_costs_1): Adjust cost for > CONST_VECTOR. > (arm_size_rtx_costs): Likewise. > (neon_valid_immediate): Add a case for double 0.0. > > gcc/testsuite/ > * gcc.target/arm/neon-vdup-1.c: New test case. > * gcc.target/arm/neon-vdup-2.c: New test case. > * gcc.target/arm/neon-vdup-3.c: New test case. > * gcc.target/arm/neon-vdup-4.c: New test case. > * gcc.target/arm/neon-vdup-5.c: New test case. > * gcc.target/arm/neon-vdup-6.c: New test case. > * gcc.target/arm/neon-vdup-7.c: New test case. > * gcc.target/arm/neon-vdup-8.c: New test case. > * gcc.target/arm/neon-vdup-9.c: New test case. > * gcc.target/arm/neon-vdup-10.c: New test case. > * gcc.target/arm/neon-vdup-11.c: New test case. > * gcc.target/arm/neon-vdup-12.c: New test case. > * gcc.target/arm/neon-vdup-13.c: New test case. > * gcc.target/arm/neon-vdup-14.c: New test case. > * gcc.target/arm/neon-vdup-15.c: New test case. > * gcc.target/arm/neon-vdup-16.c: New test case. > * gcc.target/arm/neon-vdup-17.c: New test case. > * gcc.target/arm/neon-vdup-18.c: New test case. > * gcc.target/arm/neon-vdup-19.c: New test case. > * gcc.target/arm/neon-combine-sub-abs-into-vabd.c: Make intrinsic > arguments non-constant.