Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/i386/athlon.md @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | 77e2b8dfacca |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, | 1 ;; Copyright (C) 2002-2017 Free Software Foundation, Inc. |
2 ;; 2007 Free Software Foundation, Inc. | |
3 ;; | 2 ;; |
4 ;; This file is part of GCC. | 3 ;; This file is part of GCC. |
5 ;; | 4 ;; |
6 ;; GCC is free software; you can redistribute it and/or modify | 5 ;; GCC is free software; you can redistribute it and/or modify |
7 ;; it under the terms of the GNU General Public License as published by | 6 ;; it under the terms of the GNU General Public License as published by |
38 | 37 |
39 (define_attr "athlon_decode" "direct,vector,double" | 38 (define_attr "athlon_decode" "direct,vector,double" |
40 (cond [(eq_attr "type" "call,imul,idiv,other,multi,fcmov,fpspc,str,pop,leave") | 39 (cond [(eq_attr "type" "call,imul,idiv,other,multi,fcmov,fpspc,str,pop,leave") |
41 (const_string "vector") | 40 (const_string "vector") |
42 (and (eq_attr "type" "push") | 41 (and (eq_attr "type" "push") |
43 (match_operand 1 "memory_operand" "")) | 42 (match_operand 1 "memory_operand")) |
44 (const_string "vector") | 43 (const_string "vector") |
45 (and (eq_attr "type" "fmov") | 44 (and (eq_attr "type" "fmov") |
46 (and (eq_attr "memory" "load,store") | 45 (and (eq_attr "memory" "load,store") |
47 (eq_attr "mode" "XF"))) | 46 (eq_attr "mode" "XF"))) |
48 (const_string "vector")] | 47 (const_string "vector")] |
150 (define_reservation "athlon-fvector" "(athlon-fadd + athlon-fmul + athlon-fstore)") | 149 (define_reservation "athlon-fvector" "(athlon-fadd + athlon-fmul + athlon-fstore)") |
151 | 150 |
152 | 151 |
153 ;; Jump instructions are executed in the branch unit completely transparent to us | 152 ;; Jump instructions are executed in the branch unit completely transparent to us |
154 (define_insn_reservation "athlon_branch" 0 | 153 (define_insn_reservation "athlon_branch" 0 |
155 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 154 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
156 (eq_attr "type" "ibr")) | 155 (eq_attr "type" "ibr")) |
157 "athlon-direct,athlon-ieu") | 156 "athlon-direct,athlon-ieu") |
158 (define_insn_reservation "athlon_call" 0 | 157 (define_insn_reservation "athlon_call" 0 |
159 (and (eq_attr "cpu" "athlon,k8,generic64") | 158 (and (eq_attr "cpu" "athlon,k8,generic") |
160 (eq_attr "type" "call,callv")) | 159 (eq_attr "type" "call,callv")) |
161 "athlon-vector,athlon-ieu") | 160 "athlon-vector,athlon-ieu") |
162 (define_insn_reservation "athlon_call_amdfam10" 0 | 161 (define_insn_reservation "athlon_call_amdfam10" 0 |
163 (and (eq_attr "cpu" "amdfam10") | 162 (and (eq_attr "cpu" "amdfam10") |
164 (eq_attr "type" "call,callv")) | 163 (eq_attr "type" "call,callv")) |
165 "athlon-double,athlon-ieu") | 164 "athlon-double,athlon-ieu") |
166 | 165 |
167 ;; Latency of push operation is 3 cycles, but ESP value is available | 166 ;; Latency of push operation is 3 cycles, but ESP value is available |
168 ;; earlier | 167 ;; earlier |
169 (define_insn_reservation "athlon_push" 2 | 168 (define_insn_reservation "athlon_push" 2 |
170 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 169 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
171 (eq_attr "type" "push")) | 170 (eq_attr "type" "push")) |
172 "athlon-direct,athlon-agu,athlon-store") | 171 "athlon-direct,athlon-agu,athlon-store") |
173 (define_insn_reservation "athlon_pop" 4 | 172 (define_insn_reservation "athlon_pop" 4 |
174 (and (eq_attr "cpu" "athlon,k8,generic64") | 173 (and (eq_attr "cpu" "athlon,k8,generic") |
175 (eq_attr "type" "pop")) | 174 (eq_attr "type" "pop")) |
176 "athlon-vector,athlon-load,athlon-ieu") | 175 "athlon-vector,athlon-load,athlon-ieu") |
177 (define_insn_reservation "athlon_pop_k8" 3 | 176 (define_insn_reservation "athlon_pop_k8" 3 |
178 (and (eq_attr "cpu" "k8,generic64") | 177 (and (eq_attr "cpu" "k8,generic") |
179 (eq_attr "type" "pop")) | 178 (eq_attr "type" "pop")) |
180 "athlon-double,(athlon-ieu+athlon-load)") | 179 "athlon-double,(athlon-ieu+athlon-load)") |
181 (define_insn_reservation "athlon_pop_amdfam10" 3 | 180 (define_insn_reservation "athlon_pop_amdfam10" 3 |
182 (and (eq_attr "cpu" "amdfam10") | 181 (and (eq_attr "cpu" "amdfam10") |
183 (eq_attr "type" "pop")) | 182 (eq_attr "type" "pop")) |
185 (define_insn_reservation "athlon_leave" 3 | 184 (define_insn_reservation "athlon_leave" 3 |
186 (and (eq_attr "cpu" "athlon") | 185 (and (eq_attr "cpu" "athlon") |
187 (eq_attr "type" "leave")) | 186 (eq_attr "type" "leave")) |
188 "athlon-vector,(athlon-ieu+athlon-load)") | 187 "athlon-vector,(athlon-ieu+athlon-load)") |
189 (define_insn_reservation "athlon_leave_k8" 3 | 188 (define_insn_reservation "athlon_leave_k8" 3 |
190 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 189 (and (eq_attr "cpu" "k8,generic,amdfam10") |
191 (eq_attr "type" "leave")) | 190 (eq_attr "type" "leave")) |
192 "athlon-double,(athlon-ieu+athlon-load)") | 191 "athlon-double,(athlon-ieu+athlon-load)") |
193 | 192 |
194 ;; Lea executes in AGU unit with 2 cycles latency. | 193 ;; Lea executes in AGU unit with 2 cycles latency. |
195 (define_insn_reservation "athlon_lea" 2 | 194 (define_insn_reservation "athlon_lea" 2 |
196 (and (eq_attr "cpu" "athlon,k8,generic64") | 195 (and (eq_attr "cpu" "athlon,k8,generic") |
197 (eq_attr "type" "lea")) | 196 (eq_attr "type" "lea")) |
198 "athlon-direct,athlon-agu,nothing") | 197 "athlon-direct,athlon-agu,nothing") |
199 ;; Lea executes in AGU unit with 1 cycle latency on AMDFAM10 | 198 ;; Lea executes in AGU unit with 1 cycle latency on AMDFAM10 |
200 (define_insn_reservation "athlon_lea_amdfam10" 1 | 199 (define_insn_reservation "athlon_lea_amdfam10" 1 |
201 (and (eq_attr "cpu" "amdfam10") | 200 (and (eq_attr "cpu" "amdfam10") |
208 (and (eq_attr "type" "imul") | 207 (and (eq_attr "type" "imul") |
209 (eq_attr "memory" "none,unknown"))) | 208 (eq_attr "memory" "none,unknown"))) |
210 "athlon-vector,athlon-ieu0,athlon-mult,nothing,nothing,athlon-ieu0") | 209 "athlon-vector,athlon-ieu0,athlon-mult,nothing,nothing,athlon-ieu0") |
211 ;; ??? Widening multiply is vector or double. | 210 ;; ??? Widening multiply is vector or double. |
212 (define_insn_reservation "athlon_imul_k8_DI" 4 | 211 (define_insn_reservation "athlon_imul_k8_DI" 4 |
213 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 212 (and (eq_attr "cpu" "k8,generic,amdfam10") |
214 (and (eq_attr "type" "imul") | 213 (and (eq_attr "type" "imul") |
215 (and (eq_attr "mode" "DI") | 214 (and (eq_attr "mode" "DI") |
216 (eq_attr "memory" "none,unknown")))) | 215 (eq_attr "memory" "none,unknown")))) |
217 "athlon-direct0,athlon-ieu0,athlon-mult,nothing,athlon-ieu0") | 216 "athlon-direct0,athlon-ieu0,athlon-mult,nothing,athlon-ieu0") |
218 (define_insn_reservation "athlon_imul_k8" 3 | 217 (define_insn_reservation "athlon_imul_k8" 3 |
219 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 218 (and (eq_attr "cpu" "k8,generic,amdfam10") |
220 (and (eq_attr "type" "imul") | 219 (and (eq_attr "type" "imul") |
221 (eq_attr "memory" "none,unknown"))) | 220 (eq_attr "memory" "none,unknown"))) |
222 "athlon-direct0,athlon-ieu0,athlon-mult,athlon-ieu0") | 221 "athlon-direct0,athlon-ieu0,athlon-mult,athlon-ieu0") |
223 (define_insn_reservation "athlon_imul_amdfam10_HI" 4 | 222 (define_insn_reservation "athlon_imul_amdfam10_HI" 4 |
224 (and (eq_attr "cpu" "amdfam10") | 223 (and (eq_attr "cpu" "amdfam10") |
230 (and (eq_attr "cpu" "athlon") | 229 (and (eq_attr "cpu" "athlon") |
231 (and (eq_attr "type" "imul") | 230 (and (eq_attr "type" "imul") |
232 (eq_attr "memory" "load,both"))) | 231 (eq_attr "memory" "load,both"))) |
233 "athlon-vector,athlon-load,athlon-ieu,athlon-mult,nothing,nothing,athlon-ieu") | 232 "athlon-vector,athlon-load,athlon-ieu,athlon-mult,nothing,nothing,athlon-ieu") |
234 (define_insn_reservation "athlon_imul_mem_k8_DI" 7 | 233 (define_insn_reservation "athlon_imul_mem_k8_DI" 7 |
235 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 234 (and (eq_attr "cpu" "k8,generic,amdfam10") |
236 (and (eq_attr "type" "imul") | 235 (and (eq_attr "type" "imul") |
237 (and (eq_attr "mode" "DI") | 236 (and (eq_attr "mode" "DI") |
238 (eq_attr "memory" "load,both")))) | 237 (eq_attr "memory" "load,both")))) |
239 "athlon-vector,athlon-load,athlon-ieu,athlon-mult,nothing,athlon-ieu") | 238 "athlon-vector,athlon-load,athlon-ieu,athlon-mult,nothing,athlon-ieu") |
240 (define_insn_reservation "athlon_imul_mem_k8" 6 | 239 (define_insn_reservation "athlon_imul_mem_k8" 6 |
241 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 240 (and (eq_attr "cpu" "k8,generic,amdfam10") |
242 (and (eq_attr "type" "imul") | 241 (and (eq_attr "type" "imul") |
243 (eq_attr "memory" "load,both"))) | 242 (eq_attr "memory" "load,both"))) |
244 "athlon-vector,athlon-load,athlon-ieu,athlon-mult,athlon-ieu") | 243 "athlon-vector,athlon-load,athlon-ieu,athlon-mult,athlon-ieu") |
245 | 244 |
246 ;; Idiv cannot execute in parallel with other instructions. Dealing with it | 245 ;; Idiv cannot execute in parallel with other instructions. Dealing with it |
250 ;; ??? Experiments show that the idiv can overlap with roughly 6 cycles | 249 ;; ??? Experiments show that the idiv can overlap with roughly 6 cycles |
251 ;; of the other code | 250 ;; of the other code |
252 ;; Using the same heuristics for amdfam10 as K8 with idiv | 251 ;; Using the same heuristics for amdfam10 as K8 with idiv |
253 | 252 |
254 (define_insn_reservation "athlon_idiv" 6 | 253 (define_insn_reservation "athlon_idiv" 6 |
255 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 254 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
256 (and (eq_attr "type" "idiv") | 255 (and (eq_attr "type" "idiv") |
257 (eq_attr "memory" "none,unknown"))) | 256 (eq_attr "memory" "none,unknown"))) |
258 "athlon-vector,(athlon-ieu0*6+(athlon-fpsched,athlon-fvector))") | 257 "athlon-vector,(athlon-ieu0*6+(athlon-fpsched,athlon-fvector))") |
259 (define_insn_reservation "athlon_idiv_mem" 9 | 258 (define_insn_reservation "athlon_idiv_mem" 9 |
260 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 259 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
261 (and (eq_attr "type" "idiv") | 260 (and (eq_attr "type" "idiv") |
262 (eq_attr "memory" "load,both"))) | 261 (eq_attr "memory" "load,both"))) |
263 "athlon-vector,((athlon-load,athlon-ieu0*6)+(athlon-fpsched,athlon-fvector))") | 262 "athlon-vector,((athlon-load,athlon-ieu0*6)+(athlon-fpsched,athlon-fvector))") |
264 ;; The parallelism of string instructions is not documented. Model it same way | 263 ;; The parallelism of string instructions is not documented. Model it same way |
265 ;; as idiv to create smaller automata. This probably does not matter much. | 264 ;; as idiv to create smaller automata. This probably does not matter much. |
266 ;; Using the same heuristics for amdfam10 as K8 with idiv | 265 ;; Using the same heuristics for amdfam10 as K8 with idiv |
267 (define_insn_reservation "athlon_str" 6 | 266 (define_insn_reservation "athlon_str" 6 |
268 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 267 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
269 (and (eq_attr "type" "str") | 268 (and (eq_attr "type" "str") |
270 (eq_attr "memory" "load,both,store"))) | 269 (eq_attr "memory" "load,both,store"))) |
271 "athlon-vector,athlon-load,athlon-ieu0*6") | 270 "athlon-vector,athlon-load,athlon-ieu0*6") |
272 | 271 |
273 (define_insn_reservation "athlon_idirect" 1 | 272 (define_insn_reservation "athlon_idirect" 1 |
274 (and (eq_attr "cpu" "athlon,k8,generic64") | 273 (and (eq_attr "cpu" "athlon,k8,generic") |
275 (and (eq_attr "athlon_decode" "direct") | 274 (and (eq_attr "athlon_decode" "direct") |
276 (and (eq_attr "unit" "integer,unknown") | 275 (and (eq_attr "unit" "integer,unknown") |
277 (eq_attr "memory" "none,unknown")))) | 276 (eq_attr "memory" "none,unknown")))) |
278 "athlon-direct,athlon-ieu") | 277 "athlon-direct,athlon-ieu") |
279 (define_insn_reservation "athlon_idirect_amdfam10" 1 | 278 (define_insn_reservation "athlon_idirect_amdfam10" 1 |
281 (and (eq_attr "amdfam10_decode" "direct") | 280 (and (eq_attr "amdfam10_decode" "direct") |
282 (and (eq_attr "unit" "integer,unknown") | 281 (and (eq_attr "unit" "integer,unknown") |
283 (eq_attr "memory" "none,unknown")))) | 282 (eq_attr "memory" "none,unknown")))) |
284 "athlon-direct,athlon-ieu") | 283 "athlon-direct,athlon-ieu") |
285 (define_insn_reservation "athlon_ivector" 2 | 284 (define_insn_reservation "athlon_ivector" 2 |
286 (and (eq_attr "cpu" "athlon,k8,generic64") | 285 (and (eq_attr "cpu" "athlon,k8,generic") |
287 (and (eq_attr "athlon_decode" "vector") | 286 (and (eq_attr "athlon_decode" "vector") |
288 (and (eq_attr "unit" "integer,unknown") | 287 (and (eq_attr "unit" "integer,unknown") |
289 (eq_attr "memory" "none,unknown")))) | 288 (eq_attr "memory" "none,unknown")))) |
290 "athlon-vector,athlon-ieu,athlon-ieu") | 289 "athlon-vector,athlon-ieu,athlon-ieu") |
291 (define_insn_reservation "athlon_ivector_amdfam10" 2 | 290 (define_insn_reservation "athlon_ivector_amdfam10" 2 |
294 (and (eq_attr "unit" "integer,unknown") | 293 (and (eq_attr "unit" "integer,unknown") |
295 (eq_attr "memory" "none,unknown")))) | 294 (eq_attr "memory" "none,unknown")))) |
296 "athlon-vector,athlon-ieu,athlon-ieu") | 295 "athlon-vector,athlon-ieu,athlon-ieu") |
297 | 296 |
298 (define_insn_reservation "athlon_idirect_loadmov" 3 | 297 (define_insn_reservation "athlon_idirect_loadmov" 3 |
299 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 298 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
300 (and (eq_attr "type" "imov") | 299 (and (eq_attr "type" "imov") |
301 (eq_attr "memory" "load"))) | 300 (eq_attr "memory" "load"))) |
302 "athlon-direct,athlon-load") | 301 "athlon-direct,athlon-load") |
303 | 302 |
304 (define_insn_reservation "athlon_idirect_load" 4 | 303 (define_insn_reservation "athlon_idirect_load" 4 |
305 (and (eq_attr "cpu" "athlon,k8,generic64") | 304 (and (eq_attr "cpu" "athlon,k8,generic") |
306 (and (eq_attr "athlon_decode" "direct") | 305 (and (eq_attr "athlon_decode" "direct") |
307 (and (eq_attr "unit" "integer,unknown") | 306 (and (eq_attr "unit" "integer,unknown") |
308 (eq_attr "memory" "load")))) | 307 (eq_attr "memory" "load")))) |
309 "athlon-direct,athlon-load,athlon-ieu") | 308 "athlon-direct,athlon-load,athlon-ieu") |
310 (define_insn_reservation "athlon_idirect_load_amdfam10" 4 | 309 (define_insn_reservation "athlon_idirect_load_amdfam10" 4 |
312 (and (eq_attr "amdfam10_decode" "direct") | 311 (and (eq_attr "amdfam10_decode" "direct") |
313 (and (eq_attr "unit" "integer,unknown") | 312 (and (eq_attr "unit" "integer,unknown") |
314 (eq_attr "memory" "load")))) | 313 (eq_attr "memory" "load")))) |
315 "athlon-direct,athlon-load,athlon-ieu") | 314 "athlon-direct,athlon-load,athlon-ieu") |
316 (define_insn_reservation "athlon_ivector_load" 6 | 315 (define_insn_reservation "athlon_ivector_load" 6 |
317 (and (eq_attr "cpu" "athlon,k8,generic64") | 316 (and (eq_attr "cpu" "athlon,k8,generic") |
318 (and (eq_attr "athlon_decode" "vector") | 317 (and (eq_attr "athlon_decode" "vector") |
319 (and (eq_attr "unit" "integer,unknown") | 318 (and (eq_attr "unit" "integer,unknown") |
320 (eq_attr "memory" "load")))) | 319 (eq_attr "memory" "load")))) |
321 "athlon-vector,athlon-load,athlon-ieu,athlon-ieu") | 320 "athlon-vector,athlon-load,athlon-ieu,athlon-ieu") |
322 (define_insn_reservation "athlon_ivector_load_amdfam10" 6 | 321 (define_insn_reservation "athlon_ivector_load_amdfam10" 6 |
325 (and (eq_attr "unit" "integer,unknown") | 324 (and (eq_attr "unit" "integer,unknown") |
326 (eq_attr "memory" "load")))) | 325 (eq_attr "memory" "load")))) |
327 "athlon-vector,athlon-load,athlon-ieu,athlon-ieu") | 326 "athlon-vector,athlon-load,athlon-ieu,athlon-ieu") |
328 | 327 |
329 (define_insn_reservation "athlon_idirect_movstore" 1 | 328 (define_insn_reservation "athlon_idirect_movstore" 1 |
330 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 329 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
331 (and (eq_attr "type" "imov") | 330 (and (eq_attr "type" "imov") |
332 (eq_attr "memory" "store"))) | 331 (eq_attr "memory" "store"))) |
333 "athlon-direct,athlon-agu,athlon-store") | 332 "athlon-direct,athlon-agu,athlon-store") |
334 | 333 |
335 (define_insn_reservation "athlon_idirect_both" 4 | 334 (define_insn_reservation "athlon_idirect_both" 4 |
336 (and (eq_attr "cpu" "athlon,k8,generic64") | 335 (and (eq_attr "cpu" "athlon,k8,generic") |
337 (and (eq_attr "athlon_decode" "direct") | 336 (and (eq_attr "athlon_decode" "direct") |
338 (and (eq_attr "unit" "integer,unknown") | 337 (and (eq_attr "unit" "integer,unknown") |
339 (eq_attr "memory" "both")))) | 338 (eq_attr "memory" "both")))) |
340 "athlon-direct,athlon-load, | 339 "athlon-direct,athlon-load, |
341 athlon-ieu,athlon-store, | 340 athlon-ieu,athlon-store, |
348 "athlon-direct,athlon-load, | 347 "athlon-direct,athlon-load, |
349 athlon-ieu,athlon-store, | 348 athlon-ieu,athlon-store, |
350 athlon-store") | 349 athlon-store") |
351 | 350 |
352 (define_insn_reservation "athlon_ivector_both" 6 | 351 (define_insn_reservation "athlon_ivector_both" 6 |
353 (and (eq_attr "cpu" "athlon,k8,generic64") | 352 (and (eq_attr "cpu" "athlon,k8,generic") |
354 (and (eq_attr "athlon_decode" "vector") | 353 (and (eq_attr "athlon_decode" "vector") |
355 (and (eq_attr "unit" "integer,unknown") | 354 (and (eq_attr "unit" "integer,unknown") |
356 (eq_attr "memory" "both")))) | 355 (eq_attr "memory" "both")))) |
357 "athlon-vector,athlon-load, | 356 "athlon-vector,athlon-load, |
358 athlon-ieu, | 357 athlon-ieu, |
367 athlon-ieu, | 366 athlon-ieu, |
368 athlon-ieu, | 367 athlon-ieu, |
369 athlon-store") | 368 athlon-store") |
370 | 369 |
371 (define_insn_reservation "athlon_idirect_store" 1 | 370 (define_insn_reservation "athlon_idirect_store" 1 |
372 (and (eq_attr "cpu" "athlon,k8,generic64") | 371 (and (eq_attr "cpu" "athlon,k8,generic") |
373 (and (eq_attr "athlon_decode" "direct") | 372 (and (eq_attr "athlon_decode" "direct") |
374 (and (eq_attr "unit" "integer,unknown") | 373 (and (eq_attr "unit" "integer,unknown") |
375 (eq_attr "memory" "store")))) | 374 (eq_attr "memory" "store")))) |
376 "athlon-direct,(athlon-ieu+athlon-agu), | 375 "athlon-direct,(athlon-ieu+athlon-agu), |
377 athlon-store") | 376 athlon-store") |
382 (eq_attr "memory" "store")))) | 381 (eq_attr "memory" "store")))) |
383 "athlon-direct,(athlon-ieu+athlon-agu), | 382 "athlon-direct,(athlon-ieu+athlon-agu), |
384 athlon-store") | 383 athlon-store") |
385 | 384 |
386 (define_insn_reservation "athlon_ivector_store" 2 | 385 (define_insn_reservation "athlon_ivector_store" 2 |
387 (and (eq_attr "cpu" "athlon,k8,generic64") | 386 (and (eq_attr "cpu" "athlon,k8,generic") |
388 (and (eq_attr "athlon_decode" "vector") | 387 (and (eq_attr "athlon_decode" "vector") |
389 (and (eq_attr "unit" "integer,unknown") | 388 (and (eq_attr "unit" "integer,unknown") |
390 (eq_attr "memory" "store")))) | 389 (eq_attr "memory" "store")))) |
391 "athlon-vector,(athlon-ieu+athlon-agu),athlon-ieu, | 390 "athlon-vector,(athlon-ieu+athlon-agu),athlon-ieu, |
392 athlon-store") | 391 athlon-store") |
404 (and (eq_attr "type" "fmov") | 403 (and (eq_attr "type" "fmov") |
405 (and (eq_attr "memory" "load") | 404 (and (eq_attr "memory" "load") |
406 (eq_attr "mode" "XF")))) | 405 (eq_attr "mode" "XF")))) |
407 "athlon-vector,athlon-fpload2,athlon-fvector*9") | 406 "athlon-vector,athlon-fpload2,athlon-fvector*9") |
408 (define_insn_reservation "athlon_fldxf_k8" 13 | 407 (define_insn_reservation "athlon_fldxf_k8" 13 |
409 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 408 (and (eq_attr "cpu" "k8,generic,amdfam10") |
410 (and (eq_attr "type" "fmov") | 409 (and (eq_attr "type" "fmov") |
411 (and (eq_attr "memory" "load") | 410 (and (eq_attr "memory" "load") |
412 (eq_attr "mode" "XF")))) | 411 (eq_attr "mode" "XF")))) |
413 "athlon-vector,athlon-fpload2k8,athlon-fvector*9") | 412 "athlon-vector,athlon-fpload2k8,athlon-fvector*9") |
414 ;; Assume superforwarding to take place so effective latency of fany op is 0. | 413 ;; Assume superforwarding to take place so effective latency of fany op is 0. |
416 (and (eq_attr "cpu" "athlon") | 415 (and (eq_attr "cpu" "athlon") |
417 (and (eq_attr "type" "fmov") | 416 (and (eq_attr "type" "fmov") |
418 (eq_attr "memory" "load"))) | 417 (eq_attr "memory" "load"))) |
419 "athlon-direct,athlon-fpload,athlon-fany") | 418 "athlon-direct,athlon-fpload,athlon-fany") |
420 (define_insn_reservation "athlon_fld_k8" 2 | 419 (define_insn_reservation "athlon_fld_k8" 2 |
421 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 420 (and (eq_attr "cpu" "k8,generic,amdfam10") |
422 (and (eq_attr "type" "fmov") | 421 (and (eq_attr "type" "fmov") |
423 (eq_attr "memory" "load"))) | 422 (eq_attr "memory" "load"))) |
424 "athlon-direct,athlon-fploadk8,athlon-fstore") | 423 "athlon-direct,athlon-fploadk8,athlon-fstore") |
425 | 424 |
426 (define_insn_reservation "athlon_fstxf" 10 | 425 (define_insn_reservation "athlon_fstxf" 10 |
428 (and (eq_attr "type" "fmov") | 427 (and (eq_attr "type" "fmov") |
429 (and (eq_attr "memory" "store,both") | 428 (and (eq_attr "memory" "store,both") |
430 (eq_attr "mode" "XF")))) | 429 (eq_attr "mode" "XF")))) |
431 "athlon-vector,(athlon-fpsched+athlon-agu),(athlon-store2+(athlon-fvector*7))") | 430 "athlon-vector,(athlon-fpsched+athlon-agu),(athlon-store2+(athlon-fvector*7))") |
432 (define_insn_reservation "athlon_fstxf_k8" 8 | 431 (define_insn_reservation "athlon_fstxf_k8" 8 |
433 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 432 (and (eq_attr "cpu" "k8,generic,amdfam10") |
434 (and (eq_attr "type" "fmov") | 433 (and (eq_attr "type" "fmov") |
435 (and (eq_attr "memory" "store,both") | 434 (and (eq_attr "memory" "store,both") |
436 (eq_attr "mode" "XF")))) | 435 (eq_attr "mode" "XF")))) |
437 "athlon-vector,(athlon-fpsched+athlon-agu),(athlon-store2+(athlon-fvector*6))") | 436 "athlon-vector,(athlon-fpsched+athlon-agu),(athlon-store2+(athlon-fvector*6))") |
438 (define_insn_reservation "athlon_fst" 4 | 437 (define_insn_reservation "athlon_fst" 4 |
439 (and (eq_attr "cpu" "athlon") | 438 (and (eq_attr "cpu" "athlon") |
440 (and (eq_attr "type" "fmov") | 439 (and (eq_attr "type" "fmov") |
441 (eq_attr "memory" "store,both"))) | 440 (eq_attr "memory" "store,both"))) |
442 "athlon-direct,(athlon-fpsched+athlon-agu),(athlon-fstore+athlon-store)") | 441 "athlon-direct,(athlon-fpsched+athlon-agu),(athlon-fstore+athlon-store)") |
443 (define_insn_reservation "athlon_fst_k8" 2 | 442 (define_insn_reservation "athlon_fst_k8" 2 |
444 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 443 (and (eq_attr "cpu" "k8,generic,amdfam10") |
445 (and (eq_attr "type" "fmov") | 444 (and (eq_attr "type" "fmov") |
446 (eq_attr "memory" "store,both"))) | 445 (eq_attr "memory" "store,both"))) |
447 "athlon-direct,(athlon-fpsched+athlon-agu),(athlon-fstore+athlon-store)") | 446 "athlon-direct,(athlon-fpsched+athlon-agu),(athlon-fstore+athlon-store)") |
448 (define_insn_reservation "athlon_fist" 4 | 447 (define_insn_reservation "athlon_fist" 4 |
449 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 448 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
450 (eq_attr "type" "fistp,fisttp")) | 449 (eq_attr "type" "fistp,fisttp")) |
451 "athlon-direct,(athlon-fpsched+athlon-agu),(athlon-fstore+athlon-store)") | 450 "athlon-direct,(athlon-fpsched+athlon-agu),(athlon-fstore+athlon-store)") |
452 (define_insn_reservation "athlon_fmov" 2 | 451 (define_insn_reservation "athlon_fmov" 2 |
453 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 452 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
454 (eq_attr "type" "fmov")) | 453 (eq_attr "type" "fmov")) |
455 "athlon-direct,athlon-fpsched,athlon-faddmul") | 454 "athlon-direct,athlon-fpsched,athlon-faddmul") |
456 (define_insn_reservation "athlon_fadd_load" 4 | 455 (define_insn_reservation "athlon_fadd_load" 4 |
457 (and (eq_attr "cpu" "athlon") | 456 (and (eq_attr "cpu" "athlon") |
458 (and (eq_attr "type" "fop") | 457 (and (eq_attr "type" "fop") |
459 (eq_attr "memory" "load"))) | 458 (eq_attr "memory" "load"))) |
460 "athlon-direct,athlon-fpload,athlon-fadd") | 459 "athlon-direct,athlon-fpload,athlon-fadd") |
461 (define_insn_reservation "athlon_fadd_load_k8" 6 | 460 (define_insn_reservation "athlon_fadd_load_k8" 6 |
462 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 461 (and (eq_attr "cpu" "k8,generic,amdfam10") |
463 (and (eq_attr "type" "fop") | 462 (and (eq_attr "type" "fop") |
464 (eq_attr "memory" "load"))) | 463 (eq_attr "memory" "load"))) |
465 "athlon-direct,athlon-fploadk8,athlon-fadd") | 464 "athlon-direct,athlon-fploadk8,athlon-fadd") |
466 (define_insn_reservation "athlon_fadd" 4 | 465 (define_insn_reservation "athlon_fadd" 4 |
467 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 466 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
468 (eq_attr "type" "fop")) | 467 (eq_attr "type" "fop")) |
469 "athlon-direct,athlon-fpsched,athlon-fadd") | 468 "athlon-direct,athlon-fpsched,athlon-fadd") |
470 (define_insn_reservation "athlon_fmul_load" 4 | 469 (define_insn_reservation "athlon_fmul_load" 4 |
471 (and (eq_attr "cpu" "athlon") | 470 (and (eq_attr "cpu" "athlon") |
472 (and (eq_attr "type" "fmul") | 471 (and (eq_attr "type" "fmul") |
473 (eq_attr "memory" "load"))) | 472 (eq_attr "memory" "load"))) |
474 "athlon-direct,athlon-fpload,athlon-fmul") | 473 "athlon-direct,athlon-fpload,athlon-fmul") |
475 (define_insn_reservation "athlon_fmul_load_k8" 6 | 474 (define_insn_reservation "athlon_fmul_load_k8" 6 |
476 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 475 (and (eq_attr "cpu" "k8,generic,amdfam10") |
477 (and (eq_attr "type" "fmul") | 476 (and (eq_attr "type" "fmul") |
478 (eq_attr "memory" "load"))) | 477 (eq_attr "memory" "load"))) |
479 "athlon-direct,athlon-fploadk8,athlon-fmul") | 478 "athlon-direct,athlon-fploadk8,athlon-fmul") |
480 (define_insn_reservation "athlon_fmul" 4 | 479 (define_insn_reservation "athlon_fmul" 4 |
481 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 480 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
482 (eq_attr "type" "fmul")) | 481 (eq_attr "type" "fmul")) |
483 "athlon-direct,athlon-fpsched,athlon-fmul") | 482 "athlon-direct,athlon-fpsched,athlon-fmul") |
484 (define_insn_reservation "athlon_fsgn" 2 | 483 (define_insn_reservation "athlon_fsgn" 2 |
485 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 484 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
486 (eq_attr "type" "fsgn")) | 485 (eq_attr "type" "fsgn")) |
487 "athlon-direct,athlon-fpsched,athlon-fmul") | 486 "athlon-direct,athlon-fpsched,athlon-fmul") |
488 (define_insn_reservation "athlon_fdiv_load" 24 | 487 (define_insn_reservation "athlon_fdiv_load" 24 |
489 (and (eq_attr "cpu" "athlon") | 488 (and (eq_attr "cpu" "athlon") |
490 (and (eq_attr "type" "fdiv") | 489 (and (eq_attr "type" "fdiv") |
491 (eq_attr "memory" "load"))) | 490 (eq_attr "memory" "load"))) |
492 "athlon-direct,athlon-fpload,athlon-fmul") | 491 "athlon-direct,athlon-fpload,athlon-fmul") |
493 (define_insn_reservation "athlon_fdiv_load_k8" 13 | 492 (define_insn_reservation "athlon_fdiv_load_k8" 13 |
494 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 493 (and (eq_attr "cpu" "k8,generic,amdfam10") |
495 (and (eq_attr "type" "fdiv") | 494 (and (eq_attr "type" "fdiv") |
496 (eq_attr "memory" "load"))) | 495 (eq_attr "memory" "load"))) |
497 "athlon-direct,athlon-fploadk8,athlon-fmul") | 496 "athlon-direct,athlon-fploadk8,athlon-fmul") |
498 (define_insn_reservation "athlon_fdiv" 24 | 497 (define_insn_reservation "athlon_fdiv" 24 |
499 (and (eq_attr "cpu" "athlon") | 498 (and (eq_attr "cpu" "athlon") |
500 (eq_attr "type" "fdiv")) | 499 (eq_attr "type" "fdiv")) |
501 "athlon-direct,athlon-fpsched,athlon-fmul") | 500 "athlon-direct,athlon-fpsched,athlon-fmul") |
502 (define_insn_reservation "athlon_fdiv_k8" 11 | 501 (define_insn_reservation "athlon_fdiv_k8" 11 |
503 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 502 (and (eq_attr "cpu" "k8,generic,amdfam10") |
504 (eq_attr "type" "fdiv")) | 503 (eq_attr "type" "fdiv")) |
505 "athlon-direct,athlon-fpsched,athlon-fmul") | 504 "athlon-direct,athlon-fpsched,athlon-fmul") |
506 (define_insn_reservation "athlon_fpspc_load" 103 | 505 (define_insn_reservation "athlon_fpspc_load" 103 |
507 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 506 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
508 (and (eq_attr "type" "fpspc") | 507 (and (eq_attr "type" "fpspc") |
509 (eq_attr "memory" "load"))) | 508 (eq_attr "memory" "load"))) |
510 "athlon-vector,athlon-fpload,athlon-fvector") | 509 "athlon-vector,athlon-fpload,athlon-fvector") |
511 (define_insn_reservation "athlon_fpspc" 100 | 510 (define_insn_reservation "athlon_fpspc" 100 |
512 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 511 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
513 (eq_attr "type" "fpspc")) | 512 (eq_attr "type" "fpspc")) |
514 "athlon-vector,athlon-fpsched,athlon-fvector") | 513 "athlon-vector,athlon-fpsched,athlon-fvector") |
515 (define_insn_reservation "athlon_fcmov_load" 7 | 514 (define_insn_reservation "athlon_fcmov_load" 7 |
516 (and (eq_attr "cpu" "athlon") | 515 (and (eq_attr "cpu" "athlon") |
517 (and (eq_attr "type" "fcmov") | 516 (and (eq_attr "type" "fcmov") |
520 (define_insn_reservation "athlon_fcmov" 7 | 519 (define_insn_reservation "athlon_fcmov" 7 |
521 (and (eq_attr "cpu" "athlon") | 520 (and (eq_attr "cpu" "athlon") |
522 (eq_attr "type" "fcmov")) | 521 (eq_attr "type" "fcmov")) |
523 "athlon-vector,athlon-fpsched,athlon-fvector") | 522 "athlon-vector,athlon-fpsched,athlon-fvector") |
524 (define_insn_reservation "athlon_fcmov_load_k8" 17 | 523 (define_insn_reservation "athlon_fcmov_load_k8" 17 |
525 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 524 (and (eq_attr "cpu" "k8,generic,amdfam10") |
526 (and (eq_attr "type" "fcmov") | 525 (and (eq_attr "type" "fcmov") |
527 (eq_attr "memory" "load"))) | 526 (eq_attr "memory" "load"))) |
528 "athlon-vector,athlon-fploadk8,athlon-fvector") | 527 "athlon-vector,athlon-fploadk8,athlon-fvector") |
529 (define_insn_reservation "athlon_fcmov_k8" 15 | 528 (define_insn_reservation "athlon_fcmov_k8" 15 |
530 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 529 (and (eq_attr "cpu" "k8,generic,amdfam10") |
531 (eq_attr "type" "fcmov")) | 530 (eq_attr "type" "fcmov")) |
532 "athlon-vector,athlon-fpsched,athlon-fvector") | 531 "athlon-vector,athlon-fpsched,athlon-fvector") |
533 ;; fcomi is vector decoded by uses only one pipe. | 532 ;; fcomi is vector decoded by uses only one pipe. |
534 (define_insn_reservation "athlon_fcomi_load" 3 | 533 (define_insn_reservation "athlon_fcomi_load" 3 |
535 (and (eq_attr "cpu" "athlon") | 534 (and (eq_attr "cpu" "athlon") |
536 (and (eq_attr "type" "fcmp") | 535 (and (eq_attr "type" "fcmp") |
537 (and (eq_attr "athlon_decode" "vector") | 536 (and (eq_attr "athlon_decode" "vector") |
538 (eq_attr "memory" "load")))) | 537 (eq_attr "memory" "load")))) |
539 "athlon-vector,athlon-fpload,athlon-fadd") | 538 "athlon-vector,athlon-fpload,athlon-fadd") |
540 (define_insn_reservation "athlon_fcomi_load_k8" 5 | 539 (define_insn_reservation "athlon_fcomi_load_k8" 5 |
541 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 540 (and (eq_attr "cpu" "k8,generic,amdfam10") |
542 (and (eq_attr "type" "fcmp") | 541 (and (eq_attr "type" "fcmp") |
543 (and (eq_attr "athlon_decode" "vector") | 542 (and (eq_attr "athlon_decode" "vector") |
544 (eq_attr "memory" "load")))) | 543 (eq_attr "memory" "load")))) |
545 "athlon-vector,athlon-fploadk8,athlon-fadd") | 544 "athlon-vector,athlon-fploadk8,athlon-fadd") |
546 (define_insn_reservation "athlon_fcomi" 3 | 545 (define_insn_reservation "athlon_fcomi" 3 |
547 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 546 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
548 (and (eq_attr "athlon_decode" "vector") | 547 (and (eq_attr "athlon_decode" "vector") |
549 (eq_attr "type" "fcmp"))) | 548 (eq_attr "type" "fcmp"))) |
550 "athlon-vector,athlon-fpsched,athlon-fadd") | 549 "athlon-vector,athlon-fpsched,athlon-fadd") |
551 (define_insn_reservation "athlon_fcom_load" 2 | 550 (define_insn_reservation "athlon_fcom_load" 2 |
552 (and (eq_attr "cpu" "athlon") | 551 (and (eq_attr "cpu" "athlon") |
553 (and (eq_attr "type" "fcmp") | 552 (and (eq_attr "type" "fcmp") |
554 (eq_attr "memory" "load"))) | 553 (eq_attr "memory" "load"))) |
555 "athlon-direct,athlon-fpload,athlon-fadd") | 554 "athlon-direct,athlon-fpload,athlon-fadd") |
556 (define_insn_reservation "athlon_fcom_load_k8" 4 | 555 (define_insn_reservation "athlon_fcom_load_k8" 4 |
557 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 556 (and (eq_attr "cpu" "k8,generic,amdfam10") |
558 (and (eq_attr "type" "fcmp") | 557 (and (eq_attr "type" "fcmp") |
559 (eq_attr "memory" "load"))) | 558 (eq_attr "memory" "load"))) |
560 "athlon-direct,athlon-fploadk8,athlon-fadd") | 559 "athlon-direct,athlon-fploadk8,athlon-fadd") |
561 (define_insn_reservation "athlon_fcom" 2 | 560 (define_insn_reservation "athlon_fcom" 2 |
562 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 561 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
563 (eq_attr "type" "fcmp")) | 562 (eq_attr "type" "fcmp")) |
564 "athlon-direct,athlon-fpsched,athlon-fadd") | 563 "athlon-direct,athlon-fpsched,athlon-fadd") |
565 ;; Never seen by the scheduler because we still don't do post reg-stack | 564 ;; Never seen by the scheduler because we still don't do post reg-stack |
566 ;; scheduling. | 565 ;; scheduling. |
567 ;(define_insn_reservation "athlon_fxch" 2 | 566 ;(define_insn_reservation "athlon_fxch" 2 |
568 ; (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 567 ; (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
569 ; (eq_attr "type" "fxch")) | 568 ; (eq_attr "type" "fxch")) |
570 ; "athlon-direct,athlon-fpsched,athlon-fany") | 569 ; "athlon-direct,athlon-fpsched,athlon-fany") |
571 | 570 |
572 ;; Athlon handle MMX operations in the FPU unit with shorter latencies | 571 ;; Athlon handle MMX operations in the FPU unit with shorter latencies |
573 | 572 |
574 (define_insn_reservation "athlon_movlpd_load" 0 | 573 (define_insn_reservation "athlon_movlpd_load" 0 |
575 (and (eq_attr "cpu" "athlon") | 574 (and (eq_attr "cpu" "athlon") |
576 (and (eq_attr "type" "ssemov") | 575 (and (eq_attr "type" "ssemov") |
577 (match_operand:DF 1 "memory_operand" ""))) | 576 (match_operand:DF 1 "memory_operand"))) |
578 "athlon-direct,athlon-fpload,athlon-fany") | 577 "athlon-direct,athlon-fpload,athlon-fany") |
579 (define_insn_reservation "athlon_movlpd_load_k8" 2 | 578 (define_insn_reservation "athlon_movlpd_load_k8" 2 |
580 (and (eq_attr "cpu" "k8") | 579 (and (eq_attr "cpu" "k8") |
581 (and (eq_attr "type" "ssemov") | 580 (and (eq_attr "type" "ssemov") |
582 (match_operand:DF 1 "memory_operand" ""))) | 581 (match_operand:DF 1 "memory_operand"))) |
583 "athlon-direct,athlon-fploadk8,athlon-fstore") | 582 "athlon-direct,athlon-fploadk8,athlon-fstore") |
584 (define_insn_reservation "athlon_movsd_load_generic64" 2 | 583 (define_insn_reservation "athlon_movsd_load_generic" 2 |
585 (and (eq_attr "cpu" "generic64") | 584 (and (eq_attr "cpu" "generic") |
586 (and (eq_attr "type" "ssemov") | 585 (and (eq_attr "type" "ssemov") |
587 (match_operand:DF 1 "memory_operand" ""))) | 586 (match_operand:DF 1 "memory_operand"))) |
588 "athlon-double,athlon-fploadk8,(athlon-fstore+athlon-fmul)") | 587 "athlon-double,athlon-fploadk8,(athlon-fstore+athlon-fmul)") |
589 (define_insn_reservation "athlon_movaps_load_k8" 2 | 588 (define_insn_reservation "athlon_movaps_load_k8" 2 |
590 (and (eq_attr "cpu" "k8,generic64") | 589 (and (eq_attr "cpu" "k8,generic") |
591 (and (eq_attr "type" "ssemov") | 590 (and (eq_attr "type" "ssemov") |
592 (and (eq_attr "mode" "V4SF,V2DF,TI") | 591 (and (eq_attr "mode" "V4SF,V2DF,TI") |
593 (eq_attr "memory" "load")))) | 592 (eq_attr "memory" "load")))) |
594 "athlon-double,athlon-fpload2k8,athlon-fstore,athlon-fstore") | 593 "athlon-double,athlon-fpload2k8,athlon-fstore,athlon-fstore") |
595 (define_insn_reservation "athlon_movaps_load" 0 | 594 (define_insn_reservation "athlon_movaps_load" 0 |
603 (and (eq_attr "type" "ssemov") | 602 (and (eq_attr "type" "ssemov") |
604 (and (eq_attr "mode" "SF,DI") | 603 (and (eq_attr "mode" "SF,DI") |
605 (eq_attr "memory" "load")))) | 604 (eq_attr "memory" "load")))) |
606 "athlon-vector,athlon-fpload,(athlon-fany*2)") | 605 "athlon-vector,athlon-fpload,(athlon-fany*2)") |
607 (define_insn_reservation "athlon_movss_load_k8" 1 | 606 (define_insn_reservation "athlon_movss_load_k8" 1 |
608 (and (eq_attr "cpu" "k8,generic64") | 607 (and (eq_attr "cpu" "k8,generic") |
609 (and (eq_attr "type" "ssemov") | 608 (and (eq_attr "type" "ssemov") |
610 (and (eq_attr "mode" "SF,DI") | 609 (and (eq_attr "mode" "SF,DI") |
611 (eq_attr "memory" "load")))) | 610 (eq_attr "memory" "load")))) |
612 "athlon-double,athlon-fploadk8,(athlon-fstore+athlon-fany)") | 611 "athlon-double,athlon-fploadk8,(athlon-fstore+athlon-fany)") |
613 (define_insn_reservation "athlon_mmxsseld" 0 | 612 (define_insn_reservation "athlon_mmxsseld" 0 |
614 (and (eq_attr "cpu" "athlon") | 613 (and (eq_attr "cpu" "athlon") |
615 (and (eq_attr "type" "mmxmov,ssemov") | 614 (and (eq_attr "type" "mmxmov,ssemov") |
616 (eq_attr "memory" "load"))) | 615 (eq_attr "memory" "load"))) |
617 "athlon-direct,athlon-fpload,athlon-fany") | 616 "athlon-direct,athlon-fpload,athlon-fany") |
618 (define_insn_reservation "athlon_mmxsseld_k8" 2 | 617 (define_insn_reservation "athlon_mmxsseld_k8" 2 |
619 (and (eq_attr "cpu" "k8,generic64") | 618 (and (eq_attr "cpu" "k8,generic") |
620 (and (eq_attr "type" "mmxmov,ssemov") | 619 (and (eq_attr "type" "mmxmov,ssemov") |
621 (eq_attr "memory" "load"))) | 620 (eq_attr "memory" "load"))) |
622 "athlon-direct,athlon-fploadk8,athlon-fstore") | 621 "athlon-direct,athlon-fploadk8,athlon-fstore") |
623 ;; On AMDFAM10 all double, single and integer packed and scalar SSEx data | 622 ;; On AMDFAM10 all double, single and integer packed and scalar SSEx data |
624 ;; loads generated are direct path, latency of 2 and do not use any FP | 623 ;; loads generated are direct path, latency of 2 and do not use any FP |
636 (and (eq_attr "cpu" "amdfam10") | 635 (and (eq_attr "cpu" "amdfam10") |
637 (and (eq_attr "type" "mmxmov") | 636 (and (eq_attr "type" "mmxmov") |
638 (eq_attr "memory" "load"))) | 637 (eq_attr "memory" "load"))) |
639 "athlon-direct,athlon-fploadk8, athlon-fany") | 638 "athlon-direct,athlon-fploadk8, athlon-fany") |
640 (define_insn_reservation "athlon_mmxssest" 3 | 639 (define_insn_reservation "athlon_mmxssest" 3 |
641 (and (eq_attr "cpu" "k8,generic64") | 640 (and (eq_attr "cpu" "k8,generic") |
642 (and (eq_attr "type" "mmxmov,ssemov") | 641 (and (eq_attr "type" "mmxmov,ssemov") |
643 (and (eq_attr "mode" "V4SF,V2DF,TI") | 642 (and (eq_attr "mode" "V4SF,V2DF,TI") |
644 (eq_attr "memory" "store,both")))) | 643 (eq_attr "memory" "store,both")))) |
645 "athlon-vector,(athlon-fpsched+athlon-agu),((athlon-fstore+athlon-store2)*2)") | 644 "athlon-vector,(athlon-fpsched+athlon-agu),((athlon-fstore+athlon-store2)*2)") |
646 (define_insn_reservation "athlon_mmxssest_k8" 3 | 645 (define_insn_reservation "athlon_mmxssest_k8" 3 |
647 (and (eq_attr "cpu" "k8,generic64") | 646 (and (eq_attr "cpu" "k8,generic") |
648 (and (eq_attr "type" "mmxmov,ssemov") | 647 (and (eq_attr "type" "mmxmov,ssemov") |
649 (and (eq_attr "mode" "V4SF,V2DF,TI") | 648 (and (eq_attr "mode" "V4SF,V2DF,TI") |
650 (eq_attr "memory" "store,both")))) | 649 (eq_attr "memory" "store,both")))) |
651 "athlon-double,(athlon-fpsched+athlon-agu),((athlon-fstore+athlon-store2)*2)") | 650 "athlon-double,(athlon-fpsched+athlon-agu),((athlon-fstore+athlon-store2)*2)") |
652 (define_insn_reservation "athlon_mmxssest_short" 2 | 651 (define_insn_reservation "athlon_mmxssest_short" 2 |
653 (and (eq_attr "cpu" "athlon,k8,generic64") | 652 (and (eq_attr "cpu" "athlon,k8,generic") |
654 (and (eq_attr "type" "mmxmov,ssemov") | 653 (and (eq_attr "type" "mmxmov,ssemov") |
655 (eq_attr "memory" "store,both"))) | 654 (eq_attr "memory" "store,both"))) |
656 "athlon-direct,(athlon-fpsched+athlon-agu),(athlon-fstore+athlon-store)") | 655 "athlon-direct,(athlon-fpsched+athlon-agu),(athlon-fstore+athlon-store)") |
657 ;; On AMDFAM10 all double, single and integer packed SSEx data stores | 656 ;; On AMDFAM10 all double, single and integer packed SSEx data stores |
658 ;; generated are all double path, latency of 2 and use the FSTORE FP | 657 ;; generated are all double path, latency of 2 and use the FSTORE FP |
672 (and (eq_attr "cpu" "amdfam10") | 671 (and (eq_attr "cpu" "amdfam10") |
673 (and (eq_attr "type" "mmxmov,ssemov") | 672 (and (eq_attr "type" "mmxmov,ssemov") |
674 (eq_attr "memory" "store,both"))) | 673 (eq_attr "memory" "store,both"))) |
675 "athlon-direct,(athlon-fpsched+athlon-agu),(athlon-fstore+athlon-store)") | 674 "athlon-direct,(athlon-fpsched+athlon-agu),(athlon-fstore+athlon-store)") |
676 (define_insn_reservation "athlon_movaps_k8" 2 | 675 (define_insn_reservation "athlon_movaps_k8" 2 |
677 (and (eq_attr "cpu" "k8,generic64") | 676 (and (eq_attr "cpu" "k8,generic") |
678 (and (eq_attr "type" "ssemov") | 677 (and (eq_attr "type" "ssemov") |
679 (eq_attr "mode" "V4SF,V2DF,TI"))) | 678 (eq_attr "mode" "V4SF,V2DF,TI"))) |
680 "athlon-double,athlon-fpsched,((athlon-faddmul+athlon-faddmul) | (athlon-faddmul, athlon-faddmul))") | 679 "athlon-double,athlon-fpsched,((athlon-faddmul+athlon-faddmul) | (athlon-faddmul, athlon-faddmul))") |
681 (define_insn_reservation "athlon_movaps" 2 | 680 (define_insn_reservation "athlon_movaps" 2 |
682 (and (eq_attr "cpu" "athlon") | 681 (and (eq_attr "cpu" "athlon") |
683 (and (eq_attr "type" "ssemov") | 682 (and (eq_attr "type" "ssemov") |
684 (eq_attr "mode" "V4SF,V2DF,TI"))) | 683 (eq_attr "mode" "V4SF,V2DF,TI"))) |
685 "athlon-vector,athlon-fpsched,(athlon-faddmul+athlon-faddmul)") | 684 "athlon-vector,athlon-fpsched,(athlon-faddmul+athlon-faddmul)") |
686 (define_insn_reservation "athlon_mmxssemov" 2 | 685 (define_insn_reservation "athlon_mmxssemov" 2 |
687 (and (eq_attr "cpu" "athlon,k8,generic64") | 686 (and (eq_attr "cpu" "athlon,k8,generic") |
688 (eq_attr "type" "mmxmov,ssemov")) | 687 (eq_attr "type" "mmxmov,ssemov")) |
689 "athlon-direct,athlon-fpsched,athlon-faddmul") | 688 "athlon-direct,athlon-fpsched,athlon-faddmul") |
690 (define_insn_reservation "athlon_mmxmul_load" 4 | 689 (define_insn_reservation "athlon_mmxmul_load" 4 |
691 (and (eq_attr "cpu" "athlon,k8,generic64") | 690 (and (eq_attr "cpu" "athlon,k8,generic") |
692 (and (eq_attr "type" "mmxmul") | 691 (and (eq_attr "type" "mmxmul") |
693 (eq_attr "memory" "load"))) | 692 (eq_attr "memory" "load"))) |
694 "athlon-direct,athlon-fpload,athlon-fmul") | 693 "athlon-direct,athlon-fpload,athlon-fmul") |
695 (define_insn_reservation "athlon_mmxmul" 3 | 694 (define_insn_reservation "athlon_mmxmul" 3 |
696 (and (eq_attr "cpu" "athlon,k8,generic64") | 695 (and (eq_attr "cpu" "athlon,k8,generic") |
697 (eq_attr "type" "mmxmul")) | 696 (eq_attr "type" "mmxmul")) |
698 "athlon-direct,athlon-fpsched,athlon-fmul") | 697 "athlon-direct,athlon-fpsched,athlon-fmul") |
699 (define_insn_reservation "athlon_mmx_load" 3 | 698 (define_insn_reservation "athlon_mmx_load" 3 |
700 (and (eq_attr "cpu" "athlon,k8,generic64") | 699 (and (eq_attr "cpu" "athlon,k8,generic") |
701 (and (eq_attr "unit" "mmx") | 700 (and (eq_attr "unit" "mmx") |
702 (eq_attr "memory" "load"))) | 701 (eq_attr "memory" "load"))) |
703 "athlon-direct,athlon-fpload,athlon-faddmul") | 702 "athlon-direct,athlon-fpload,athlon-faddmul") |
704 (define_insn_reservation "athlon_mmx" 2 | 703 (define_insn_reservation "athlon_mmx" 2 |
705 (and (eq_attr "cpu" "athlon,k8,generic64") | 704 (and (eq_attr "cpu" "athlon,k8,generic") |
706 (eq_attr "unit" "mmx")) | 705 (eq_attr "unit" "mmx")) |
707 "athlon-direct,athlon-fpsched,athlon-faddmul") | 706 "athlon-direct,athlon-fpsched,athlon-faddmul") |
708 ;; SSE operations are handled by the i387 unit as well. The latency | 707 ;; SSE operations are handled by the i387 unit as well. The latency |
709 ;; is same as for i387 operations for scalar operations | 708 ;; is same as for i387 operations for scalar operations |
710 | 709 |
711 (define_insn_reservation "athlon_sselog_load" 3 | 710 (define_insn_reservation "athlon_sselog_load" 3 |
712 (and (eq_attr "cpu" "athlon") | 711 (and (eq_attr "cpu" "athlon") |
713 (and (eq_attr "type" "sselog,sselog1") | 712 (and (eq_attr "type" "sselog,sselog1,sseshuf,sseshuf1") |
714 (eq_attr "memory" "load"))) | 713 (eq_attr "memory" "load"))) |
715 "athlon-vector,athlon-fpload2,(athlon-fmul*2)") | 714 "athlon-vector,athlon-fpload2,(athlon-fmul*2)") |
716 (define_insn_reservation "athlon_sselog_load_k8" 5 | 715 (define_insn_reservation "athlon_sselog_load_k8" 5 |
717 (and (eq_attr "cpu" "k8,generic64") | 716 (and (eq_attr "cpu" "k8,generic") |
718 (and (eq_attr "type" "sselog,sselog1") | 717 (and (eq_attr "type" "sselog,sselog1,sseshuf,sseshuf1") |
719 (eq_attr "memory" "load"))) | 718 (eq_attr "memory" "load"))) |
720 "athlon-double,athlon-fpload2k8,(athlon-fmul*2)") | 719 "athlon-double,athlon-fpload2k8,(athlon-fmul*2)") |
721 (define_insn_reservation "athlon_sselog_load_amdfam10" 4 | 720 (define_insn_reservation "athlon_sselog_load_amdfam10" 4 |
722 (and (eq_attr "cpu" "amdfam10") | 721 (and (eq_attr "cpu" "amdfam10") |
723 (and (eq_attr "type" "sselog,sselog1") | 722 (and (eq_attr "type" "sselog,sselog1,sseshuf,sseshuf1") |
724 (eq_attr "memory" "load"))) | 723 (eq_attr "memory" "load"))) |
725 "athlon-direct,athlon-fploadk8,(athlon-fadd|athlon-fmul)") | 724 "athlon-direct,athlon-fploadk8,(athlon-fadd|athlon-fmul)") |
726 (define_insn_reservation "athlon_sselog" 3 | 725 (define_insn_reservation "athlon_sselog" 3 |
727 (and (eq_attr "cpu" "athlon") | 726 (and (eq_attr "cpu" "athlon") |
728 (eq_attr "type" "sselog,sselog1")) | 727 (eq_attr "type" "sselog,sselog1,sseshuf,sseshuf1")) |
729 "athlon-vector,athlon-fpsched,athlon-fmul*2") | 728 "athlon-vector,athlon-fpsched,athlon-fmul*2") |
730 (define_insn_reservation "athlon_sselog_k8" 3 | 729 (define_insn_reservation "athlon_sselog_k8" 3 |
731 (and (eq_attr "cpu" "k8,generic64") | 730 (and (eq_attr "cpu" "k8,generic") |
732 (eq_attr "type" "sselog,sselog1")) | 731 (eq_attr "type" "sselog,sselog1,sseshuf,sseshuf1")) |
733 "athlon-double,athlon-fpsched,athlon-fmul") | 732 "athlon-double,athlon-fpsched,athlon-fmul") |
734 (define_insn_reservation "athlon_sselog_amdfam10" 2 | 733 (define_insn_reservation "athlon_sselog_amdfam10" 2 |
735 (and (eq_attr "cpu" "amdfam10") | 734 (and (eq_attr "cpu" "amdfam10") |
736 (eq_attr "type" "sselog,sselog1")) | 735 (eq_attr "type" "sselog,sselog1,sseshuf,sseshuf1")) |
737 "athlon-direct,athlon-fpsched,(athlon-fadd|athlon-fmul)") | 736 "athlon-direct,athlon-fpsched,(athlon-fadd|athlon-fmul)") |
738 | 737 |
739 ;; ??? pcmp executes in addmul, probably not worthwhile to bother about that. | 738 ;; ??? pcmp executes in addmul, probably not worthwhile to bother about that. |
740 (define_insn_reservation "athlon_ssecmp_load" 2 | 739 (define_insn_reservation "athlon_ssecmp_load" 2 |
741 (and (eq_attr "cpu" "athlon") | 740 (and (eq_attr "cpu" "athlon") |
742 (and (eq_attr "type" "ssecmp") | 741 (and (eq_attr "type" "ssecmp") |
743 (and (eq_attr "mode" "SF,DF,DI") | 742 (and (eq_attr "mode" "SF,DF,DI") |
744 (eq_attr "memory" "load")))) | 743 (eq_attr "memory" "load")))) |
745 "athlon-direct,athlon-fpload,athlon-fadd") | 744 "athlon-direct,athlon-fpload,athlon-fadd") |
746 (define_insn_reservation "athlon_ssecmp_load_k8" 4 | 745 (define_insn_reservation "athlon_ssecmp_load_k8" 4 |
747 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 746 (and (eq_attr "cpu" "k8,generic,amdfam10") |
748 (and (eq_attr "type" "ssecmp") | 747 (and (eq_attr "type" "ssecmp") |
749 (and (eq_attr "mode" "SF,DF,DI,TI") | 748 (and (eq_attr "mode" "SF,DF,DI,TI") |
750 (eq_attr "memory" "load")))) | 749 (eq_attr "memory" "load")))) |
751 "athlon-direct,athlon-fploadk8,athlon-fadd") | 750 "athlon-direct,athlon-fploadk8,athlon-fadd") |
752 (define_insn_reservation "athlon_ssecmp" 2 | 751 (define_insn_reservation "athlon_ssecmp" 2 |
753 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 752 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
754 (and (eq_attr "type" "ssecmp") | 753 (and (eq_attr "type" "ssecmp") |
755 (eq_attr "mode" "SF,DF,DI,TI"))) | 754 (eq_attr "mode" "SF,DF,DI,TI"))) |
756 "athlon-direct,athlon-fpsched,athlon-fadd") | 755 "athlon-direct,athlon-fpsched,athlon-fadd") |
757 (define_insn_reservation "athlon_ssecmpvector_load" 3 | 756 (define_insn_reservation "athlon_ssecmpvector_load" 3 |
758 (and (eq_attr "cpu" "athlon") | 757 (and (eq_attr "cpu" "athlon") |
759 (and (eq_attr "type" "ssecmp") | 758 (and (eq_attr "type" "ssecmp") |
760 (eq_attr "memory" "load"))) | 759 (eq_attr "memory" "load"))) |
761 "athlon-vector,athlon-fpload2,(athlon-fadd*2)") | 760 "athlon-vector,athlon-fpload2,(athlon-fadd*2)") |
762 (define_insn_reservation "athlon_ssecmpvector_load_k8" 5 | 761 (define_insn_reservation "athlon_ssecmpvector_load_k8" 5 |
763 (and (eq_attr "cpu" "k8,generic64") | 762 (and (eq_attr "cpu" "k8,generic") |
764 (and (eq_attr "type" "ssecmp") | 763 (and (eq_attr "type" "ssecmp") |
765 (eq_attr "memory" "load"))) | 764 (eq_attr "memory" "load"))) |
766 "athlon-double,athlon-fpload2k8,(athlon-fadd*2)") | 765 "athlon-double,athlon-fpload2k8,(athlon-fadd*2)") |
767 (define_insn_reservation "athlon_ssecmpvector_load_amdfam10" 4 | 766 (define_insn_reservation "athlon_ssecmpvector_load_amdfam10" 4 |
768 (and (eq_attr "cpu" "amdfam10") | 767 (and (eq_attr "cpu" "amdfam10") |
772 (define_insn_reservation "athlon_ssecmpvector" 3 | 771 (define_insn_reservation "athlon_ssecmpvector" 3 |
773 (and (eq_attr "cpu" "athlon") | 772 (and (eq_attr "cpu" "athlon") |
774 (eq_attr "type" "ssecmp")) | 773 (eq_attr "type" "ssecmp")) |
775 "athlon-vector,athlon-fpsched,(athlon-fadd*2)") | 774 "athlon-vector,athlon-fpsched,(athlon-fadd*2)") |
776 (define_insn_reservation "athlon_ssecmpvector_k8" 3 | 775 (define_insn_reservation "athlon_ssecmpvector_k8" 3 |
777 (and (eq_attr "cpu" "k8,generic64") | 776 (and (eq_attr "cpu" "k8,generic") |
778 (eq_attr "type" "ssecmp")) | 777 (eq_attr "type" "ssecmp")) |
779 "athlon-double,athlon-fpsched,(athlon-fadd*2)") | 778 "athlon-double,athlon-fpsched,(athlon-fadd*2)") |
780 (define_insn_reservation "athlon_ssecmpvector_amdfam10" 2 | 779 (define_insn_reservation "athlon_ssecmpvector_amdfam10" 2 |
781 (and (eq_attr "cpu" "amdfam10") | 780 (and (eq_attr "cpu" "amdfam10") |
782 (eq_attr "type" "ssecmp")) | 781 (eq_attr "type" "ssecmp")) |
785 (and (eq_attr "cpu" "athlon") | 784 (and (eq_attr "cpu" "athlon") |
786 (and (eq_attr "type" "ssecomi") | 785 (and (eq_attr "type" "ssecomi") |
787 (eq_attr "memory" "load"))) | 786 (eq_attr "memory" "load"))) |
788 "athlon-vector,athlon-fpload,athlon-fadd") | 787 "athlon-vector,athlon-fpload,athlon-fadd") |
789 (define_insn_reservation "athlon_ssecomi_load_k8" 6 | 788 (define_insn_reservation "athlon_ssecomi_load_k8" 6 |
790 (and (eq_attr "cpu" "k8,generic64") | 789 (and (eq_attr "cpu" "k8,generic") |
791 (and (eq_attr "type" "ssecomi") | 790 (and (eq_attr "type" "ssecomi") |
792 (eq_attr "memory" "load"))) | 791 (eq_attr "memory" "load"))) |
793 "athlon-vector,athlon-fploadk8,athlon-fadd") | 792 "athlon-vector,athlon-fploadk8,athlon-fadd") |
794 (define_insn_reservation "athlon_ssecomi_load_amdfam10" 5 | 793 (define_insn_reservation "athlon_ssecomi_load_amdfam10" 5 |
795 (and (eq_attr "cpu" "amdfam10") | 794 (and (eq_attr "cpu" "amdfam10") |
796 (and (eq_attr "type" "ssecomi") | 795 (and (eq_attr "type" "ssecomi") |
797 (eq_attr "memory" "load"))) | 796 (eq_attr "memory" "load"))) |
798 "athlon-direct,athlon-fploadk8,athlon-fadd") | 797 "athlon-direct,athlon-fploadk8,athlon-fadd") |
799 (define_insn_reservation "athlon_ssecomi" 4 | 798 (define_insn_reservation "athlon_ssecomi" 4 |
800 (and (eq_attr "cpu" "athlon,k8,generic64") | 799 (and (eq_attr "cpu" "athlon,k8,generic") |
801 (eq_attr "type" "ssecmp")) | 800 (eq_attr "type" "ssecomi")) |
802 "athlon-vector,athlon-fpsched,athlon-fadd") | 801 "athlon-vector,athlon-fpsched,athlon-fadd") |
803 (define_insn_reservation "athlon_ssecomi_amdfam10" 3 | 802 (define_insn_reservation "athlon_ssecomi_amdfam10" 3 |
804 (and (eq_attr "cpu" "amdfam10") | 803 (and (eq_attr "cpu" "amdfam10") |
805 ;; It seems athlon_ssecomi has a bug in the attr_type, fixed for amdfam10 | 804 ;; It seems athlon_ssecomi has a bug in the attr_type, fixed for amdfam10 |
806 (eq_attr "type" "ssecomi")) | 805 (eq_attr "type" "ssecomi")) |
807 "athlon-direct,athlon-fpsched,athlon-fadd") | 806 "athlon-direct,athlon-fpsched,athlon-fadd") |
808 (define_insn_reservation "athlon_sseadd_load" 4 | 807 (define_insn_reservation "athlon_sseadd_load" 4 |
809 (and (eq_attr "cpu" "athlon") | 808 (and (eq_attr "cpu" "athlon") |
810 (and (eq_attr "type" "sseadd") | 809 (and (eq_attr "type" "sseadd,sseadd1") |
811 (and (eq_attr "mode" "SF,DF,DI") | 810 (and (eq_attr "mode" "SF,DF,DI") |
812 (eq_attr "memory" "load")))) | 811 (eq_attr "memory" "load")))) |
813 "athlon-direct,athlon-fpload,athlon-fadd") | 812 "athlon-direct,athlon-fpload,athlon-fadd") |
814 (define_insn_reservation "athlon_sseadd_load_k8" 6 | 813 (define_insn_reservation "athlon_sseadd_load_k8" 6 |
815 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 814 (and (eq_attr "cpu" "k8,generic,amdfam10") |
816 (and (eq_attr "type" "sseadd") | 815 (and (eq_attr "type" "sseadd,sseadd1") |
817 (and (eq_attr "mode" "SF,DF,DI") | 816 (and (eq_attr "mode" "SF,DF,DI") |
818 (eq_attr "memory" "load")))) | 817 (eq_attr "memory" "load")))) |
819 "athlon-direct,athlon-fploadk8,athlon-fadd") | 818 "athlon-direct,athlon-fploadk8,athlon-fadd") |
820 (define_insn_reservation "athlon_sseadd" 4 | 819 (define_insn_reservation "athlon_sseadd" 4 |
821 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 820 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
822 (and (eq_attr "type" "sseadd") | 821 (and (eq_attr "type" "sseadd,sseadd1") |
823 (eq_attr "mode" "SF,DF,DI"))) | 822 (eq_attr "mode" "SF,DF,DI"))) |
824 "athlon-direct,athlon-fpsched,athlon-fadd") | 823 "athlon-direct,athlon-fpsched,athlon-fadd") |
825 (define_insn_reservation "athlon_sseaddvector_load" 5 | 824 (define_insn_reservation "athlon_sseaddvector_load" 5 |
826 (and (eq_attr "cpu" "athlon") | 825 (and (eq_attr "cpu" "athlon") |
827 (and (eq_attr "type" "sseadd") | 826 (and (eq_attr "type" "sseadd,sseadd1") |
828 (eq_attr "memory" "load"))) | 827 (eq_attr "memory" "load"))) |
829 "athlon-vector,athlon-fpload2,(athlon-fadd*2)") | 828 "athlon-vector,athlon-fpload2,(athlon-fadd*2)") |
830 (define_insn_reservation "athlon_sseaddvector_load_k8" 7 | 829 (define_insn_reservation "athlon_sseaddvector_load_k8" 7 |
831 (and (eq_attr "cpu" "k8,generic64") | 830 (and (eq_attr "cpu" "k8,generic") |
832 (and (eq_attr "type" "sseadd") | 831 (and (eq_attr "type" "sseadd,sseadd1") |
833 (eq_attr "memory" "load"))) | 832 (eq_attr "memory" "load"))) |
834 "athlon-double,athlon-fpload2k8,(athlon-fadd*2)") | 833 "athlon-double,athlon-fpload2k8,(athlon-fadd*2)") |
835 (define_insn_reservation "athlon_sseaddvector_load_amdfam10" 6 | 834 (define_insn_reservation "athlon_sseaddvector_load_amdfam10" 6 |
836 (and (eq_attr "cpu" "amdfam10") | 835 (and (eq_attr "cpu" "amdfam10") |
837 (and (eq_attr "type" "sseadd") | 836 (and (eq_attr "type" "sseadd,sseadd1") |
838 (eq_attr "memory" "load"))) | 837 (eq_attr "memory" "load"))) |
839 "athlon-direct,athlon-fploadk8,athlon-fadd") | 838 "athlon-direct,athlon-fploadk8,athlon-fadd") |
840 (define_insn_reservation "athlon_sseaddvector" 5 | 839 (define_insn_reservation "athlon_sseaddvector" 5 |
841 (and (eq_attr "cpu" "athlon") | 840 (and (eq_attr "cpu" "athlon") |
842 (eq_attr "type" "sseadd")) | 841 (eq_attr "type" "sseadd,sseadd1")) |
843 "athlon-vector,athlon-fpsched,(athlon-fadd*2)") | 842 "athlon-vector,athlon-fpsched,(athlon-fadd*2)") |
844 (define_insn_reservation "athlon_sseaddvector_k8" 5 | 843 (define_insn_reservation "athlon_sseaddvector_k8" 5 |
845 (and (eq_attr "cpu" "k8,generic64") | 844 (and (eq_attr "cpu" "k8,generic") |
846 (eq_attr "type" "sseadd")) | 845 (eq_attr "type" "sseadd,sseadd1")) |
847 "athlon-double,athlon-fpsched,(athlon-fadd*2)") | 846 "athlon-double,athlon-fpsched,(athlon-fadd*2)") |
848 (define_insn_reservation "athlon_sseaddvector_amdfam10" 4 | 847 (define_insn_reservation "athlon_sseaddvector_amdfam10" 4 |
849 (and (eq_attr "cpu" "amdfam10") | 848 (and (eq_attr "cpu" "amdfam10") |
850 (eq_attr "type" "sseadd")) | 849 (eq_attr "type" "sseadd,sseadd1")) |
851 "athlon-direct,athlon-fpsched,athlon-fadd") | 850 "athlon-direct,athlon-fpsched,athlon-fadd") |
852 | 851 |
853 ;; Conversions behaves very irregularly and the scheduling is critical here. | 852 ;; Conversions behaves very irregularly and the scheduling is critical here. |
854 ;; Take each instruction separately. Assume that the mode is always set to the | 853 ;; Take each instruction separately. Assume that the mode is always set to the |
855 ;; destination one and athlon_decode is set to the K8 versions. | 854 ;; destination one and athlon_decode is set to the K8 versions. |
856 | 855 |
857 ;; cvtss2sd | 856 ;; cvtss2sd |
858 (define_insn_reservation "athlon_ssecvt_cvtss2sd_load_k8" 4 | 857 (define_insn_reservation "athlon_ssecvt_cvtss2sd_load_k8" 4 |
859 (and (eq_attr "cpu" "k8,athlon,generic64") | 858 (and (eq_attr "cpu" "k8,athlon,generic") |
860 (and (eq_attr "type" "ssecvt") | 859 (and (eq_attr "type" "ssecvt") |
861 (and (eq_attr "athlon_decode" "direct") | 860 (and (eq_attr "athlon_decode" "direct") |
862 (and (eq_attr "mode" "DF") | 861 (and (eq_attr "mode" "DF") |
863 (eq_attr "memory" "load"))))) | 862 (eq_attr "memory" "load"))))) |
864 "athlon-direct,athlon-fploadk8,athlon-fstore") | 863 "athlon-direct,athlon-fploadk8,athlon-fstore") |
868 (and (eq_attr "amdfam10_decode" "double") | 867 (and (eq_attr "amdfam10_decode" "double") |
869 (and (eq_attr "mode" "DF") | 868 (and (eq_attr "mode" "DF") |
870 (eq_attr "memory" "load"))))) | 869 (eq_attr "memory" "load"))))) |
871 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") | 870 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") |
872 (define_insn_reservation "athlon_ssecvt_cvtss2sd" 2 | 871 (define_insn_reservation "athlon_ssecvt_cvtss2sd" 2 |
873 (and (eq_attr "cpu" "athlon,k8,generic64") | 872 (and (eq_attr "cpu" "athlon,k8,generic") |
874 (and (eq_attr "type" "ssecvt") | 873 (and (eq_attr "type" "ssecvt") |
875 (and (eq_attr "athlon_decode" "direct") | 874 (and (eq_attr "athlon_decode" "direct") |
876 (eq_attr "mode" "DF")))) | 875 (eq_attr "mode" "DF")))) |
877 "athlon-direct,athlon-fpsched,athlon-fstore") | 876 "athlon-direct,athlon-fpsched,athlon-fstore") |
878 (define_insn_reservation "athlon_ssecvt_cvtss2sd_amdfam10" 7 | 877 (define_insn_reservation "athlon_ssecvt_cvtss2sd_amdfam10" 7 |
881 (and (eq_attr "amdfam10_decode" "vector") | 880 (and (eq_attr "amdfam10_decode" "vector") |
882 (eq_attr "mode" "DF")))) | 881 (eq_attr "mode" "DF")))) |
883 "athlon-vector,athlon-fpsched,athlon-faddmul,(athlon-fstore*2)") | 882 "athlon-vector,athlon-fpsched,athlon-faddmul,(athlon-fstore*2)") |
884 ;; cvtps2pd. Model same way the other double decoded FP conversions. | 883 ;; cvtps2pd. Model same way the other double decoded FP conversions. |
885 (define_insn_reservation "athlon_ssecvt_cvtps2pd_load_k8" 5 | 884 (define_insn_reservation "athlon_ssecvt_cvtps2pd_load_k8" 5 |
886 (and (eq_attr "cpu" "k8,athlon,generic64") | 885 (and (eq_attr "cpu" "k8,athlon,generic") |
887 (and (eq_attr "type" "ssecvt") | 886 (and (eq_attr "type" "ssecvt") |
888 (and (eq_attr "athlon_decode" "double") | 887 (and (eq_attr "athlon_decode" "double") |
889 (and (eq_attr "mode" "V2DF,V4SF,TI") | 888 (and (eq_attr "mode" "V2DF,V4SF,TI") |
890 (eq_attr "memory" "load"))))) | 889 (eq_attr "memory" "load"))))) |
891 "athlon-double,athlon-fpload2k8,(athlon-fstore*2)") | 890 "athlon-double,athlon-fpload2k8,(athlon-fstore*2)") |
895 (and (eq_attr "amdfam10_decode" "direct") | 894 (and (eq_attr "amdfam10_decode" "direct") |
896 (and (eq_attr "mode" "V2DF,V4SF,TI") | 895 (and (eq_attr "mode" "V2DF,V4SF,TI") |
897 (eq_attr "memory" "load"))))) | 896 (eq_attr "memory" "load"))))) |
898 "athlon-direct,athlon-fploadk8,athlon-fstore") | 897 "athlon-direct,athlon-fploadk8,athlon-fstore") |
899 (define_insn_reservation "athlon_ssecvt_cvtps2pd_k8" 3 | 898 (define_insn_reservation "athlon_ssecvt_cvtps2pd_k8" 3 |
900 (and (eq_attr "cpu" "k8,athlon,generic64") | 899 (and (eq_attr "cpu" "k8,athlon,generic") |
901 (and (eq_attr "type" "ssecvt") | 900 (and (eq_attr "type" "ssecvt") |
902 (and (eq_attr "athlon_decode" "double") | 901 (and (eq_attr "athlon_decode" "double") |
903 (eq_attr "mode" "V2DF,V4SF,TI")))) | 902 (eq_attr "mode" "V2DF,V4SF,TI")))) |
904 "athlon-double,athlon-fpsched,athlon-fstore,athlon-fstore") | 903 "athlon-double,athlon-fpsched,athlon-fstore,athlon-fstore") |
905 (define_insn_reservation "athlon_ssecvt_cvtps2pd_amdfam10" 2 | 904 (define_insn_reservation "athlon_ssecvt_cvtps2pd_amdfam10" 2 |
931 (and (eq_attr "athlon_decode" "double") | 930 (and (eq_attr "athlon_decode" "double") |
932 (and (eq_attr "mode" "SF,DF") | 931 (and (eq_attr "mode" "SF,DF") |
933 (eq_attr "memory" "load"))))) | 932 (eq_attr "memory" "load"))))) |
934 "athlon-vector,athlon-fpload,(athlon-fstore*2)") | 933 "athlon-vector,athlon-fpload,(athlon-fstore*2)") |
935 (define_insn_reservation "athlon_sseicvt_cvtsi2ss_load_k8" 9 | 934 (define_insn_reservation "athlon_sseicvt_cvtsi2ss_load_k8" 9 |
936 (and (eq_attr "cpu" "k8,generic64") | 935 (and (eq_attr "cpu" "k8,generic") |
937 (and (eq_attr "type" "sseicvt") | 936 (and (eq_attr "type" "sseicvt") |
938 (and (eq_attr "athlon_decode" "double") | 937 (and (eq_attr "athlon_decode" "double") |
939 (and (eq_attr "mode" "SF,DF") | 938 (and (eq_attr "mode" "SF,DF") |
940 (eq_attr "memory" "load"))))) | 939 (eq_attr "memory" "load"))))) |
941 "athlon-double,athlon-fploadk8,(athlon-fstore*2)") | 940 "athlon-double,athlon-fploadk8,(athlon-fstore*2)") |
946 (and (eq_attr "mode" "SF,DF") | 945 (and (eq_attr "mode" "SF,DF") |
947 (eq_attr "memory" "load"))))) | 946 (eq_attr "memory" "load"))))) |
948 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") | 947 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") |
949 ;; cvtsi2sd reg,reg is double decoded (vector on Athlon) | 948 ;; cvtsi2sd reg,reg is double decoded (vector on Athlon) |
950 (define_insn_reservation "athlon_sseicvt_cvtsi2sd_k8" 11 | 949 (define_insn_reservation "athlon_sseicvt_cvtsi2sd_k8" 11 |
951 (and (eq_attr "cpu" "k8,athlon,generic64") | 950 (and (eq_attr "cpu" "k8,athlon,generic") |
952 (and (eq_attr "type" "sseicvt") | 951 (and (eq_attr "type" "sseicvt") |
953 (and (eq_attr "athlon_decode" "double") | 952 (and (eq_attr "athlon_decode" "double") |
954 (and (eq_attr "mode" "SF,DF") | 953 (and (eq_attr "mode" "SF,DF") |
955 (eq_attr "memory" "none"))))) | 954 (eq_attr "memory" "none"))))) |
956 "athlon-double,athlon-fploadk8,athlon-fstore") | 955 "athlon-double,athlon-fploadk8,athlon-fstore") |
961 (and (eq_attr "mode" "SF,DF") | 960 (and (eq_attr "mode" "SF,DF") |
962 (eq_attr "memory" "none"))))) | 961 (eq_attr "memory" "none"))))) |
963 "athlon-vector,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") | 962 "athlon-vector,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") |
964 ;; cvtsi2ss reg, reg is doublepath | 963 ;; cvtsi2ss reg, reg is doublepath |
965 (define_insn_reservation "athlon_sseicvt_cvtsi2ss" 14 | 964 (define_insn_reservation "athlon_sseicvt_cvtsi2ss" 14 |
966 (and (eq_attr "cpu" "athlon,k8,generic64") | 965 (and (eq_attr "cpu" "athlon,k8,generic") |
967 (and (eq_attr "type" "sseicvt") | 966 (and (eq_attr "type" "sseicvt") |
968 (and (eq_attr "athlon_decode" "vector") | 967 (and (eq_attr "athlon_decode" "vector") |
969 (and (eq_attr "mode" "SF,DF") | 968 (and (eq_attr "mode" "SF,DF") |
970 (eq_attr "memory" "none"))))) | 969 (eq_attr "memory" "none"))))) |
971 "athlon-vector,athlon-fploadk8,(athlon-fvector*2)") | 970 "athlon-vector,athlon-fploadk8,(athlon-fvector*2)") |
976 (and (eq_attr "mode" "SF,DF") | 975 (and (eq_attr "mode" "SF,DF") |
977 (eq_attr "memory" "none"))))) | 976 (eq_attr "memory" "none"))))) |
978 "athlon-vector,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") | 977 "athlon-vector,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") |
979 ;; cvtsd2ss mem,reg is doublepath, troughput unknown, latency 9 | 978 ;; cvtsd2ss mem,reg is doublepath, troughput unknown, latency 9 |
980 (define_insn_reservation "athlon_ssecvt_cvtsd2ss_load_k8" 9 | 979 (define_insn_reservation "athlon_ssecvt_cvtsd2ss_load_k8" 9 |
981 (and (eq_attr "cpu" "k8,athlon,generic64") | 980 (and (eq_attr "cpu" "k8,athlon,generic") |
982 (and (eq_attr "type" "ssecvt") | 981 (and (eq_attr "type" "ssecvt") |
983 (and (eq_attr "athlon_decode" "double") | 982 (and (eq_attr "athlon_decode" "double") |
984 (and (eq_attr "mode" "SF") | 983 (and (eq_attr "mode" "SF") |
985 (eq_attr "memory" "load"))))) | 984 (eq_attr "memory" "load"))))) |
986 "athlon-double,athlon-fploadk8,(athlon-fstore*3)") | 985 "athlon-double,athlon-fploadk8,(athlon-fstore*3)") |
991 (and (eq_attr "mode" "SF") | 990 (and (eq_attr "mode" "SF") |
992 (eq_attr "memory" "load"))))) | 991 (eq_attr "memory" "load"))))) |
993 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") | 992 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") |
994 ;; cvtsd2ss reg,reg is vectorpath, troughput unknown, latency 12 | 993 ;; cvtsd2ss reg,reg is vectorpath, troughput unknown, latency 12 |
995 (define_insn_reservation "athlon_ssecvt_cvtsd2ss" 12 | 994 (define_insn_reservation "athlon_ssecvt_cvtsd2ss" 12 |
996 (and (eq_attr "cpu" "athlon,k8,generic64") | 995 (and (eq_attr "cpu" "athlon,k8,generic") |
997 (and (eq_attr "type" "ssecvt") | 996 (and (eq_attr "type" "ssecvt") |
998 (and (eq_attr "athlon_decode" "vector") | 997 (and (eq_attr "athlon_decode" "vector") |
999 (and (eq_attr "mode" "SF") | 998 (and (eq_attr "mode" "SF") |
1000 (eq_attr "memory" "none"))))) | 999 (eq_attr "memory" "none"))))) |
1001 "athlon-vector,athlon-fpsched,(athlon-fvector*3)") | 1000 "athlon-vector,athlon-fpsched,(athlon-fvector*3)") |
1005 (and (eq_attr "amdfam10_decode" "vector") | 1004 (and (eq_attr "amdfam10_decode" "vector") |
1006 (and (eq_attr "mode" "SF") | 1005 (and (eq_attr "mode" "SF") |
1007 (eq_attr "memory" "none"))))) | 1006 (eq_attr "memory" "none"))))) |
1008 "athlon-vector,athlon-fpsched,athlon-faddmul,(athlon-fstore*2)") | 1007 "athlon-vector,athlon-fpsched,athlon-faddmul,(athlon-fstore*2)") |
1009 (define_insn_reservation "athlon_ssecvt_cvtpd2ps_load_k8" 8 | 1008 (define_insn_reservation "athlon_ssecvt_cvtpd2ps_load_k8" 8 |
1010 (and (eq_attr "cpu" "athlon,k8,generic64") | 1009 (and (eq_attr "cpu" "athlon,k8,generic") |
1011 (and (eq_attr "type" "ssecvt") | 1010 (and (eq_attr "type" "ssecvt") |
1012 (and (eq_attr "athlon_decode" "vector") | 1011 (and (eq_attr "athlon_decode" "vector") |
1013 (and (eq_attr "mode" "V4SF,V2DF,TI") | 1012 (and (eq_attr "mode" "V4SF,V2DF,TI") |
1014 (eq_attr "memory" "load"))))) | 1013 (eq_attr "memory" "load"))))) |
1015 "athlon-double,athlon-fpload2k8,(athlon-fstore*3)") | 1014 "athlon-double,athlon-fpload2k8,(athlon-fstore*3)") |
1021 (eq_attr "memory" "load"))))) | 1020 (eq_attr "memory" "load"))))) |
1022 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") | 1021 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)") |
1023 ;; cvtpd2ps mem,reg is vectorpath, troughput unknown, latency 10 | 1022 ;; cvtpd2ps mem,reg is vectorpath, troughput unknown, latency 10 |
1024 ;; ??? Why it is fater than cvtsd2ss? | 1023 ;; ??? Why it is fater than cvtsd2ss? |
1025 (define_insn_reservation "athlon_ssecvt_cvtpd2ps" 8 | 1024 (define_insn_reservation "athlon_ssecvt_cvtpd2ps" 8 |
1026 (and (eq_attr "cpu" "athlon,k8,generic64") | 1025 (and (eq_attr "cpu" "athlon,k8,generic") |
1027 (and (eq_attr "type" "ssecvt") | 1026 (and (eq_attr "type" "ssecvt") |
1028 (and (eq_attr "athlon_decode" "vector") | 1027 (and (eq_attr "athlon_decode" "vector") |
1029 (and (eq_attr "mode" "V4SF,V2DF,TI") | 1028 (and (eq_attr "mode" "V4SF,V2DF,TI") |
1030 (eq_attr "memory" "none"))))) | 1029 (eq_attr "memory" "none"))))) |
1031 "athlon-vector,athlon-fpsched,athlon-fvector*2") | 1030 "athlon-vector,athlon-fpsched,athlon-fvector*2") |
1036 (and (eq_attr "mode" "V4SF,V2DF,TI") | 1035 (and (eq_attr "mode" "V4SF,V2DF,TI") |
1037 (eq_attr "memory" "none"))))) | 1036 (eq_attr "memory" "none"))))) |
1038 "athlon-double,athlon-fpsched,(athlon-faddmul+athlon-fstore)") | 1037 "athlon-double,athlon-fpsched,(athlon-faddmul+athlon-fstore)") |
1039 ;; cvtsd2si mem,reg is doublepath, troughput 1, latency 9 | 1038 ;; cvtsd2si mem,reg is doublepath, troughput 1, latency 9 |
1040 (define_insn_reservation "athlon_secvt_cvtsX2si_load" 9 | 1039 (define_insn_reservation "athlon_secvt_cvtsX2si_load" 9 |
1041 (and (eq_attr "cpu" "athlon,k8,generic64") | 1040 (and (eq_attr "cpu" "athlon,k8,generic") |
1042 (and (eq_attr "type" "sseicvt") | 1041 (and (eq_attr "type" "sseicvt") |
1043 (and (eq_attr "athlon_decode" "vector") | 1042 (and (eq_attr "athlon_decode" "vector") |
1044 (and (eq_attr "mode" "SI,DI") | 1043 (and (eq_attr "mode" "SI,DI") |
1045 (eq_attr "memory" "load"))))) | 1044 (eq_attr "memory" "load"))))) |
1046 "athlon-vector,athlon-fploadk8,athlon-fvector") | 1045 "athlon-vector,athlon-fploadk8,athlon-fvector") |
1058 (and (eq_attr "athlon_decode" "double") | 1057 (and (eq_attr "athlon_decode" "double") |
1059 (and (eq_attr "mode" "SI,DI") | 1058 (and (eq_attr "mode" "SI,DI") |
1060 (eq_attr "memory" "none"))))) | 1059 (eq_attr "memory" "none"))))) |
1061 "athlon-vector,athlon-fpsched,athlon-fvector") | 1060 "athlon-vector,athlon-fpsched,athlon-fvector") |
1062 (define_insn_reservation "athlon_ssecvt_cvtsX2si_k8" 9 | 1061 (define_insn_reservation "athlon_ssecvt_cvtsX2si_k8" 9 |
1063 (and (eq_attr "cpu" "k8,generic64") | 1062 (and (eq_attr "cpu" "k8,generic") |
1064 (and (eq_attr "type" "sseicvt") | 1063 (and (eq_attr "type" "sseicvt") |
1065 (and (eq_attr "athlon_decode" "double") | 1064 (and (eq_attr "athlon_decode" "double") |
1066 (and (eq_attr "mode" "SI,DI") | 1065 (and (eq_attr "mode" "SI,DI") |
1067 (eq_attr "memory" "none"))))) | 1066 (eq_attr "memory" "none"))))) |
1068 "athlon-double,athlon-fpsched,athlon-fstore") | 1067 "athlon-double,athlon-fpsched,athlon-fstore") |
1096 (and (eq_attr "type" "ssemul") | 1095 (and (eq_attr "type" "ssemul") |
1097 (and (eq_attr "mode" "SF,DF") | 1096 (and (eq_attr "mode" "SF,DF") |
1098 (eq_attr "memory" "load")))) | 1097 (eq_attr "memory" "load")))) |
1099 "athlon-direct,athlon-fpload,athlon-fmul") | 1098 "athlon-direct,athlon-fpload,athlon-fmul") |
1100 (define_insn_reservation "athlon_ssemul_load_k8" 6 | 1099 (define_insn_reservation "athlon_ssemul_load_k8" 6 |
1101 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 1100 (and (eq_attr "cpu" "k8,generic,amdfam10") |
1102 (and (eq_attr "type" "ssemul") | 1101 (and (eq_attr "type" "ssemul") |
1103 (and (eq_attr "mode" "SF,DF") | 1102 (and (eq_attr "mode" "SF,DF") |
1104 (eq_attr "memory" "load")))) | 1103 (eq_attr "memory" "load")))) |
1105 "athlon-direct,athlon-fploadk8,athlon-fmul") | 1104 "athlon-direct,athlon-fploadk8,athlon-fmul") |
1106 (define_insn_reservation "athlon_ssemul" 4 | 1105 (define_insn_reservation "athlon_ssemul" 4 |
1107 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 1106 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
1108 (and (eq_attr "type" "ssemul") | 1107 (and (eq_attr "type" "ssemul") |
1109 (eq_attr "mode" "SF,DF"))) | 1108 (eq_attr "mode" "SF,DF"))) |
1110 "athlon-direct,athlon-fpsched,athlon-fmul") | 1109 "athlon-direct,athlon-fpsched,athlon-fmul") |
1111 (define_insn_reservation "athlon_ssemulvector_load" 5 | 1110 (define_insn_reservation "athlon_ssemulvector_load" 5 |
1112 (and (eq_attr "cpu" "athlon") | 1111 (and (eq_attr "cpu" "athlon") |
1113 (and (eq_attr "type" "ssemul") | 1112 (and (eq_attr "type" "ssemul") |
1114 (eq_attr "memory" "load"))) | 1113 (eq_attr "memory" "load"))) |
1115 "athlon-vector,athlon-fpload2,(athlon-fmul*2)") | 1114 "athlon-vector,athlon-fpload2,(athlon-fmul*2)") |
1116 (define_insn_reservation "athlon_ssemulvector_load_k8" 7 | 1115 (define_insn_reservation "athlon_ssemulvector_load_k8" 7 |
1117 (and (eq_attr "cpu" "k8,generic64") | 1116 (and (eq_attr "cpu" "k8,generic") |
1118 (and (eq_attr "type" "ssemul") | 1117 (and (eq_attr "type" "ssemul") |
1119 (eq_attr "memory" "load"))) | 1118 (eq_attr "memory" "load"))) |
1120 "athlon-double,athlon-fpload2k8,(athlon-fmul*2)") | 1119 "athlon-double,athlon-fpload2k8,(athlon-fmul*2)") |
1121 (define_insn_reservation "athlon_ssemulvector_load_amdfam10" 6 | 1120 (define_insn_reservation "athlon_ssemulvector_load_amdfam10" 6 |
1122 (and (eq_attr "cpu" "amdfam10") | 1121 (and (eq_attr "cpu" "amdfam10") |
1126 (define_insn_reservation "athlon_ssemulvector" 5 | 1125 (define_insn_reservation "athlon_ssemulvector" 5 |
1127 (and (eq_attr "cpu" "athlon") | 1126 (and (eq_attr "cpu" "athlon") |
1128 (eq_attr "type" "ssemul")) | 1127 (eq_attr "type" "ssemul")) |
1129 "athlon-vector,athlon-fpsched,(athlon-fmul*2)") | 1128 "athlon-vector,athlon-fpsched,(athlon-fmul*2)") |
1130 (define_insn_reservation "athlon_ssemulvector_k8" 5 | 1129 (define_insn_reservation "athlon_ssemulvector_k8" 5 |
1131 (and (eq_attr "cpu" "k8,generic64") | 1130 (and (eq_attr "cpu" "k8,generic") |
1132 (eq_attr "type" "ssemul")) | 1131 (eq_attr "type" "ssemul")) |
1133 "athlon-double,athlon-fpsched,(athlon-fmul*2)") | 1132 "athlon-double,athlon-fpsched,(athlon-fmul*2)") |
1134 (define_insn_reservation "athlon_ssemulvector_amdfam10" 4 | 1133 (define_insn_reservation "athlon_ssemulvector_amdfam10" 4 |
1135 (and (eq_attr "cpu" "amdfam10") | 1134 (and (eq_attr "cpu" "amdfam10") |
1136 (eq_attr "type" "ssemul")) | 1135 (eq_attr "type" "ssemul")) |
1141 (and (eq_attr "type" "ssediv") | 1140 (and (eq_attr "type" "ssediv") |
1142 (and (eq_attr "mode" "SF,DF") | 1141 (and (eq_attr "mode" "SF,DF") |
1143 (eq_attr "memory" "load")))) | 1142 (eq_attr "memory" "load")))) |
1144 "athlon-direct,athlon-fpload,athlon-fmul*17") | 1143 "athlon-direct,athlon-fpload,athlon-fmul*17") |
1145 (define_insn_reservation "athlon_ssediv_load_k8" 22 | 1144 (define_insn_reservation "athlon_ssediv_load_k8" 22 |
1146 (and (eq_attr "cpu" "k8,generic64,amdfam10") | 1145 (and (eq_attr "cpu" "k8,generic,amdfam10") |
1147 (and (eq_attr "type" "ssediv") | 1146 (and (eq_attr "type" "ssediv") |
1148 (and (eq_attr "mode" "SF,DF") | 1147 (and (eq_attr "mode" "SF,DF") |
1149 (eq_attr "memory" "load")))) | 1148 (eq_attr "memory" "load")))) |
1150 "athlon-direct,athlon-fploadk8,athlon-fmul*17") | 1149 "athlon-direct,athlon-fploadk8,athlon-fmul*17") |
1151 (define_insn_reservation "athlon_ssediv" 20 | 1150 (define_insn_reservation "athlon_ssediv" 20 |
1152 (and (eq_attr "cpu" "athlon,k8,generic64,amdfam10") | 1151 (and (eq_attr "cpu" "athlon,k8,generic,amdfam10") |
1153 (and (eq_attr "type" "ssediv") | 1152 (and (eq_attr "type" "ssediv") |
1154 (eq_attr "mode" "SF,DF"))) | 1153 (eq_attr "mode" "SF,DF"))) |
1155 "athlon-direct,athlon-fpsched,athlon-fmul*17") | 1154 "athlon-direct,athlon-fpsched,athlon-fmul*17") |
1156 (define_insn_reservation "athlon_ssedivvector_load" 39 | 1155 (define_insn_reservation "athlon_ssedivvector_load" 39 |
1157 (and (eq_attr "cpu" "athlon") | 1156 (and (eq_attr "cpu" "athlon") |
1158 (and (eq_attr "type" "ssediv") | 1157 (and (eq_attr "type" "ssediv") |
1159 (eq_attr "memory" "load"))) | 1158 (eq_attr "memory" "load"))) |
1160 "athlon-vector,athlon-fpload2,athlon-fmul*34") | 1159 "athlon-vector,athlon-fpload2,athlon-fmul*34") |
1161 (define_insn_reservation "athlon_ssedivvector_load_k8" 35 | 1160 (define_insn_reservation "athlon_ssedivvector_load_k8" 35 |
1162 (and (eq_attr "cpu" "k8,generic64") | 1161 (and (eq_attr "cpu" "k8,generic") |
1163 (and (eq_attr "type" "ssediv") | 1162 (and (eq_attr "type" "ssediv") |
1164 (eq_attr "memory" "load"))) | 1163 (eq_attr "memory" "load"))) |
1165 "athlon-double,athlon-fpload2k8,athlon-fmul*34") | 1164 "athlon-double,athlon-fpload2k8,athlon-fmul*34") |
1166 (define_insn_reservation "athlon_ssedivvector_load_amdfam10" 22 | 1165 (define_insn_reservation "athlon_ssedivvector_load_amdfam10" 22 |
1167 (and (eq_attr "cpu" "amdfam10") | 1166 (and (eq_attr "cpu" "amdfam10") |
1171 (define_insn_reservation "athlon_ssedivvector" 39 | 1170 (define_insn_reservation "athlon_ssedivvector" 39 |
1172 (and (eq_attr "cpu" "athlon") | 1171 (and (eq_attr "cpu" "athlon") |
1173 (eq_attr "type" "ssediv")) | 1172 (eq_attr "type" "ssediv")) |
1174 "athlon-vector,athlon-fmul*34") | 1173 "athlon-vector,athlon-fmul*34") |
1175 (define_insn_reservation "athlon_ssedivvector_k8" 39 | 1174 (define_insn_reservation "athlon_ssedivvector_k8" 39 |
1176 (and (eq_attr "cpu" "k8,generic64") | 1175 (and (eq_attr "cpu" "k8,generic") |
1177 (eq_attr "type" "ssediv")) | 1176 (eq_attr "type" "ssediv")) |
1178 "athlon-double,athlon-fmul*34") | 1177 "athlon-double,athlon-fmul*34") |
1179 (define_insn_reservation "athlon_ssedivvector_amdfam10" 20 | 1178 (define_insn_reservation "athlon_ssedivvector_amdfam10" 20 |
1180 (and (eq_attr "cpu" "amdfam10") | 1179 (and (eq_attr "cpu" "amdfam10") |
1181 (eq_attr "type" "ssediv")) | 1180 (eq_attr "type" "ssediv")) |