===================================================================
@@ -1878,9 +1878,11 @@
return "pxor\t%0, %0";
case TYPE_MMXMOV:
+#ifndef HAVE_AS_IX86_INTERUNIT_MOVQ
/* Handle broken assemblers that require movd instead of movq. */
if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1]))
return "movd\t{%1, %0|%0, %1}";
+#endif
return "movq\t{%1, %0|%0, %1}";
case TYPE_SSELOG1:
@@ -1890,9 +1892,11 @@
switch (get_attr_mode (insn))
{
case MODE_DI:
+#ifndef HAVE_AS_IX86_INTERUNIT_MOVQ
/* Handle broken assemblers that require movd instead of movq. */
if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1]))
return "%vmovd\t{%1, %0|%0, %1}";
+#endif
return "%vmovq\t{%1, %0|%0, %1}";
case MODE_TI:
return "%vmovdqa\t{%1, %0|%0, %1}";
@@ -2797,9 +2801,11 @@
return "movlpd\t{%1, %0|%0, %1}";
case MODE_DI:
+#ifndef HAVE_AS_IX86_INTERUNIT_MOVQ
/* Handle broken assemblers that require movd instead of movq. */
if (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1]))
return "%vmovd\t{%1, %0|%0, %1}";
+#endif
return "%vmovq\t{%1, %0|%0, %1}";
default:
===================================================================
@@ -3723,6 +3723,14 @@
[AC_DEFINE(HAVE_AS_IX86_SAHF, 1,
[Define if your assembler supports the sahf mnemonic in 64bit mode.])])
+ gcc_GAS_CHECK_FEATURE([interunit movq mnemonic],
+ gcc_cv_as_ix86_interunit_movq,,,
+ [.code64
+ movq %mm0, %rax
+ movq %rax, %xmm0],,
+ [AC_DEFINE(HAVE_AS_IX86_INTERUNIT_MOVQ, 1,
+ [Define if your assembler supports interunit movq mnemonic.])])
+
gcc_GAS_CHECK_FEATURE([hle prefixes],
gcc_cv_as_ix86_hle,,,
[lock xacquire cmpxchg %esi, (%ecx)],,