https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109414
--- Comment #2 from Sinan <sinan.lin at linux dot alibaba.com> --- commit 23d9f62c50d935462ecda5516746037a474c25cd looks like a solution for this. like adding a new pattern for `not` ``` (define_insn "*one_cmpl_subreg" [(set (match_operand:DI 0 "register_operand" "=r") (not:DI (sign_extend:DI (match_operand:SI 1 "register_operand" " r"))))] "TARGET_64BIT && !partial_subreg_p (operands[1])" "not\t%0,%1" [(set_attr "type" "logical") (set_attr "mode" "SI")]) ``` but somehow it does not work for xor/or/and ...