https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98567
--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> --- Comment on attachment 49901 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49901 gcc11-pr98567.patch >+(define_insn "*bmi_blsi_<mode>_cmp" >+ [(set (reg:CCZ FLAGS_REG) >+ (compare:CCZ >+ (and:SWI48 >+ (neg:SWI48 (match_operand:SWI48 1 "nonimmediate_operand" "rm")) >+ (match_dup 1)) >+ (const_int 0))) >+ (set (match_operand:SWI48 0 "register_operand" "=r") >+ (and:SWI48 (neg:SWI48 (match_dup 1)) (match_dup 1)))] >+ "TARGET_BMI" >+ "blsi\t{%1, %0|%0, %1}" >+ [(set_attr "type" "bitmanip") >+ (set_attr "btver2_decode" "double") >+ (set_attr "mode" "<MODE>")]) This insn also sets SF and thus can handle all CCNOmode comparisons. So, ix86_match_ccmode (insn, CCNOmode) insn predicate should be used instead of CCZ mode.