[PATCH, ARM] Optimize vdup-constant builtins

Ramana Radhakrishnan ramana.radhakrishnan@linaro.org
Tue Jul 17 19:09:00 GMT 2012


Nice.

On 17 July 2012 15:26, Julian Brown <julian@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  <jzhang918@gmail.com>
>     Julian Brown  <julian@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.



More information about the Gcc-patches mailing list