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 rguent...@suse.de 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.

Reply via email to