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

--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Uroš Bizjak from comment #9)
> (In reply to rguent...@suse.de from comment #8)
> > > (In reply to Richard Biener from comment #6)
> > > > We are missing vec_extractv2sisi or vec_extractv8qiv4qi, with -mno-mmx 
> > > > -mavx.
> > > > It seems we have addv2si3 available though.
> > > 
> > > vec_extractv2sisi is available in mmx.md even with -mno-mmx:
> > > 
> > > (define_expand "vec_extractv2sisi"
> > >   [(match_operand:SI 0 "register_operand")
> > >    (match_operand:V2SI 1 "register_operand")
> > >    (match_operand 2 "const_int_operand")]
> > >   "TARGET_MMX || TARGET_MMX_WITH_SSE"
> > > {
> > >   ix86_expand_vector_extract (TARGET_MMX_WITH_SSE, operands[0],
> > >                               operands[1], INTVAL (operands[2]));
> > >   DONE;
> > > })
> > 
> > But I think with -m32 we have !TARGET_MMX_WITH_SSE
> 
> Yes, that is true. Please note that in this case, we don't have addv2si3 as
> well as it also depends on TARGET_MMX_WITH_SSE.

Oh, the testcase doesn't use add but xorv8qi3.  But since we're using
DImode for v8qi we of course do have support for it but also obviously
later will fail the vec_extract obtab queries ... a disi vec_extract
does not exist.

So it's the vectorizers fault to not properly account for scalar integer mode
vector types.

Reply via email to