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.