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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2025-03-10
          Component|tree-optimization           |middle-end
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
On the RTL level we in one spot we have:

Trying 16, 14 -> 17:
   16: r134:DI=r156:DI<<0x28&0xff0000000000
      REG_DEAD r156:DI
   14: r132:DI=r155:DI<<0x20&0xff00000000
      REG_DEAD r155:DI
   17: r135:DI=r132:DI|r134:DI
      REG_DEAD r134:DI
      REG_DEAD r132:DI
Failed to match this instruction:
(set (reg:DI 135 [ _19 ])
    (ior:DI (and:DI (ashift:DI (reg:DI 156 [ fD.4585 ])
                (const_int 40 [0x28]))
            (const_int 280375465082880 [0xff0000000000]))
        (and:DI (ashift:DI (reg:DI 155 [ eD.4584 ])
                (const_int 32 [0x20]))
            (const_int 1095216660480 [0xff00000000]))))

This is:
ubfiz   rt, r156, 40, 8
mov     r135, rt
bfi     r135, r155, 32, 8

But we don't have a pattern for that ...

There might be another one or 2 bugs about this too.

Reply via email to