This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [AArch64] Fix move_lo_quad_<mode> move
- From: Marcus Shawcroft <marcus dot shawcroft at gmail dot com>
- To: Sofiane Naci <sofiane dot naci at arm dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 12 Jun 2013 11:54:47 +0100
- Subject: Re: [AArch64] Fix move_lo_quad_<mode> move
- References: <51b72a1a dot e8fd440a dot 7ef1 dot 54aaSMTPIN_ADDED_BROKEN at mx dot google dot com>
OK
/Marcus
On 11 June 2013 14:43, Sofiane Naci <sofiane.naci@arm.com> wrote:
> Hi,
>
> This patch fixes a bug in the move_lo_quad_<mode> pattern.
>
> The pattern, shown below, issues a scalar MOV instruction for vector modes:
>
> (define_insn "move_lo_quad_<mode>"
> [(set (match_operand:VQ 0 "register_operand" "=w,w,w")
> (vec_concat:VQ
> (match_operand:<VHALF> 1 "register_operand" "w,r,r")
> (vec_duplicate:<VHALF> (const_int 0))))]
> "TARGET_SIMD"
> "@
> mov\\t%d0, %d1
> fmov\t%d0, %1
> ...
>
> This is fixed by using DUP for the first alternative instead.
>
> This passes the full regression test suite in aarch64-elf.
>
> OK for trunk?
>
> -----
> Thanks
> Sofiane