[Bug target/101205] csinv does not have an zero_extend version

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Jul 17 07:54:52 GMT 2021


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

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The problem is csinv3si_insn, csinv3_uxtw_insn2, nor csinv3_uxtw_insn3 would
match as those have the zero_extend inside the if/then/else rather on the
outside which is being matched here:
Trying 36 -> 19:
   36: r94:SI={(cc:CC==0)?~r100:SI:r101:SI}
      REG_DEAD r100:SI
      REG_DEAD cc:CC
      REG_DEAD r101:SI
   19: x0:DI=zero_extend(r94:SI)
      REG_DEAD r94:SI
Failed to match this instruction:
(set (reg/i:DI 0 x0)
    (zero_extend:DI (if_then_else:SI (eq (reg:CC 66 cc)
                (const_int 0 [0]))
            (not:SI (reg:SI 100))
            (reg:SI 101))))


More information about the Gcc-bugs mailing list