On 13/11/12 13:50, Ulrich Weigand wrote:
Hello,

here's another of Andrew's patches to improve NEON usage.  This one was
originally posted here:
http://gcc.gnu.org/ml/gcc-patches/2012-02/msg01213.html

The idea to improve SImode to DImode extends that also move from core
registers to NEON registers.  In this situation, the compiler used to
perform the extension in core registers first and then moves to NEON,
wasting a core register in the process.

The patch changes this to move to NEON first and extend there.

[ This patch requires both the NEON shift and the lower-subreg patches,
both of which are now in mainline, so this patch is ready to merge
as well at this point.  ]

Tested on arm-linux-gnueabi.

OK for mainline?

Bye,
Ulrich


2012-11-13  Andrew Stubbs  <a...@codesourcery.com>
            Ulrich Weigand  <ulrich.weig...@linaro.org>

        gcc/
        * config/arm/arm.md (zero_extend<mode>di2): Add extra alternatives
        for NEON registers.
        Add alternative for one-instruction extend-in-place.
        (extend<mode>di2): Likewise.
        Add constraints for Thumb-mode memory loads.
        Prevent extend splitters doing NEON alternatives.
        * config/arm/iterators.md (qhs_extenddi_cstr, qhs_zextenddi_cstr):
        Adjust constraints to add new alternatives.
        * config/arm/neon.md: Add splitters for zero- and sign-extend.

        gcc/testsuite/
        * gcc.target/arm/neon-extend-1.c: New file.
        * gcc.target/arm/neon-extend-2.c: New file.


OK.

R.


Reply via email to