https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91060

--- Comment #15 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 
---
Author: rsandifo
Date: Wed Jul 10 18:41:44 2019
New Revision: 273365

URL: https://gcc.gnu.org/viewcvs?rev=273365&root=gcc&view=rev
Log:
[arm] Fix BE index for single-var vector initialisers (PR91060)

If a vector constructor has a single nonconstant element,
neon_expand_vector_init loads the constant lanes and then inserts the
nonconstant value.  The problem was that it was doing the insertion
using the arm_neon.h neon_vset_lane<mode> patterns, which use
architectural lane numbering rather than GCC lane numbering.

2019-07-10  Richard Sandiford  <richard.sandif...@arm.com>

gcc/
        PR target/91060
        * config/arm/iterators.md (V2DI_ONLY): New mode iterator.
        * config/arm/neon.md (vec_set<mode>_internal): Add a '@' prefix.
        (vec_setv2di_internal): Reexpress as...
        (@vec_set<V2DI_ONLY:mode>_internal): ...this.
        * config/arm/arm.c (neon_expand_vector_init): Use gen_vec_set_internal
        rather than gen_neon_vset_lane<mode>.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/arm/arm.c
    trunk/gcc/config/arm/iterators.md
    trunk/gcc/config/arm/neon.md

Reply via email to