https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91204
--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Jakub Jelinek from comment #3) > seems to work for me. Or of course something similar can be done in > config/i386/mmx.md, basically copy the sse.md one_cmpl<mode>2 pattern to > mmx.md with TARGET_MMX_WITH_SSE and MMXMODEI iterator. Like this? --cut here-- diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md index 4c71e66e6607..c78b33b510a6 100644 --- a/gcc/config/i386/mmx.md +++ b/gcc/config/i386/mmx.md @@ -1158,6 +1158,14 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(define_expand "one_cmpl<mode>2" + [(set (match_operand:MMXMODEI 0 "register_operand") + (xor:MMXMODEI + (match_operand:MMXMODEI 1 "register_operand") + (match_dup 2)))] + "TARGET_MMX_WITH_SSE" + "operands[2] = force_reg (<MODE>mode, CONSTM1_RTX (<MODE>mode));") + (define_insn "mmx_andnot<mode>3" [(set (match_operand:MMXMODEI 0 "register_operand" "=y,x,Yv") (and:MMXMODEI --cut here--