Commit 95f89bb3 by Ramana Radhakrishnan Committed by Ramana Radhakrishnan

vfp.md ("*movdf_vfp"): Handle the VFP constraints before the core constraints.



2011-07-28  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>

	* config/arm/vfp.md ("*movdf_vfp"): Handle the VFP constraints
	before the core constraints. Adjust attributes.
	(*thumb2_movdf_vfp"): Likewise.

From-SVN: r176867
parent 98958241
2011-07-28 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
* config/arm/vfp.md ("*movdf_vfp"): Handle the VFP constraints
before the core constraints. Adjust attributes.
(*thumb2_movdf_vfp"): Likewise.
2011-07-28 Kai Tietz <ktietz@redhat.com> 2011-07-28 Kai Tietz <ktietz@redhat.com>
* tree-vrp.c (simplify_stmt_using_ranges): Remove * tree-vrp.c (simplify_stmt_using_ranges): Remove
......
...@@ -408,8 +408,8 @@ ...@@ -408,8 +408,8 @@
;; DFmode moves ;; DFmode moves
(define_insn "*movdf_vfp" (define_insn "*movdf_vfp"
[(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,r, m,w ,Uv,w,r") [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,w ,Uv,r, m,w,r")
(match_operand:DF 1 "soft_df_operand" " ?r,w,Dy,mF,r,UvF,w, w,r"))] (match_operand:DF 1 "soft_df_operand" " ?r,w,Dy,UvF,w ,mF,r,w,r"))]
"TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP
&& ( register_operand (operands[0], DFmode) && ( register_operand (operands[0], DFmode)
|| register_operand (operands[1], DFmode))" || register_operand (operands[1], DFmode))"
...@@ -425,9 +425,9 @@ ...@@ -425,9 +425,9 @@
gcc_assert (TARGET_VFP_DOUBLE); gcc_assert (TARGET_VFP_DOUBLE);
return \"fconstd%?\\t%P0, #%G1\"; return \"fconstd%?\\t%P0, #%G1\";
case 3: case 4: case 3: case 4:
return output_move_double (operands);
case 5: case 6:
return output_move_vfp (operands); return output_move_vfp (operands);
case 5: case 6:
return output_move_double (operands);
case 7: case 7:
if (TARGET_VFP_SINGLE) if (TARGET_VFP_SINGLE)
return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\"; return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\";
...@@ -442,7 +442,7 @@ ...@@ -442,7 +442,7 @@
" "
[(set_attr "type" [(set_attr "type"
"r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*") "r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
(set (attr "length") (cond [(eq_attr "alternative" "3,4,8") (const_int 8) (set (attr "length") (cond [(eq_attr "alternative" "5,6,8") (const_int 8)
(eq_attr "alternative" "7") (eq_attr "alternative" "7")
(if_then_else (if_then_else
(eq (symbol_ref "TARGET_VFP_SINGLE") (eq (symbol_ref "TARGET_VFP_SINGLE")
...@@ -456,8 +456,8 @@ ...@@ -456,8 +456,8 @@
) )
(define_insn "*thumb2_movdf_vfp" (define_insn "*thumb2_movdf_vfp"
[(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,r, m,w ,Uv,w,r") [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,w ,Uv,r ,m,w,r")
(match_operand:DF 1 "soft_df_operand" " ?r,w,Dy,mF,r,UvF,w, w,r"))] (match_operand:DF 1 "soft_df_operand" " ?r,w,Dy,UvF,w, mF,r, w,r"))]
"TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP" "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP"
"* "*
{ {
...@@ -470,10 +470,10 @@ ...@@ -470,10 +470,10 @@
case 2: case 2:
gcc_assert (TARGET_VFP_DOUBLE); gcc_assert (TARGET_VFP_DOUBLE);
return \"fconstd%?\\t%P0, #%G1\"; return \"fconstd%?\\t%P0, #%G1\";
case 3: case 4: case 8: case 3: case 4:
return output_move_double (operands);
case 5: case 6:
return output_move_vfp (operands); return output_move_vfp (operands);
case 5: case 6: case 8:
return output_move_double (operands);
case 7: case 7:
if (TARGET_VFP_SINGLE) if (TARGET_VFP_SINGLE)
return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\"; return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\";
...@@ -485,8 +485,8 @@ ...@@ -485,8 +485,8 @@
} }
" "
[(set_attr "type" [(set_attr "type"
"r_2_f,f_2_r,fconstd,load2,store2,f_loadd,f_stored,ffarithd,*") "r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
(set (attr "length") (cond [(eq_attr "alternative" "3,4,8") (const_int 8) (set (attr "length") (cond [(eq_attr "alternative" "5,6,8") (const_int 8)
(eq_attr "alternative" "7") (eq_attr "alternative" "7")
(if_then_else (if_then_else
(eq (symbol_ref "TARGET_VFP_SINGLE") (eq (symbol_ref "TARGET_VFP_SINGLE")
...@@ -494,8 +494,8 @@ ...@@ -494,8 +494,8 @@
(const_int 8) (const_int 8)
(const_int 4))] (const_int 4))]
(const_int 4))) (const_int 4)))
(set_attr "pool_range" "*,*,*,4096,*,1020,*,*,*") (set_attr "pool_range" "*,*,*,1020,*,4096,*,*,*")
(set_attr "neg_pool_range" "*,*,*,0,*,1008,*,*,*")] (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")]
) )
......
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