configure.ac (HAVE_AS_IX86_INTERUNIT_MOVQ): Always define as 0/1.
authorUros Bizjak <ubizjak@gmail.com>
Fri, 1 Nov 2013 08:39:31 +0000 (09:39 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Fri, 1 Nov 2013 08:39:31 +0000 (09:39 +0100)
* configure.ac (HAVE_AS_IX86_INTERUNIT_MOVQ): Always define as 0/1.
* configure: Regenerate.
* config/i386/i386.md (*movdi_internal): Change
HAVE_AS_IX86_INTERUNIT_MOVQ to runtime check.
(*movdf_internal): Ditto.
* config/i386/mmx.md (*mov<mode>_internal): Ditto.
* config/i386/sse.md (vec_concatv2di): Output interunit movq
for HAVE_AS_IX86_INTERUNIT_MOVQ targets.

From-SVN: r204289

gcc/ChangeLog
gcc/config/i386/i386.md
gcc/config/i386/mmx.md
gcc/config/i386/sse.md
gcc/configure
gcc/configure.ac

index 629112b9e6160d083e6a6d0474b7f728e61e0009..0eea81e5001bfec016393fb22c8cf29f22163fa3 100644 (file)
@@ -1,3 +1,14 @@
+2013-11-01  Uros Bizjak  <ubizjak@gmail.com>
+
+       * configure.ac (HAVE_AS_IX86_INTERUNIT_MOVQ): Always define as 0/1.
+       * configure: Regenerate.
+       * config/i386/i386.md (*movdi_internal): Change
+       HAVE_AS_IX86_INTERUNIT_MOVQ to runtime check.
+       (*movdf_internal): Ditto.
+       * config/i386/mmx.md (*mov<mode>_internal): Ditto.
+       * config/i386/sse.md (vec_concatv2di): Output interunit movq
+       for HAVE_AS_IX86_INTERUNIT_MOVQ targets.
+
 2013-10-31  Robert Suchanek  <Robert.Suchanek@imgtec.com>
 
        * lra-spills.c (assign_spill_hard_regs): Remove statement terminator
index 79db5f82f24bce805faa0961d7b4112db67296dc..383bb97bace84e2b3f65eac625f203073010046f 100644 (file)
       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]))
+      if (!HAVE_AS_IX86_INTERUNIT_MOVQ
+         && (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:
       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]))
+         if (!HAVE_AS_IX86_INTERUNIT_MOVQ
+             && (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}";
          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]))
+         if (!HAVE_AS_IX86_INTERUNIT_MOVQ
+             && (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}";
+         return "%vmovq\t{%1, %0|%0, %1}";
 
        default:
          gcc_unreachable ();
index 17e24999258cb3c55a399681e2410b4c0969e3c1..cc0db3a9d06f3cfde05cb19feb9ae0108572b6f7 100644 (file)
       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]))
+      if (!HAVE_AS_IX86_INTERUNIT_MOVQ
+         && (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_SSECVT:
       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]))
+         if (!HAVE_AS_IX86_INTERUNIT_MOVQ
+             && (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}";
-
        case MODE_XI:
          return "vmovdqa64\t{%g1, %g0|%g0, %g1}";
 
index 7187035a6f2fe380ea41ae2eb6d425f46481bb0f..9094a1c8b9735f50336c8c58804292230b8673d1 100644 (file)
   "@
    pinsrq\t{$1, %2, %0|%0, %2, 1}
    vpinsrq\t{$1, %2, %1, %0|%0, %1, %2, 1}
-   %vmovd\t{%1, %0|%0, %1}
+   * return HAVE_AS_IX86_INTERUNIT_MOVQ ? \"%vmovq\t{%1, %0|%0, %1}\" : \"%vmovd\t{%1, %0|%0, %1}\";
    %vmovq\t{%1, %0|%0, %1}
    movq2dq\t{%1, %0|%0, %1}
    punpcklqdq\t{%2, %0|%0, %2}
index ea9190683c5f03e9036153f5f89394b45ed78159..759862c00f75bdc4e9ebabad0691f78ebfc1c5d4 100755 (executable)
@@ -24802,11 +24802,12 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_ix86_interunit_movq" >&5
 $as_echo "$gcc_cv_as_ix86_interunit_movq" >&6; }
-if test $gcc_cv_as_ix86_interunit_movq = yes; then
 
-$as_echo "#define HAVE_AS_IX86_INTERUNIT_MOVQ 1" >>confdefs.h
 
-fi
+cat >>confdefs.h <<_ACEOF
+#define HAVE_AS_IX86_INTERUNIT_MOVQ `if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`
+_ACEOF
+
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for hle prefixes" >&5
 $as_echo_n "checking assembler for hle prefixes... " >&6; }
index 3d3b26b28a01fb6171114e9f6b8e69318929e103..8670c7b7ceee2701c39a9f24bc9cd2e7b0ae1665 100644 (file)
@@ -3754,9 +3754,10 @@ foo:     nop
       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.])])
+       movq %rax, %xmm0])
+    AC_DEFINE_UNQUOTED(HAVE_AS_IX86_INTERUNIT_MOVQ,
+      [`if test $gcc_cv_as_ix86_interunit_movq = yes; then echo 1; else echo 0; fi`],
+      [Define if your assembler supports interunit movq mnemonic.])
 
     gcc_GAS_CHECK_FEATURE([hle prefixes],
       gcc_cv_as_ix86_hle,,,