aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2013-11-01 09:39:31 +0100
committerUros Bizjak <uros@gcc.gnu.org>2013-11-01 09:39:31 +0100
commit13a26a7d10c7beb64dcdb8c41d6c4b1d81a1a271 (patch)
tree2389ec09c09ab8d3e08ead56d13f42c99709506e /gcc
parent942323000bbc5bde768c0f651d62af5eea462c1d (diff)
downloadgcc-13a26a7d10c7beb64dcdb8c41d6c4b1d81a1a271.zip
gcc-13a26a7d10c7beb64dcdb8c41d6c4b1d81a1a271.tar.gz
gcc-13a26a7d10c7beb64dcdb8c41d6c4b1d81a1a271.tar.bz2
configure.ac (HAVE_AS_IX86_INTERUNIT_MOVQ): Always define as 0/1.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/i386/i386.md17
-rw-r--r--gcc/config/i386/mmx.md11
-rw-r--r--gcc/config/i386/sse.md2
-rwxr-xr-xgcc/configure7
-rw-r--r--gcc/configure.ac7
6 files changed, 31 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 629112b..0eea81e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 79db5f8..383bb97 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -2007,11 +2007,10 @@
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:
@@ -2024,11 +2023,10 @@
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}";
@@ -2944,12 +2942,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]))
+ 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 ();
diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md
index 17e2499..cc0db3a 100644
--- a/gcc/config/i386/mmx.md
+++ b/gcc/config/i386/mmx.md
@@ -99,11 +99,10 @@
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:
@@ -119,15 +118,13 @@
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}";
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 7187035..9094a1c 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -9489,7 +9489,7 @@
"@
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}
diff --git a/gcc/configure b/gcc/configure
index ea91906..759862c 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -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; }
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 3d3b26b..8670c7b 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -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,,,