This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix up --enable-checking=rtl SSE/AVX regressions
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Uros Bizjak <ubizjak at gmail dot com>, Kirill Yukhin <kirill dot yukhin at gmail dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Wed, 1 Jan 2014 00:55:36 +0100
- Subject: [PATCH] Fix up --enable-checking=rtl SSE/AVX regressions
- Authentication-results: sourceware.org; auth=none
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
Hi!
In --enable-checking=rtl bootstrap most of SSE/AVX tests fail, because
*mov<mode>_internal is using REGNO on operands that are e.g. MEM or
CONST_INT etc. Fixed thusly, bootstrapped/regtested on x86_64-linux and
i686-linux, committed to trunk as obvious.
2014-01-01 Jakub Jelinek <jakub@redhat.com>
* config/i386/sse.md (*mov<mode>_internal): Guard
EXT_REX_SSE_REGNO_P (REGNO ()) uses with REG_P.
--- gcc/config/i386/sse.md.jj 2013-12-31 13:52:45.000000000 +0100
+++ gcc/config/i386/sse.md 2013-12-31 20:13:32.673520479 +0100
@@ -670,8 +670,10 @@ (define_insn "*mov<mode>_internal"
in avx512f, so we need to use workarounds, to access sse registers
16-31, which are evex-only. */
if (TARGET_AVX512F && GET_MODE_SIZE (<MODE>mode) < 64
- && (EXT_REX_SSE_REGNO_P (REGNO (operands[0]))
- || EXT_REX_SSE_REGNO_P (REGNO (operands[1]))))
+ && ((REG_P (operands[0])
+ && EXT_REX_SSE_REGNO_P (REGNO (operands[0])))
+ || (REG_P (operands[1])
+ && EXT_REX_SSE_REGNO_P (REGNO (operands[1])))))
{
if (memory_operand (operands[0], <MODE>mode))
{
Jakub