Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/s390/2084.md @ 55:77e2b8dfacca gcc-4.4.5
update it from 4.4.3 to 4.5.0
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 Feb 2010 23:39:51 +0900 |
parents | 855418dad1a3 |
children | f6334be47118 |
comparison
equal
deleted
inserted
replaced
52:c156f1bd5cd9 | 55:77e2b8dfacca |
---|---|
74 "x-e1-st,x-wr-st") | 74 "x-e1-st,x-wr-st") |
75 | 75 |
76 (define_insn_reservation "x_lr" 1 | 76 (define_insn_reservation "x_lr" 1 |
77 (and (eq_attr "cpu" "z990,z9_109") | 77 (and (eq_attr "cpu" "z990,z9_109") |
78 (eq_attr "type" "lr")) | 78 (eq_attr "type" "lr")) |
79 "x-e1-st,x-wr-st") | 79 "x-e1-st,x-wr-st") |
80 | 80 |
81 (define_insn_reservation "x_la" 1 | 81 (define_insn_reservation "x_la" 1 |
82 (and (eq_attr "cpu" "z990,z9_109") | 82 (and (eq_attr "cpu" "z990,z9_109") |
83 (eq_attr "type" "la")) | 83 (eq_attr "type" "la")) |
84 "x-e1-st,x-wr-st") | 84 "x-e1-st,x-wr-st") |
85 | 85 |
86 (define_insn_reservation "x_larl" 1 | 86 (define_insn_reservation "x_larl" 1 |
87 (and (eq_attr "cpu" "z990,z9_109") | 87 (and (eq_attr "cpu" "z990,z9_109") |
88 (eq_attr "type" "larl")) | 88 (eq_attr "type" "larl")) |
89 "x-e1-st,x-wr-st") | 89 "x-e1-st,x-wr-st") |
90 | 90 |
91 (define_insn_reservation "x_load" 1 | 91 (define_insn_reservation "x_load" 1 |
92 (and (eq_attr "cpu" "z990,z9_109") | 92 (and (eq_attr "cpu" "z990,z9_109") |
93 (eq_attr "type" "load")) | 93 (eq_attr "type" "load")) |
94 "x-e1-st+x-mem,x-wr-st") | 94 "x-e1-st+x-mem,x-wr-st") |
95 | 95 |
96 (define_insn_reservation "x_store" 1 | 96 (define_insn_reservation "x_store" 1 |
97 (and (eq_attr "cpu" "z990,z9_109") | 97 (and (eq_attr "cpu" "z990,z9_109") |
98 (eq_attr "type" "store")) | 98 (eq_attr "type" "store")) |
99 "x-e1-st+x_store_tok,x-wr-st") | 99 "x-e1-st+x_store_tok,x-wr-st") |
100 | 100 |
101 (define_insn_reservation "x_branch" 1 | 101 (define_insn_reservation "x_branch" 1 |
102 (and (eq_attr "cpu" "z990,z9_109") | 102 (and (eq_attr "cpu" "z990,z9_109") |
103 (eq_attr "type" "branch")) | 103 (eq_attr "type" "branch")) |
104 "x_e1_r,x_wr_r") | 104 "x_e1_r,x_wr_r") |
105 | 105 |
106 (define_insn_reservation "x_call" 5 | 106 (define_insn_reservation "x_call" 5 |
107 (and (eq_attr "cpu" "z990,z9_109") | 107 (and (eq_attr "cpu" "z990,z9_109") |
108 (eq_attr "type" "jsr")) | 108 (eq_attr "type" "jsr")) |
109 "x-e1-np*5,x-wr-np") | 109 "x-e1-np*5,x-wr-np") |
110 | 110 |
111 (define_insn_reservation "x_mul_hi" 2 | 111 (define_insn_reservation "x_mul_hi" 2 |
112 (and (eq_attr "cpu" "z990,z9_109") | 112 (and (eq_attr "cpu" "z990,z9_109") |
113 (eq_attr "type" "imulhi")) | 113 (eq_attr "type" "imulhi")) |
114 "x-e1-np*2,x-wr-np") | 114 "x-e1-np*2,x-wr-np") |
115 | 115 |
121 (define_insn_reservation "x_div" 10 | 121 (define_insn_reservation "x_div" 10 |
122 (and (eq_attr "cpu" "z990,z9_109") | 122 (and (eq_attr "cpu" "z990,z9_109") |
123 (eq_attr "type" "idiv")) | 123 (eq_attr "type" "idiv")) |
124 "x-e1-np*10,x-wr-np") | 124 "x-e1-np*10,x-wr-np") |
125 | 125 |
126 (define_insn_reservation "x_sem" 17 | 126 (define_insn_reservation "x_sem" 17 |
127 (and (eq_attr "cpu" "z990,z9_109") | 127 (and (eq_attr "cpu" "z990,z9_109") |
128 (eq_attr "type" "sem")) | 128 (eq_attr "type" "sem")) |
129 "x-e1-np+x-mem,x-e1-np*16,x-wr-st") | 129 "x-e1-np+x-mem,x-e1-np*16,x-wr-st") |
130 | 130 |
131 ;; | 131 ;; |
132 ;; Multicycle insns | 132 ;; Multicycle insns |
133 ;; | 133 ;; |
134 | 134 |
135 (define_insn_reservation "x_cs" 1 | 135 (define_insn_reservation "x_cs" 1 |
136 (and (eq_attr "cpu" "z990,z9_109") | 136 (and (eq_attr "cpu" "z990,z9_109") |
137 (eq_attr "type" "cs")) | 137 (eq_attr "type" "cs")) |
138 "x-e1-np,x-wr-np") | 138 "x-e1-np,x-wr-np") |
139 | 139 |
140 (define_insn_reservation "x_vs" 1 | 140 (define_insn_reservation "x_vs" 1 |
141 (and (eq_attr "cpu" "z990,z9_109") | 141 (and (eq_attr "cpu" "z990,z9_109") |
142 (eq_attr "type" "vs")) | 142 (eq_attr "type" "vs")) |
143 "x-e1-np*10,x-wr-np") | 143 "x-e1-np*10,x-wr-np") |
144 | 144 |
145 (define_insn_reservation "x_stm" 1 | 145 (define_insn_reservation "x_stm" 1 |
146 (and (eq_attr "cpu" "z990,z9_109") | 146 (and (eq_attr "cpu" "z990,z9_109") |
147 (eq_attr "type" "stm")) | 147 (eq_attr "type" "stm")) |
148 "(x-e1-np+x_store_tok)*10,x-wr-np") | 148 "(x-e1-np+x_store_tok)*10,x-wr-np") |
149 | 149 |
150 (define_insn_reservation "x_lm" 1 | 150 (define_insn_reservation "x_lm" 1 |
151 (and (eq_attr "cpu" "z990,z9_109") | 151 (and (eq_attr "cpu" "z990,z9_109") |
152 (eq_attr "type" "lm")) | 152 (eq_attr "type" "lm")) |
153 "x-e1-np*10,x-wr-np") | 153 "x-e1-np*10,x-wr-np") |
154 | 154 |
155 (define_insn_reservation "x_other" 1 | 155 (define_insn_reservation "x_other" 1 |
156 (and (eq_attr "cpu" "z990,z9_109") | 156 (and (eq_attr "cpu" "z990,z9_109") |
157 (eq_attr "type" "other")) | 157 (eq_attr "type" "other")) |
158 "x-e1-np,x-wr-np") | 158 "x-e1-np,x-wr-np") |
159 | 159 |
160 ;; | 160 ;; |
161 ;; Floating point insns | 161 ;; Floating point insns |
162 ;; | 162 ;; |
163 | 163 |
164 (define_insn_reservation "x_fsimptf" 7 | 164 (define_insn_reservation "x_fsimptf" 7 |
165 (and (eq_attr "cpu" "z990,z9_109") | 165 (and (eq_attr "cpu" "z990,z9_109") |
166 (eq_attr "type" "fsimptf,fhex")) | 166 (eq_attr "type" "fsimptf,fhex")) |
167 "x_e1_t*2,x-wr-fp") | 167 "x_e1_t*2,x-wr-fp") |
168 | 168 |
169 (define_insn_reservation "x_fsimpdf" 6 | 169 (define_insn_reservation "x_fsimpdf" 6 |
170 (and (eq_attr "cpu" "z990,z9_109") | 170 (and (eq_attr "cpu" "z990,z9_109") |
171 (eq_attr "type" "fsimpdf,fmuldf,fhex")) | 171 (eq_attr "type" "fsimpdf,fmuldf,fhex")) |
172 "x_e1_t,x-wr-fp") | 172 "x_e1_t,x-wr-fp") |
173 | 173 |
174 (define_insn_reservation "x_fsimpsf" 6 | 174 (define_insn_reservation "x_fsimpsf" 6 |
175 (and (eq_attr "cpu" "z990,z9_109") | 175 (and (eq_attr "cpu" "z990,z9_109") |
176 (eq_attr "type" "fsimpsf,fmulsf,fhex")) | 176 (eq_attr "type" "fsimpsf,fmulsf,fhex")) |
177 "x_e1_t,x-wr-fp") | 177 "x_e1_t,x-wr-fp") |
178 | 178 |
179 | 179 |
180 (define_insn_reservation "x_fmultf" 33 | 180 (define_insn_reservation "x_fmultf" 33 |
181 (and (eq_attr "cpu" "z990,z9_109") | 181 (and (eq_attr "cpu" "z990,z9_109") |
182 (eq_attr "type" "fmultf")) | 182 (eq_attr "type" "fmultf")) |
183 "x_e1_t*27,x-wr-fp") | 183 "x_e1_t*27,x-wr-fp") |
184 | 184 |
185 | 185 |
186 (define_insn_reservation "x_fdivtf" 82 | 186 (define_insn_reservation "x_fdivtf" 82 |
187 (and (eq_attr "cpu" "z990,z9_109") | 187 (and (eq_attr "cpu" "z990,z9_109") |
188 (eq_attr "type" "fdivtf,fsqrttf")) | 188 (eq_attr "type" "fdivtf,fsqrttf")) |
189 "x_e1_t*76,x-wr-fp") | 189 "x_e1_t*76,x-wr-fp") |
190 | 190 |
191 (define_insn_reservation "x_fdivdf" 36 | 191 (define_insn_reservation "x_fdivdf" 36 |
192 (and (eq_attr "cpu" "z990,z9_109") | 192 (and (eq_attr "cpu" "z990,z9_109") |
193 (eq_attr "type" "fdivdf,fsqrtdf")) | 193 (eq_attr "type" "fdivdf,fsqrtdf")) |
194 "x_e1_t*30,x-wr-fp") | 194 "x_e1_t*30,x-wr-fp") |
195 | 195 |
196 (define_insn_reservation "x_fdivsf" 36 | 196 (define_insn_reservation "x_fdivsf" 36 |
197 (and (eq_attr "cpu" "z990,z9_109") | 197 (and (eq_attr "cpu" "z990,z9_109") |
198 (eq_attr "type" "fdivsf,fsqrtsf")) | 198 (eq_attr "type" "fdivsf,fsqrtsf")) |
199 "x_e1_t*30,x-wr-fp") | 199 "x_e1_t*30,x-wr-fp") |
200 | 200 |
201 | 201 |
202 (define_insn_reservation "x_floadtf" 6 | 202 (define_insn_reservation "x_floadtf" 6 |
203 (and (eq_attr "cpu" "z990,z9_109") | 203 (and (eq_attr "cpu" "z990,z9_109") |
204 (eq_attr "type" "floadtf")) | 204 (eq_attr "type" "floadtf")) |
205 "x_e1_t,x-wr-fp") | 205 "x_e1_t,x-wr-fp") |
206 | 206 |
207 (define_insn_reservation "x_floaddf" 6 | 207 (define_insn_reservation "x_floaddf" 6 |
208 (and (eq_attr "cpu" "z990,z9_109") | 208 (and (eq_attr "cpu" "z990,z9_109") |
209 (eq_attr "type" "floaddf")) | 209 (eq_attr "type" "floaddf")) |
210 "x_e1_t,x-wr-fp") | 210 "x_e1_t,x-wr-fp") |
211 | 211 |
212 (define_insn_reservation "x_floadsf" 6 | 212 (define_insn_reservation "x_floadsf" 6 |
213 (and (eq_attr "cpu" "z990,z9_109") | 213 (and (eq_attr "cpu" "z990,z9_109") |
214 (eq_attr "type" "floadsf")) | 214 (eq_attr "type" "floadsf")) |
215 "x_e1_t,x-wr-fp") | 215 "x_e1_t,x-wr-fp") |
216 | 216 |
217 | 217 |
218 (define_insn_reservation "x_fstoredf" 1 | 218 (define_insn_reservation "x_fstoredf" 1 |
219 (and (eq_attr "cpu" "z990,z9_109") | 219 (and (eq_attr "cpu" "z990,z9_109") |
220 (eq_attr "type" "fstoredf")) | 220 (eq_attr "type" "fstoredf")) |
221 "x_e1_t,x-wr-fp") | 221 "x_e1_t,x-wr-fp") |
222 | 222 |
223 (define_insn_reservation "x_fstoresf" 1 | 223 (define_insn_reservation "x_fstoresf" 1 |
224 (and (eq_attr "cpu" "z990,z9_109") | 224 (and (eq_attr "cpu" "z990,z9_109") |
225 (eq_attr "type" "fstoresf")) | 225 (eq_attr "type" "fstoresf")) |
226 "x_e1_t,x-wr-fp") | 226 "x_e1_t,x-wr-fp") |
227 | 227 |
228 | 228 |
229 (define_insn_reservation "x_ftrunctf" 16 | 229 (define_insn_reservation "x_ftrunctf" 16 |
230 (and (eq_attr "cpu" "z990,z9_109") | 230 (and (eq_attr "cpu" "z990,z9_109") |
231 (eq_attr "type" "ftrunctf")) | 231 (eq_attr "type" "ftrunctf")) |
232 "x_e1_t*10,x-wr-fp") | 232 "x_e1_t*10,x-wr-fp") |
233 | 233 |
234 (define_insn_reservation "x_ftruncdf" 11 | 234 (define_insn_reservation "x_ftruncdf" 11 |
235 (and (eq_attr "cpu" "z990,z9_109") | 235 (and (eq_attr "cpu" "z990,z9_109") |
236 (eq_attr "type" "ftruncdf")) | 236 (eq_attr "type" "ftruncdf")) |
237 "x_e1_t*5,x-wr-fp") | 237 "x_e1_t*5,x-wr-fp") |
238 | 238 |
239 | 239 |
240 (define_insn_reservation "x_ftoi" 1 | 240 (define_insn_reservation "x_ftoi" 1 |
241 (and (eq_attr "cpu" "z990,z9_109") | 241 (and (eq_attr "cpu" "z990,z9_109") |
242 (eq_attr "type" "ftoi")) | 242 (eq_attr "type" "ftoi")) |
243 "x_e1_t*3,x-wr-fp") | 243 "x_e1_t*3,x-wr-fp") |
244 | 244 |
245 (define_insn_reservation "x_itof" 7 | 245 (define_insn_reservation "x_itof" 7 |
246 (and (eq_attr "cpu" "z990,z9_109") | 246 (and (eq_attr "cpu" "z990,z9_109") |
247 (eq_attr "type" "itoftf,itofdf,itofsf")) | 247 (eq_attr "type" "itoftf,itofdf,itofsf")) |
248 "x_e1_t*3,x-wr-fp") | 248 "x_e1_t*3,x-wr-fp") |
249 | 249 |
250 (define_bypass 1 "x_fsimpdf" "x_fstoredf") | 250 (define_bypass 1 "x_fsimpdf" "x_fstoredf") |
251 | 251 |
252 (define_bypass 1 "x_fsimpsf" "x_fstoresf") | 252 (define_bypass 1 "x_fsimpsf" "x_fstoresf") |
253 | 253 |
254 (define_bypass 1 "x_floaddf" "x_fsimpdf,x_fstoredf,x_floaddf") | 254 (define_bypass 1 "x_floaddf" "x_fsimpdf,x_fstoredf,x_floaddf") |
255 | 255 |
256 (define_bypass 1 "x_floadsf" "x_fsimpsf,x_fstoresf,x_floadsf") | 256 (define_bypass 1 "x_floadsf" "x_fsimpsf,x_fstoresf,x_floadsf") |
257 | 257 |
258 ;; | 258 ;; |
259 ;; s390_agen_dep_p returns 1, if a register is set in the | 259 ;; s390_agen_dep_p returns 1, if a register is set in the |
260 ;; first insn and used in the dependent insn to form a address. | 260 ;; first insn and used in the dependent insn to form a address. |
261 ;; | 261 ;; |
262 | 262 |
263 ;; | 263 ;; |
264 ;; If an instruction uses a register to address memory, it needs | 264 ;; If an instruction uses a register to address memory, it needs |
265 ;; to be set 5 cycles in advance. | 265 ;; to be set 5 cycles in advance. |
266 ;; | 266 ;; |
267 | 267 |
268 (define_bypass 5 "x_int,x_agen,x_lr" | 268 (define_bypass 5 "x_int,x_agen,x_lr" |
269 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other" | 269 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other" |
270 "s390_agen_dep_p") | 270 "s390_agen_dep_p") |
271 | 271 |
272 (define_bypass 9 "x_int,x_agen,x_lr" | 272 (define_bypass 9 "x_int,x_agen,x_lr" |
273 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\ | 273 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\ |
274 x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf" | 274 x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf" |
275 "s390_agen_dep_p") | 275 "s390_agen_dep_p") |
276 ;; | 276 ;; |
277 ;; A load type instruction uses a bypass to feed the result back | 277 ;; A load type instruction uses a bypass to feed the result back |
278 ;; to the address generation pipeline stage. | 278 ;; to the address generation pipeline stage. |
279 ;; | 279 ;; |
280 | 280 |
281 (define_bypass 4 "x_load" | 281 (define_bypass 4 "x_load" |
282 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other" | 282 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other" |
283 "s390_agen_dep_p") | 283 "s390_agen_dep_p") |
284 | 284 |
285 (define_bypass 5 "x_load" | 285 (define_bypass 5 "x_load" |
286 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\ | 286 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\ |
287 x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf" | 287 x_fsimpdf, x_fsimpsf, x_fdivdf, x_fdivsf" |
288 "s390_agen_dep_p") | 288 "s390_agen_dep_p") |
289 | 289 |
290 ;; | 290 ;; |
291 ;; A load address type instruction uses a bypass to feed the | 291 ;; A load address type instruction uses a bypass to feed the |
292 ;; result back to the address generation pipeline stage. | 292 ;; result back to the address generation pipeline stage. |
293 ;; | 293 ;; |
294 | 294 |
295 (define_bypass 3 "x_larl,x_la" | 295 (define_bypass 3 "x_larl,x_la" |
296 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other" | 296 "x_agen,x_la,x_branch,x_call,x_load,x_store,x_cs,x_stm,x_lm,x_other" |
297 "s390_agen_dep_p") | 297 "s390_agen_dep_p") |
298 | 298 |
299 (define_bypass 5 "x_larl, x_la" | 299 (define_bypass 5 "x_larl, x_la" |
300 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\ | 300 "x_floadtf, x_floaddf, x_floadsf, x_fstoredf, x_fstoresf,\ |