https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117926

--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> ---
We have to prevent forward propagation by disabling memory operand for
!TARGET_MMX_WITH_SSE:

 (define_insn "mmx_floatv2siv2sf2"
-  [(set (match_operand:V2SF 0 "register_operand" "=y")
-       (float:V2SF (match_operand:V2SI 1 "nonimmediate_operand" "ym")))]
+  [(set (match_operand:V2SF 0 "register_operand" "=y,y")
+       (float:V2SF (match_operand:V2SI 1 "register_mmxmem_operand" "y,m")))]
   "TARGET_3DNOW"
   "pi2fd\t{%1, %0|%0, %1}"
   [(set_attr "type" "mmxcvt")
+   (set_attr "mmx_isa" "*,native")
    (set_attr "prefix_extra" "1")
    (set_attr "mode" "V2SF")])

Probably for all 3dNow! insns.

Reply via email to