https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93738
--- Comment #14 from Kishan Parmar <kishan at gcc dot gnu.org> --- Little Endian (insn 10 9 11 2 (set (reg:SI 124) (and:SI (subreg:SI (reg:DI 128 [ x ]) 0) (const_int 15728640 [0xf00000]))) 200 {andsi3_mask} (insn 12 11 13 2 (set (reg:SI 126) (and:SI (reg:SI 125 [+-2 ]) (const_int -15728641 [0xffffffffff0fffff]))) 200 {andsi3_mask} (insn 13 12 14 2 (set (reg:SI 127) (ior:SI (reg:SI 126) (reg:SI 124))) 215 {*boolsi3} (set (reg:SI 127) (ior:SI (and:SI (reg:SI 125 [+-2 ]) (const_int -15728641 [0xffffffffff0fffff])) (and:SI (subreg:SI (reg:DI 128 [ x ]) 0) (const_int 15728640 [0xf00000])))) Successfully matched this instruction: (set (reg:SI 127) (ior:SI (and:SI (reg:SI 125 [+-2 ]) (const_int -15728641 [0xffffffffff0fffff])) (and:SI (subreg:SI (reg:DI 128 [ x ]) 0) (const_int 15728640 [0xf00000])))) allowing combination of insns 10, 12 and 13 original costs 4 + 4 + 4 = 12 replacement cost 4 deferring deletion of insn with uid = 12. deferring deletion of insn with uid = 10. modifying insn i3 13: r127:SI=r125:SI&0xffffffffff0fffff|r128:DI#0&0xf00000 REG_DEAD r128:DI REG_DEAD r125:SI deferring rescan insn with uid = 13.