aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2006-03-29 19:14:57 +0000
committerPaul Brook <pbrook@gcc.gnu.org>2006-03-29 19:14:57 +0000
commit221b2a64481b3ef75e14c5205ff986ced3a88a22 (patch)
treec97a6f26feff1b6b0fcd5bf842b953654764762d
parent94a0c1fc2aae1972db50e2611595c5f063cc19ea (diff)
downloadgcc-221b2a64481b3ef75e14c5205ff986ced3a88a22.zip
gcc-221b2a64481b3ef75e14c5205ff986ced3a88a22.tar.gz
gcc-221b2a64481b3ef75e14c5205ff986ced3a88a22.tar.bz2
vfp.md (movsf_vfp): Disparage w<->r alternatives.
2006-03-29 Paul Brook <paul@codesourcery.com> * config/arm/vfp.md (movsf_vfp): Disparage w<->r alternatives. (movdf_vfp): Ditto. From-SVN: r112504
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/vfp.md10
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 274c94d..4d499c3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-03-29 Paul Brook <paul@codesourcery.com>
+
+ * config/arm/vfp.md (movsf_vfp): Disparage w<->r alternatives.
+ (movdf_vfp): Ditto.
+
2006-03-29 Sebastian Pop <pop@cri.ensmp.fr>
PR tree-optimization/26859
diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md
index c85f58c..3f8b397 100644
--- a/gcc/config/arm/vfp.md
+++ b/gcc/config/arm/vfp.md
@@ -181,10 +181,12 @@
;; SFmode moves
+;; Disparage the w<->r cases because reloading an invalid address is
+;; preferable to loading the value via integer registers.
(define_insn "*movsf_vfp"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=w,r,w ,Uv,r ,m,w,r")
- (match_operand:SF 1 "general_operand" " r,w,UvE,w, mE,r,w,r"))]
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=w,?r,w ,Uv,r ,m,w,r")
+ (match_operand:SF 1 "general_operand" " ?r,w,UvE,w, mE,r,w,r"))]
"TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP
&& ( s_register_operand (operands[0], SFmode)
|| s_register_operand (operands[1], SFmode))"
@@ -207,8 +209,8 @@
;; DFmode moves
(define_insn "*movdf_vfp"
- [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,r,r, m,w ,Uv,w,r")
- (match_operand:DF 1 "soft_df_operand" " r,w,mF,r,UvF,w, w,r"))]
+ [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,r, m,w ,Uv,w,r")
+ (match_operand:DF 1 "soft_df_operand" " ?r,w,mF,r,UvF,w, w,r"))]
"TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP
&& ( register_operand (operands[0], DFmode)
|| register_operand (operands[1], DFmode))"