From: Uros Bizjak Date: Fri, 1 Nov 2013 08:39:31 +0000 (+0100) Subject: configure.ac (HAVE_AS_IX86_INTERUNIT_MOVQ): Always define as 0/1. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=13a26a7d10c7beb64dcdb8c41d6c4b1d81a1a271;p=gcc.git 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_internal): Ditto. * config/i386/sse.md (vec_concatv2di): Output interunit movq for HAVE_AS_IX86_INTERUNIT_MOVQ targets. From-SVN: r204289 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 629112b9e61..0eea81e5001 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2013-11-01 Uros Bizjak + + * 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_internal): Ditto. + * config/i386/sse.md (vec_concatv2di): Output interunit movq + for HAVE_AS_IX86_INTERUNIT_MOVQ targets. + 2013-10-31 Robert Suchanek * 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 79db5f82f24..383bb97bace 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 17e24999258..cc0db3a9d06 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 7187035a6f2..9094a1c8b97 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 ea9190683c5..759862c00f7 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 3d3b26b28a0..8670c7b7cee 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,,,