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

--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #17)
> Seeing
> 
> Trying 21 -> 24:
>    21: r150:V4SI=vec_select(vec_concat(r146:V4SI,r141:V4SI),parallel)
>       REG_DEAD r146:V4SI
>       REG_DEAD r141:V4SI
>    24: {r151:SI=vec_select(r150:V4SI,parallel);clobber scratch;}
> ...
> Successfully matched this instruction:
> (set (reg:SI 151)
>     (vec_select:SI (reg:V4SI 141)
>         (parallel [
>                 (const_int 3 [0x3])
>             ])))
> 
> shouldn't that be (vec_select:SI (reg:V4SI 146) ...)?  Or does
> (vec_concat:V8SI (xx:V4SI xx:V4SI)) magically swap the two V4SI vectors?

Ah, no, the combination looks correct to me.  After all the select in 21
interleaves the two inputs.

Reply via email to