This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH, i386]: Avoid remaining interunit moves for !TARGET_INTER_UNIT_MOVES
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Sun, 03 Aug 2008 20:45:15 +0200
- Subject: [PATCH, i386]: Avoid remaining interunit moves for !TARGET_INTER_UNIT_MOVES
Hello!
This patch fixes an oversight for MMX move patterns. A couple of "x"
constraints should be marked as "Yi" to avoid interunit moves for
!TARGET_INTER_UNIT_MOVES.
2008-08-03 Uros Bizjak <ubizjak@gmail.com>
* config/i386/mmx.md (*mov<mode>_internal_rex64): Use Yi instead of x
to avoid inter-unit moves for !TARGET_INTER_UNIT_MOVES.
(*movv2sf_internal_rex64): Ditto.
Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu.
Patch is committed to mainline.
Uros.
Index: mmx.md
===================================================================
--- mmx.md (revision 138565)
+++ mmx.md (working copy)
@@ -65,9 +65,9 @@
(define_insn "*mov<mode>_internal_rex64"
[(set (match_operand:MMXMODEI8 0 "nonimmediate_operand"
- "=rm,r,!?y,!?y ,m ,!y,*Y2,x,x ,m,r,x")
+ "=rm,r,!?y,!?y ,m ,!y,*Y2,x,x ,m,r,Yi")
(match_operand:MMXMODEI8 1 "vector_move_operand"
- "Cr ,m,C ,!?ym,!?y,*Y2,!y,C,xm,x,x,r"))]
+ "Cr ,m,C ,!?ym,!?y,*Y2,!y,C,xm,x,Yi,r"))]
"TARGET_64BIT && TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
@@ -124,9 +124,9 @@
(define_insn "*movv2sf_internal_rex64"
[(set (match_operand:V2SF 0 "nonimmediate_operand"
- "=rm,r ,!?y,!?y ,m ,!y,*Y2,x,x,x,m,r,x")
+ "=rm,r ,!?y,!?y ,m ,!y,*Y2,x,x,x,m,r,Yi")
(match_operand:V2SF 1 "vector_move_operand"
- "Cr ,m ,C ,!?ym,!y,*Y2,!y,C,x,m,x,x,r"))]
+ "Cr ,m ,C ,!?ym,!y,*Y2,!y,C,x,m,x,Yi,r"))]
"TARGET_64BIT && TARGET_MMX
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@