OSDN Git Service

2006-01-20 Paul Brook <paul@codesourcery.com>
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Jan 2006 23:23:03 +0000 (23:23 +0000)
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Jan 2006 23:23:03 +0000 (23:23 +0000)
Merge from csl-arm-branch.
2005-09-21  Kazu Hirata  <kazu@codesourcery.com>
* config/arm/arm.md (movdi): Force operands[1] to a register
if we have a non-register source.
(*arm_movdi, *movdf_soft_insn): Require that one of the
operands be a register.
* config/arm/iwmmxt.md (*iwmmxt_arm_movdi): Likewise.
* config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.

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

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

index d5f4562..cf357d5 100644 (file)
@@ -1,3 +1,14 @@
+2006-01-20  Paul Brook  <paul@codesourcery.com>
+
+       Merge from csl-arm-branch.
+       2005-09-21  Kazu Hirata  <kazu@codesourcery.com>
+       * config/arm/arm.md (movdi): Force operands[1] to a register
+       if we have a non-register source.
+       (*arm_movdi, *movdf_soft_insn): Require that one of the
+       operands be a register.
+       * config/arm/iwmmxt.md (*iwmmxt_arm_movdi): Likewise.
+       * config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
+
 2006-01-20  DJ Delorie  <dj@redhat.com>
 
        * varasm.c (initialize_constant_valid_p): Allow pointers
index 239961a..a3a7556 100644 (file)
        (match_operand:DI 1 "general_operand" ""))]
   "TARGET_EITHER"
   "
-  if (TARGET_THUMB)
+  if (!no_new_pseudos)
     {
-      if (!no_new_pseudos)
-        {
-          if (GET_CODE (operands[0]) != REG)
-           operands[1] = force_reg (DImode, operands[1]);
-        }
+      if (GET_CODE (operands[0]) != REG)
+       operands[1] = force_reg (DImode, operands[1]);
     }
   "
 )
   [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m")
        (match_operand:DI 1 "di_operand"              "rDa,Db,Dc,mi,r"))]
   "TARGET_ARM
-  && !(TARGET_HARD_FLOAT && (TARGET_MAVERICK || TARGET_VFP))
-  && !TARGET_IWMMXT"
+   && !(TARGET_HARD_FLOAT && (TARGET_MAVERICK || TARGET_VFP))
+   && !TARGET_IWMMXT
+   && (   register_operand (operands[0], DImode)
+       || register_operand (operands[1], DImode))"
   "*
   switch (which_alternative)
     {
   [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=r,r,r,r,m")
        (match_operand:DF 1 "soft_df_operand" "rDa,Db,Dc,mF,r"))]
   "TARGET_ARM && TARGET_SOFT_FLOAT
-  "
+   && (   register_operand (operands[0], DFmode)
+       || register_operand (operands[1], DFmode))"
   "*
   switch (which_alternative)
     {
index 44b1966..380d4b9 100644 (file)
@@ -66,7 +66,9 @@
 (define_insn "*iwmmxt_arm_movdi"
   [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, m,y,y,yr,y,yrUy")
        (match_operand:DI 1 "di_operand"              "rIK,mi,r,y,yr,y,yrUy,y"))]
-  "TARGET_REALLY_IWMMXT"
+  "TARGET_REALLY_IWMMXT
+   && (   register_operand (operands[0], DImode)
+       || register_operand (operands[1], DImode))"
   "*
 {
   switch (which_alternative)
index 5809a45..c85f58c 100644 (file)
 (define_insn "*arm_movdi_vfp"
   [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r,m,w,r,w,w, Uv")
        (match_operand:DI 1 "di_operand"              "rIK,mi,r,r,w,w,Uvi,w"))]
-  "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP"
+  "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP
+   && (   register_operand (operands[0], DImode)
+       || register_operand (operands[1], DImode))"
   "*
   switch (which_alternative)
     {
 (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"))]
-  "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP"
+  "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP
+   && (   register_operand (operands[0], DFmode)
+       || register_operand (operands[1], DFmode))"
   "*
   {
     switch (which_alternative)