https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106220
--- Comment #4 from Hongtao.liu <crazylht at gmail dot com> --- Try to add combine splitter (define_insn_and_split "*x86_64_shrd_lshiftrtti" [(set (match_operand:DI 0 "nonimmediate_operand") (subreg:DI (lshiftrt:TI (match_operand:TI 1 "nonimmediate_operand") (subreg:QI (and:SI (match_operand:SI 2 "register_operand") (const_int 63)) 0)) 0)) (clobber (reg:CC FLAGS_REG))] but failed if there's more than 2 shrd insns since there's flags clobber in the first shrd which prevent the second shrd to be combined. By the time it's splitted after reload, it's too later to optimize off redudant cmovne.