[Bug middle-end/90323] powerpc should convert equivalent sequences to vec_sel()

luoxhu at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Apr 9 07:29:50 GMT 2021


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

--- Comment #12 from luoxhu at gcc dot gnu.org ---

That code was called by combine pass but fail to match. 

pr newpat
(set (reg:DI 125 [ l ])
    (xor:DI (and:DI (xor:DI (reg/v:DI 120 [ l ])
                (reg:DI 127))
            (const_int 267390975 [0xff00fff]))
        (reg/v:DI 120 [ l ])))


Trying 8, 10 -> 11:
    8: r123:DI=r120:DI^r127:DI
      REG_DEAD r127:DI
   10: r118:DI=r123:DI&0xff00fff
      REG_DEAD r123:DI
   11: r125:DI=r118:DI^r120:DI
      REG_DEAD r120:DI
      REG_DEAD r118:DI
Failed to match this instruction:
(set (reg:DI 125 [ l ])
    (ior:DI (and:DI (reg/v:DI 120 [ l ])
            (const_int -267390976 [0xfffffffff00ff000]))
        (and:DI (reg:DI 127)
            (const_int 267390975 [0xff00fff]))))
Successfully matched this instruction:
(set (reg:DI 118 [ _2 ])
    (and:DI (reg:DI 127)
        (const_int 267390975 [0xff00fff])))
Failed to match this instruction:
(set (reg:DI 125 [ l ])
    (ior:DI (and:DI (reg/v:DI 120 [ l ])
            (const_int -267390976 [0xfffffffff00ff000]))
        (reg:DI 118 [ _2 ])))


More information about the Gcc-bugs mailing list