aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2007-02-23 19:19:07 +0100
committerUros Bizjak <uros@gcc.gnu.org>2007-02-23 19:19:07 +0100
commit4afb77911f574a7339669a80ad5f6aca5d15a34b (patch)
treeb200f5afd79f9ccce064ee4bb387c359a0c6742c
parentc67dc1a321d96ffb623c72f07097ce3683811f4b (diff)
downloadgcc-4afb77911f574a7339669a80ad5f6aca5d15a34b.zip
gcc-4afb77911f574a7339669a80ad5f6aca5d15a34b.tar.gz
gcc-4afb77911f574a7339669a80ad5f6aca5d15a34b.tar.bz2
re PR target/30825 (current mainline fails to bootstrap when -msse is used)
PR target/30825 * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32, zero_extendsidi2_rex64): Penalize MMX register<->memory moves. (*movsf_1): Penalize MMX moves. From-SVN: r122268
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.md16
2 files changed, 15 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e3db094..4cccd20 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2007-02-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/30825
+ * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
+ zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
+ (*movsf_1): Penalize MMX moves.
+
2007-02-23 Bernd Schmidt <bernd.schmidt@analog.com>
* config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 920b9dd..bb3dd21 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -2022,9 +2022,9 @@
(define_insn "*movdi_1_rex64"
[(set (match_operand:DI 0 "nonimmediate_operand"
- "=r,r ,r,m ,!m,*y,*y,?r ,m ,?*Ym,*y,*x,*x,?r ,m,?*Yi,*x,?*x,?*Ym")
+ "=r,r ,r,m ,!m,*y,*y,?r ,m ,?*Ym,?*y,*x,*x,?r ,m,?*Yi,*x,?*x,?*Ym")
(match_operand:DI 1 "general_operand"
- "Z ,rem,i,re,n ,C ,*y,*Ym,*y,r ,m ,C ,*x,*Yi,*x,r ,m ,*Ym,*x"))]
+ "Z ,rem,i,re,n ,C ,*y,*Ym,*y,r ,m ,C ,*x,*Yi,*x,r ,m ,*Ym,*x"))]
"TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
{
switch (get_attr_type (insn))
@@ -2326,9 +2326,9 @@
(define_insn "*movsf_1"
[(set (match_operand:SF 0 "nonimmediate_operand"
- "=f,m,f,r ,m ,x,x,x ,m,*y,m ,*y,Yi,r ,*Ym,r ")
+ "=f,m,f,r ,m ,x,x,x ,m,!*y,!m,!*y,?Yi,?r,!*Ym,!r")
(match_operand:SF 1 "general_operand"
- "fm,f,G,rmF,Fr,C,x,xm,x,m ,*y,*y,r ,Yi,r ,*Ym"))]
+ "fm,f,G,rmF,Fr,C,x,xm,x,m ,*y,*y ,r ,Yi,r ,*Ym"))]
"!(MEM_P (operands[0]) && MEM_P (operands[1]))
&& (reload_in_progress || reload_completed
|| (ix86_cmodel == CM_MEDIUM || ix86_cmodel == CM_LARGE)
@@ -3401,9 +3401,9 @@
})
(define_insn "zero_extendsidi2_32"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?o,?*Ym,*y,?*Yi,*Y2")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?o,?*Ym,?*y,?*Yi,*Y2")
(zero_extend:DI
- (match_operand:SI 1 "nonimmediate_operand" "0,rm,r ,r ,m ,r ,m")))
+ (match_operand:SI 1 "nonimmediate_operand" "0,rm,r ,r ,m ,r ,m")))
(clobber (reg:CC FLAGS_REG))]
"!TARGET_64BIT"
"@
@@ -3418,9 +3418,9 @@
(set_attr "type" "multi,multi,multi,mmxmov,mmxmov,ssemov,ssemov")])
(define_insn "zero_extendsidi2_rex64"
- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,?*Ym,*y,?*Yi,*Y2")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,?*Ym,?*y,?*Yi,*Y2")
(zero_extend:DI
- (match_operand:SI 1 "nonimmediate_operand" "rm,0,r ,m ,r ,m")))]
+ (match_operand:SI 1 "nonimmediate_operand" "rm,0,r ,m ,r ,m")))]
"TARGET_64BIT"
"@
mov\t{%k1, %k0|%k0, %k1}