https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89040
H.J. Lu <hjl.tools at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2019-01-24
Ever confirmed|0 |1
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
This works on the testcase:
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 9c1bfabe9a7..c24e70d9725 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -41,8 +41,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If
not, see
#define TARGET_64BIT TARGET_ISA_64BIT
#define TARGET_64BIT_P(x) TARGET_ISA_64BIT_P(x)
-#define TARGET_MMX TARGET_ISA_MMX
-#define TARGET_MMX_P(x) TARGET_ISA_MMX_P(x)
+/* In 64-bit mode, use SSE2 to emulate MMX. */
+#define TARGET_MMX (TARGET_ISA_MMX || (TARGET_64BIT && TARGET_SSE2))
+#define TARGET_MMX_P(x) (TARGET_ISA_MMX_P(x) \
+ || (TARGET_64BIT_P (x) && TARGET_SSE2_P (x)))
#define TARGET_3DNOW TARGET_ISA_3DNOW
#define TARGET_3DNOW_P(x) TARGET_ISA_3DNOW_P(x)
#define TARGET_3DNOW_A TARGET_ISA_3DNOW_A