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.

Reply via email to