diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2007-02-23 19:19:07 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2007-02-23 19:19:07 +0100 |
commit | 4afb77911f574a7339669a80ad5f6aca5d15a34b (patch) | |
tree | b200f5afd79f9ccce064ee4bb387c359a0c6742c | |
parent | c67dc1a321d96ffb623c72f07097ce3683811f4b (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 16 |
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} |