Commit d5b6e637 by Paul Brook Committed by Paul Brook

[multiple changes]

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.

From-SVN: r110048
parent 974c2c56
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> 2006-01-20 DJ Delorie <dj@redhat.com>
* varasm.c (initialize_constant_valid_p): Allow pointers * varasm.c (initialize_constant_valid_p): Allow pointers
......
...@@ -4092,14 +4092,11 @@ ...@@ -4092,14 +4092,11 @@
(match_operand:DI 1 "general_operand" ""))] (match_operand:DI 1 "general_operand" ""))]
"TARGET_EITHER" "TARGET_EITHER"
" "
if (TARGET_THUMB)
{
if (!no_new_pseudos) if (!no_new_pseudos)
{ {
if (GET_CODE (operands[0]) != REG) if (GET_CODE (operands[0]) != REG)
operands[1] = force_reg (DImode, operands[1]); operands[1] = force_reg (DImode, operands[1]);
} }
}
" "
) )
...@@ -4108,7 +4105,9 @@ ...@@ -4108,7 +4105,9 @@
(match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,r"))] (match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,r"))]
"TARGET_ARM "TARGET_ARM
&& !(TARGET_HARD_FLOAT && (TARGET_MAVERICK || TARGET_VFP)) && !(TARGET_HARD_FLOAT && (TARGET_MAVERICK || TARGET_VFP))
&& !TARGET_IWMMXT" && !TARGET_IWMMXT
&& ( register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode))"
"* "*
switch (which_alternative) switch (which_alternative)
{ {
...@@ -5272,7 +5271,8 @@ ...@@ -5272,7 +5271,8 @@
[(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=r,r,r,r,m") [(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"))] (match_operand:DF 1 "soft_df_operand" "rDa,Db,Dc,mF,r"))]
"TARGET_ARM && TARGET_SOFT_FLOAT "TARGET_ARM && TARGET_SOFT_FLOAT
" && ( register_operand (operands[0], DFmode)
|| register_operand (operands[1], DFmode))"
"* "*
switch (which_alternative) switch (which_alternative)
{ {
......
...@@ -66,7 +66,9 @@ ...@@ -66,7 +66,9 @@
(define_insn "*iwmmxt_arm_movdi" (define_insn "*iwmmxt_arm_movdi"
[(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, m,y,y,yr,y,yrUy") [(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"))] (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) switch (which_alternative)
......
...@@ -148,7 +148,9 @@ ...@@ -148,7 +148,9 @@
(define_insn "*arm_movdi_vfp" (define_insn "*arm_movdi_vfp"
[(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r,m,w,r,w,w, Uv") [(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"))] (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) switch (which_alternative)
{ {
...@@ -207,7 +209,9 @@ ...@@ -207,7 +209,9 @@
(define_insn "*movdf_vfp" (define_insn "*movdf_vfp"
[(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,r,r, m,w ,Uv,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"))] (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) switch (which_alternative)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment