https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117926
--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> --- Even better (and more reliable) solution: tag 3dNOW insns with an unspec: (define_insn "mmx_floatv2siv2sf2" [(set (match_operand:V2SF 0 "register_operand" "=y") - (float:V2SF (match_operand:V2SI 1 "nonimmediate_operand" "ym")))] + (float:V2SF (match_operand:V2SI 1 "nonimmediate_operand" "ym"))) + (unspec [(const_int 0)] UNSPEC_3DNOW)] "TARGET_3DNOW" "pi2fd\t{%1, %0|%0, %1}" [(set_attr "type" "mmxcvt")