OSDN Git Service

2006-03-29 Paul Brook <paul@codesourcery.com>
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 29 Mar 2006 19:14:57 +0000 (19:14 +0000)
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 29 Mar 2006 19:14:57 +0000 (19:14 +0000)
* config/arm/vfp.md (movsf_vfp): Disparage w<->r alternatives.
(movdf_vfp): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112504 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/vfp.md

index 274c94d..4d499c3 100644 (file)
@@ -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
index c85f58c..3f8b397 100644 (file)
 
 
 ;; 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))"
 ;; 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))"