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

Drea Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2026-09-27
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1

--- Comment #1 from Drea Pinski <pinskia at gcc dot gnu.org> ---
```
Trying 8 -> 10:
    8: r106:V8SI=vec_concat(r111:V2DI#0,const_vector)
      REG_DEAD r111:V2DI
   10: r108:V4DI=vec_concat(vec_select(r106:V8SI#0,parallel),r110:V2DI)
      REG_DEAD r110:V2DI
      REG_DEAD r106:V8SI
Failed to match this instruction:
(set (reg:V4DI 108)
    (vec_concat:V4DI (vec_select:V2DI (subreg:V4DI (vec_concat:V8SI
(subreg:V4SI (reg:V2DI 111 [ loD.44994 ]) 0)
                    (const_vector:V4SI [
                            (const_int 0 [0]) repeated x4
                        ])) 0)
            (parallel [
                    (const_int 0 [0])
                    (const_int 1 [0x1])
                ]))
        (reg:V2DI 110 [ hiD.44993 ])))
```

that inner subreg could be:
(vec_concat:V4DI (reg:V2DI 111 [ loD.44994 ]) (const_vector:V2DI [
                            (const_int 0 [0]) repeated x2
                        ]))

And then the vec_select becomes:
(reg:V2DI 111 [ loD.44994 ])

That is one way of fixing this.

Reply via email to