Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/arm/vfp.md @ 63:b7f97abdc517 gcc-4.6-20100522
update gcc from gcc-4.5.0 to gcc-4.6
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 24 May 2010 12:47:05 +0900 |
parents | 77e2b8dfacca |
children | f6334be47118 |
comparison
equal
deleted
inserted
replaced
56:3c8a44c06a95 | 63:b7f97abdc517 |
---|---|
84 (set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores") | 84 (set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores") |
85 (set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*") | 85 (set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*") |
86 (set_attr "neg_pool_range" "*,*,*,*,4084,*,*,*,*,1008,*")] | 86 (set_attr "neg_pool_range" "*,*,*,*,4084,*,*,*,*,1008,*")] |
87 ) | 87 ) |
88 | 88 |
89 ;; See thumb2.md:thumb2_movsi_insn for an explanation of the split | |
90 ;; high/low register alternatives for loads and stores here. | |
89 (define_insn "*thumb2_movsi_vfp" | 91 (define_insn "*thumb2_movsi_vfp" |
90 [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m,*t,r, *t,*t, *Uv") | 92 [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r, l,*hk,m, *m,*t, r,*t,*t, *Uv") |
91 (match_operand:SI 1 "general_operand" "rk, I,K,j,mi,rk,r,*t,*t,*Uvi,*t"))] | 93 (match_operand:SI 1 "general_operand" "rk, I,K,j,mi,*mi,l,*hk, r,*t,*t,*Uvi,*t"))] |
92 "TARGET_THUMB2 && TARGET_VFP && TARGET_HARD_FLOAT | 94 "TARGET_THUMB2 && TARGET_VFP && TARGET_HARD_FLOAT |
93 && ( s_register_operand (operands[0], SImode) | 95 && ( s_register_operand (operands[0], SImode) |
94 || s_register_operand (operands[1], SImode))" | 96 || s_register_operand (operands[1], SImode))" |
95 "* | 97 "* |
96 switch (which_alternative) | 98 switch (which_alternative) |
100 case 2: | 102 case 2: |
101 return \"mvn%?\\t%0, #%B1\"; | 103 return \"mvn%?\\t%0, #%B1\"; |
102 case 3: | 104 case 3: |
103 return \"movw%?\\t%0, %1\"; | 105 return \"movw%?\\t%0, %1\"; |
104 case 4: | 106 case 4: |
107 case 5: | |
105 return \"ldr%?\\t%0, %1\"; | 108 return \"ldr%?\\t%0, %1\"; |
106 case 5: | 109 case 6: |
110 case 7: | |
107 return \"str%?\\t%1, %0\"; | 111 return \"str%?\\t%1, %0\"; |
108 case 6: | 112 case 8: |
109 return \"fmsr%?\\t%0, %1\\t%@ int\"; | 113 return \"fmsr%?\\t%0, %1\\t%@ int\"; |
110 case 7: | 114 case 9: |
111 return \"fmrs%?\\t%0, %1\\t%@ int\"; | 115 return \"fmrs%?\\t%0, %1\\t%@ int\"; |
112 case 8: | 116 case 10: |
113 return \"fcpys%?\\t%0, %1\\t%@ int\"; | 117 return \"fcpys%?\\t%0, %1\\t%@ int\"; |
114 case 9: case 10: | 118 case 11: case 12: |
115 return output_move_vfp (operands); | 119 return output_move_vfp (operands); |
116 default: | 120 default: |
117 gcc_unreachable (); | 121 gcc_unreachable (); |
118 } | 122 } |
119 " | 123 " |
120 [(set_attr "predicable" "yes") | 124 [(set_attr "predicable" "yes") |
121 (set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_load,f_store") | 125 (set_attr "type" "*,*,*,*,load1,load1,store1,store1,r_2_f,f_2_r,fcpys,f_load,f_store") |
122 (set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*") | 126 (set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,*,1020,*") |
123 (set_attr "neg_pool_range" "*,*,*,*, 0,*,*,*,*,1008,*")] | 127 (set_attr "neg_pool_range" "*,*,*,*, 0, 0,*,*,*,*,*,1008,*")] |
124 ) | 128 ) |
125 | 129 |
126 | 130 |
127 ;; DImode moves | 131 ;; DImode moves |
128 | 132 |