https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91060
rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|middle-end |target
Assignee|rguenth at gcc dot gnu.org |rsandifo at gcc dot
gnu.org
--- Comment #11 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org>
---
(In reply to [email protected] from comment #10)
> On Mon, 8 Jul 2019, clyon at gcc dot gnu.org wrote:
>
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91060
> >
> > --- Comment #8 from Christophe Lyon <clyon at gcc dot gnu.org> ---
> > (In reply to Richard Biener from comment #5)
> > > Hmm, using a cross configured as
> > >
> > > trunk/configure --target=armeb-none-linux-gnueabihf --with-cpu=cortex-a9
> > > --with-fpu=neon-fp16 --enable-languages=c
> > >
> > > and trimming the testcase to the first line I cannot reproduce the
> > > reported
> > > assembly. I get at -O3
> > >
> > > .arm
> > > .fpu softvfp
> >
> > For some reason, you are not targeting the right FPU, I have:
> > .arm
> > .fpu neon-fp16
>
> I noticed that - but it doesn't change even when supplying
> -mpfu=neon-fp16 -mcpu=cortex-a9
>
> I suppose some configure-time checking disables this feature somehow
> without notifying me :/ (don't have a armeb assembler installed,
> trying a pure cc1 cross)
>
> Anyway, I can't reproduce even after spending 1+ hours on this.
Yeah, I see the same thing building it that way. I needed to restate
the abi using -mfloat-abi=hard.
I'm pretty sure it's a target bug though. If a vector constructor
has a single nonconstant element, neon_expand_vector_init uses the
neon_vset_lane* patterns to set that index. But neon_vset_lane*
use the architecture lane numbering while neon_expand_vector_init
uses GCC lane numbering. Using the vec_set(_internal) patterns
should fix that.