Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/aarch64/thunderx2t99.md @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 ;; Cavium ThunderX 2 CN99xx pipeline description | 1 ;; Cavium ThunderX 2 CN99xx pipeline description |
2 ;; Copyright (C) 2016-2017 Free Software Foundation, Inc. | 2 ;; Copyright (C) 2016-2018 Free Software Foundation, Inc. |
3 ;; | 3 ;; |
4 ;; Contributed by Cavium, Broadcom and Mentor Embedded. | 4 ;; Contributed by Cavium, Broadcom and Mentor Embedded. |
5 | 5 |
6 ;; This file is part of GCC. | 6 ;; This file is part of GCC. |
7 | 7 |
51 (define_cpu_unit "thunderx2t99_f1" "thunderx2t99_advsimd") | 51 (define_cpu_unit "thunderx2t99_f1" "thunderx2t99_advsimd") |
52 | 52 |
53 (define_reservation "thunderx2t99_i012" "thunderx2t99_i0|thunderx2t99_i1|thunderx2t99_i2") | 53 (define_reservation "thunderx2t99_i012" "thunderx2t99_i0|thunderx2t99_i1|thunderx2t99_i2") |
54 (define_reservation "thunderx2t99_ls01" "thunderx2t99_ls0|thunderx2t99_ls1") | 54 (define_reservation "thunderx2t99_ls01" "thunderx2t99_ls0|thunderx2t99_ls1") |
55 (define_reservation "thunderx2t99_f01" "thunderx2t99_f0|thunderx2t99_f1") | 55 (define_reservation "thunderx2t99_f01" "thunderx2t99_f0|thunderx2t99_f1") |
56 | |
57 (define_reservation "thunderx2t99_ls_both" "thunderx2t99_ls0+thunderx2t99_ls1") | |
58 | 56 |
59 ; A load with delay in the ls0/ls1 pipes. | 57 ; A load with delay in the ls0/ls1 pipes. |
60 (define_reservation "thunderx2t99_l0delay" "thunderx2t99_ls0,\ | 58 (define_reservation "thunderx2t99_l0delay" "thunderx2t99_ls0,\ |
61 thunderx2t99_ls0d1,thunderx2t99_ls0d2,\ | 59 thunderx2t99_ls0d1,thunderx2t99_ls0d2,\ |
62 thunderx2t99_ls0d3") | 60 thunderx2t99_ls0d3") |
67 | 65 |
68 ;; Branch and call instructions. | 66 ;; Branch and call instructions. |
69 | 67 |
70 (define_insn_reservation "thunderx2t99_branch" 1 | 68 (define_insn_reservation "thunderx2t99_branch" 1 |
71 (and (eq_attr "tune" "thunderx2t99") | 69 (and (eq_attr "tune" "thunderx2t99") |
72 (eq_attr "type" "call,branch")) | 70 (eq_attr "type" "call,branch,trap")) |
73 "thunderx2t99_i2") | 71 "thunderx2t99_i2") |
72 | |
73 ;; Misc instructions. | |
74 | |
75 (define_insn_reservation "thunderx2t99_nothing" 0 | |
76 (and (eq_attr "tune" "thunderx2t99") | |
77 (eq_attr "type" "no_insn,block")) | |
78 "nothing") | |
79 | |
80 (define_insn_reservation "thunderx2t99_mrs" 0 | |
81 (and (eq_attr "tune" "thunderx2t99") | |
82 (eq_attr "type" "mrs")) | |
83 "thunderx2t99_i2") | |
84 | |
85 (define_insn_reservation "thunderx2t99_multiple" 1 | |
86 (and (eq_attr "tune" "thunderx2t99") | |
87 (eq_attr "type" "multiple,untyped")) | |
88 "thunderx2t99_i0+thunderx2t99_i1+thunderx2t99_i2+thunderx2t99_ls0+\ | |
89 thunderx2t99_ls1+thunderx2t99_sd+thunderx2t99_i1m1+thunderx2t99_i1m2+\ | |
90 thunderx2t99_i1m3+thunderx2t99_f0+thunderx2t99_f1") | |
74 | 91 |
75 ;; Integer arithmetic/logic instructions. | 92 ;; Integer arithmetic/logic instructions. |
76 | 93 |
77 ; Plain register moves are handled by renaming, and don't create any uops. | 94 ; Plain register moves are handled by renaming, and don't create any uops. |
78 | 95 |
85 (and (eq_attr "tune" "thunderx2t99") | 102 (and (eq_attr "tune" "thunderx2t99") |
86 (eq_attr "type" "alu_imm,alu_sreg,alus_imm,alus_sreg,\ | 103 (eq_attr "type" "alu_imm,alu_sreg,alus_imm,alus_sreg,\ |
87 adc_reg,adc_imm,adcs_reg,adcs_imm,\ | 104 adc_reg,adc_imm,adcs_reg,adcs_imm,\ |
88 logic_reg,logic_imm,logics_reg,logics_imm,\ | 105 logic_reg,logic_imm,logics_reg,logics_imm,\ |
89 csel,adr,mov_imm,shift_reg,shift_imm,bfm,\ | 106 csel,adr,mov_imm,shift_reg,shift_imm,bfm,\ |
90 rbit,rev,extend,rotate_imm")) | 107 bfx,rbit,rev,extend,rotate_imm")) |
91 "thunderx2t99_i012") | 108 "thunderx2t99_i012") |
92 | 109 |
93 (define_insn_reservation "thunderx2t99_alu_shift" 2 | 110 (define_insn_reservation "thunderx2t99_alu_shift" 2 |
94 (and (eq_attr "tune" "thunderx2t99") | 111 (and (eq_attr "tune" "thunderx2t99") |
95 (eq_attr "type" "alu_shift_imm,alu_ext,alu_shift_reg,\ | 112 (eq_attr "type" "alu_shift_imm,alu_ext,\ |
96 alus_shift_imm,alus_ext,alus_shift_reg,\ | 113 alus_shift_imm,alus_ext,\ |
97 logic_shift_imm,logics_shift_reg")) | 114 logic_shift_imm,logics_shift_imm")) |
98 "thunderx2t99_i012,thunderx2t99_i012") | 115 "thunderx2t99_i012,thunderx2t99_i012") |
99 | 116 |
100 (define_insn_reservation "thunderx2t99_div" 13 | 117 (define_insn_reservation "thunderx2t99_div" 13 |
101 (and (eq_attr "tune" "thunderx2t99") | 118 (and (eq_attr "tune" "thunderx2t99") |
102 (eq_attr "type" "sdiv,udiv")) | 119 (eq_attr "type" "sdiv,udiv")) |
153 (eq_attr "type" "fadds,faddd")) | 170 (eq_attr "type" "fadds,faddd")) |
154 "thunderx2t99_f01") | 171 "thunderx2t99_f01") |
155 | 172 |
156 (define_insn_reservation "thunderx2t99_fp_cmp" 5 | 173 (define_insn_reservation "thunderx2t99_fp_cmp" 5 |
157 (and (eq_attr "tune" "thunderx2t99") | 174 (and (eq_attr "tune" "thunderx2t99") |
158 (eq_attr "type" "fcmps,fcmpd")) | 175 (eq_attr "type" "fcmps,fcmpd,fccmps,fccmpd")) |
159 "thunderx2t99_f01") | 176 "thunderx2t99_f01") |
160 | 177 |
161 (define_insn_reservation "thunderx2t99_fp_divsqrt_s" 16 | 178 (define_insn_reservation "thunderx2t99_fp_divsqrt_s" 16 |
162 (and (eq_attr "tune" "thunderx2t99") | 179 (and (eq_attr "tune" "thunderx2t99") |
163 (eq_attr "type" "fdivs,fsqrts")) | 180 (eq_attr "type" "fdivs,fsqrts")) |
205 (define_insn_reservation "thunderx2t99_fp_load_basic" 4 | 222 (define_insn_reservation "thunderx2t99_fp_load_basic" 4 |
206 (and (eq_attr "tune" "thunderx2t99") | 223 (and (eq_attr "tune" "thunderx2t99") |
207 (eq_attr "type" "f_loads,f_loadd")) | 224 (eq_attr "type" "f_loads,f_loadd")) |
208 "thunderx2t99_ls01") | 225 "thunderx2t99_ls01") |
209 | 226 |
210 (define_insn_reservation "thunderx2t99_fp_loadpair_basic" 4 | |
211 (and (eq_attr "tune" "thunderx2t99") | |
212 (eq_attr "type" "neon_load1_2reg")) | |
213 "thunderx2t99_ls01*2") | |
214 | |
215 (define_insn_reservation "thunderx2t99_fp_store_basic" 1 | 227 (define_insn_reservation "thunderx2t99_fp_store_basic" 1 |
216 (and (eq_attr "tune" "thunderx2t99") | 228 (and (eq_attr "tune" "thunderx2t99") |
217 (eq_attr "type" "f_stores,f_stored")) | 229 (eq_attr "type" "f_stores,f_stored")) |
218 "thunderx2t99_ls01,thunderx2t99_sd") | 230 "thunderx2t99_ls01,thunderx2t99_sd") |
219 | |
220 (define_insn_reservation "thunderx2t99_fp_storepair_basic" 1 | |
221 (and (eq_attr "tune" "thunderx2t99") | |
222 (eq_attr "type" "neon_store1_2reg")) | |
223 "thunderx2t99_ls01,(thunderx2t99_ls01+thunderx2t99_sd),thunderx2t99_sd") | |
224 | 231 |
225 ;; ASIMD integer instructions. | 232 ;; ASIMD integer instructions. |
226 | 233 |
227 (define_insn_reservation "thunderx2t99_asimd_int" 7 | 234 (define_insn_reservation "thunderx2t99_asimd_int" 7 |
228 (and (eq_attr "tune" "thunderx2t99") | 235 (and (eq_attr "tune" "thunderx2t99") |
229 (eq_attr "type" "neon_abd,neon_abd_q,\ | 236 (eq_attr "type" "neon_abd,neon_abd_q,\ |
230 neon_arith_acc,neon_arith_acc_q,\ | 237 neon_arith_acc,neon_arith_acc_q,\ |
231 neon_abs,neon_abs_q,\ | 238 neon_abs,neon_abs_q,\ |
232 neon_add,neon_add_q,\ | 239 neon_add,neon_add_q,\ |
240 neon_sub,neon_sub_q,\ | |
233 neon_neg,neon_neg_q,\ | 241 neon_neg,neon_neg_q,\ |
234 neon_add_long,neon_add_widen,\ | 242 neon_add_long,neon_add_widen,\ |
235 neon_add_halve,neon_add_halve_q,\ | 243 neon_add_halve,neon_add_halve_q,\ |
236 neon_sub_long,neon_sub_widen,\ | 244 neon_sub_long,neon_sub_widen,\ |
237 neon_sub_halve,neon_sub_halve_q,\ | 245 neon_sub_halve,neon_sub_halve_q,\ |
278 (define_insn_reservation "thunderx2t99_asimd_logic" 5 | 286 (define_insn_reservation "thunderx2t99_asimd_logic" 5 |
279 (and (eq_attr "tune" "thunderx2t99") | 287 (and (eq_attr "tune" "thunderx2t99") |
280 (eq_attr "type" "neon_logic,neon_logic_q")) | 288 (eq_attr "type" "neon_logic,neon_logic_q")) |
281 "thunderx2t99_f01") | 289 "thunderx2t99_f01") |
282 | 290 |
283 (define_insn_reservation "thunderx2t99_asimd_polynomial" 5 | |
284 (and (eq_attr "tune" "thunderx2t99") | |
285 (eq_attr "type" "neon_mul_d_long")) | |
286 "thunderx2t99_f01") | |
287 | |
288 ;; ASIMD floating-point instructions. | 291 ;; ASIMD floating-point instructions. |
289 | 292 |
290 (define_insn_reservation "thunderx2t99_asimd_fp_simple" 5 | 293 (define_insn_reservation "thunderx2t99_asimd_fp_simple" 5 |
291 (and (eq_attr "tune" "thunderx2t99") | 294 (and (eq_attr "tune" "thunderx2t99") |
292 (eq_attr "type" "neon_fp_abs_s,neon_fp_abs_d,\ | 295 (eq_attr "type" "neon_fp_abs_s,neon_fp_abs_d,\ |
309 neon_fp_addsub_s_q,neon_fp_addsub_d_q,\ | 312 neon_fp_addsub_s_q,neon_fp_addsub_d_q,\ |
310 neon_fp_reduc_add_s,neon_fp_reduc_add_d,\ | 313 neon_fp_reduc_add_s,neon_fp_reduc_add_d,\ |
311 neon_fp_reduc_add_s_q,neon_fp_reduc_add_d_q,\ | 314 neon_fp_reduc_add_s_q,neon_fp_reduc_add_d_q,\ |
312 neon_fp_mul_s,neon_fp_mul_d,\ | 315 neon_fp_mul_s,neon_fp_mul_d,\ |
313 neon_fp_mul_s_q,neon_fp_mul_d_q,\ | 316 neon_fp_mul_s_q,neon_fp_mul_d_q,\ |
317 neon_fp_mul_s_scalar_q,neon_fp_mul_d_scalar_q,\ | |
314 neon_fp_mla_s,neon_fp_mla_d,\ | 318 neon_fp_mla_s,neon_fp_mla_d,\ |
315 neon_fp_mla_s_q,neon_fp_mla_d_q")) | 319 neon_fp_mla_s_q,neon_fp_mla_d_q")) |
316 "thunderx2t99_f01") | 320 "thunderx2t99_f01") |
317 | 321 |
318 (define_insn_reservation "thunderx2t99_asimd_fp_conv" 7 | 322 (define_insn_reservation "thunderx2t99_asimd_fp_conv" 7 |
319 (and (eq_attr "tune" "thunderx2t99") | 323 (and (eq_attr "tune" "thunderx2t99") |
320 (eq_attr "type" "neon_fp_cvt_widen_s,neon_fp_cvt_narrow_d_q,\ | 324 (eq_attr "type" "neon_fp_cvt_widen_s,neon_fp_cvt_narrow_d_q,\ |
321 neon_fp_to_int_s,neon_fp_to_int_d,\ | 325 neon_fp_to_int_s,neon_fp_to_int_d,\ |
322 neon_fp_to_int_s_q,neon_fp_to_int_d_q,\ | 326 neon_fp_to_int_s_q,neon_fp_to_int_d_q,\ |
327 neon_int_to_fp_s,neon_int_to_fp_d,\ | |
328 neon_int_to_fp_s_q,neon_int_to_fp_d_q,\ | |
323 neon_fp_round_s,neon_fp_round_d,\ | 329 neon_fp_round_s,neon_fp_round_d,\ |
324 neon_fp_round_s_q,neon_fp_round_d_q")) | 330 neon_fp_round_s_q,neon_fp_round_d_q")) |
325 "thunderx2t99_f01") | 331 "thunderx2t99_f01") |
326 | 332 |
327 (define_insn_reservation "thunderx2t99_asimd_fp_div_s" 16 | 333 (define_insn_reservation "thunderx2t99_asimd_fp_div_s" 16 |
350 neon_fp_recpe_s,neon_fp_recpe_d,\ | 356 neon_fp_recpe_s,neon_fp_recpe_d,\ |
351 neon_fp_recpe_s_q,neon_fp_recpe_d_q,\ | 357 neon_fp_recpe_s_q,neon_fp_recpe_d_q,\ |
352 neon_fp_recpx_s,neon_fp_recpx_d,\ | 358 neon_fp_recpx_s,neon_fp_recpx_d,\ |
353 neon_fp_recpx_s_q,neon_fp_recpx_d_q,\ | 359 neon_fp_recpx_s_q,neon_fp_recpx_d_q,\ |
354 neon_rev,neon_rev_q,\ | 360 neon_rev,neon_rev_q,\ |
355 neon_dup,neon_dup_q,\ | |
356 neon_permute,neon_permute_q")) | 361 neon_permute,neon_permute_q")) |
357 "thunderx2t99_f01") | 362 "thunderx2t99_f01") |
358 | 363 |
359 (define_insn_reservation "thunderx2t99_asimd_recip_step" 6 | 364 (define_insn_reservation "thunderx2t99_asimd_recip_step" 6 |
360 (and (eq_attr "tune" "thunderx2t99") | 365 (and (eq_attr "tune" "thunderx2t99") |
361 (eq_attr "type" "neon_fp_recps_s,neon_fp_recps_s_q,\ | 366 (eq_attr "type" "neon_fp_recps_s,neon_fp_recps_s_q,\ |
362 neon_fp_recps_d,neon_fp_recps_d_q,\ | 367 neon_fp_recps_d,neon_fp_recps_d_q,\ |
368 neon_fp_sqrt_s,neon_fp_sqrt_s_q,\ | |
369 neon_fp_sqrt_d,neon_fp_sqrt_d_q,\ | |
370 neon_fp_rsqrte_s, neon_fp_rsqrte_s_q,\ | |
371 neon_fp_rsqrte_d, neon_fp_rsqrte_d_q,\ | |
363 neon_fp_rsqrts_s, neon_fp_rsqrts_s_q,\ | 372 neon_fp_rsqrts_s, neon_fp_rsqrts_s_q,\ |
364 neon_fp_rsqrts_d, neon_fp_rsqrts_d_q")) | 373 neon_fp_rsqrts_d, neon_fp_rsqrts_d_q")) |
365 "thunderx2t99_f01") | 374 "thunderx2t99_f01") |
366 | 375 |
367 (define_insn_reservation "thunderx2t99_asimd_lut" 8 | 376 (define_insn_reservation "thunderx2t99_asimd_lut" 8 |
368 (and (eq_attr "tune" "thunderx2t99") | 377 (and (eq_attr "tune" "thunderx2t99") |
369 (eq_attr "type" "neon_tbl1,neon_tbl1_q,neon_tbl2_q")) | 378 (eq_attr "type" "neon_tbl1,neon_tbl1_q,neon_tbl2,neon_tbl2_q,\ |
379 neon_tbl3,neon_tbl3_q,neon_tbl4,neon_tbl4_q")) | |
370 "thunderx2t99_f01") | 380 "thunderx2t99_f01") |
371 | 381 |
372 (define_insn_reservation "thunderx2t99_asimd_elt_to_gr" 6 | 382 (define_insn_reservation "thunderx2t99_asimd_elt_to_gr" 6 |
373 (and (eq_attr "tune" "thunderx2t99") | 383 (and (eq_attr "tune" "thunderx2t99") |
374 (eq_attr "type" "neon_to_gp,neon_to_gp_q")) | 384 (eq_attr "type" "neon_to_gp,neon_to_gp_q")) |
375 "thunderx2t99_f01") | |
376 | |
377 (define_insn_reservation "thunderx2t99_asimd_ext" 7 | |
378 (and (eq_attr "tune" "thunderx2t99") | |
379 (eq_attr "type" "neon_shift_imm_narrow_q,neon_sat_shift_imm_narrow_q")) | |
380 "thunderx2t99_f01") | 385 "thunderx2t99_f01") |
381 | 386 |
382 ;; ASIMD load instructions. | 387 ;; ASIMD load instructions. |
383 | 388 |
384 ; NOTE: These reservations attempt to model latency and throughput correctly, | 389 ; NOTE: These reservations attempt to model latency and throughput correctly, |
385 ; but the cycle timing of unit allocation is not necessarily accurate (because | 390 ; but the cycle timing of unit allocation is not necessarily accurate (because |
386 ; insns are split into uops, and those may be issued out-of-order). | 391 ; insns are split into uops, and those may be issued out-of-order). |
387 | 392 |
388 (define_insn_reservation "thunderx2t99_asimd_load1_1_mult" 4 | 393 (define_insn_reservation "thunderx2t99_asimd_load1_ldp" 5 |
389 (and (eq_attr "tune" "thunderx2t99") | 394 (and (eq_attr "tune" "thunderx2t99") |
390 (eq_attr "type" "neon_load1_1reg,neon_load1_1reg_q")) | 395 (eq_attr "type" "neon_ldp,neon_ldp_q")) |
396 "thunderx2t99_i012,thunderx2t99_ls01") | |
397 | |
398 (define_insn_reservation "thunderx2t99_asimd_load1" 4 | |
399 (and (eq_attr "tune" "thunderx2t99") | |
400 (eq_attr "type" "neon_load1_1reg,neon_load1_1reg_q,\ | |
401 neon_load1_2reg,neon_load1_2reg_q,\ | |
402 neon_load1_3reg,neon_load1_3reg_q,\ | |
403 neon_load1_4reg,neon_load1_4reg_q")) | |
391 "thunderx2t99_ls01") | 404 "thunderx2t99_ls01") |
392 | |
393 (define_insn_reservation "thunderx2t99_asimd_load1_2_mult" 4 | |
394 (and (eq_attr "tune" "thunderx2t99") | |
395 (eq_attr "type" "neon_load1_2reg,neon_load1_2reg_q")) | |
396 "thunderx2t99_ls_both") | |
397 | 405 |
398 (define_insn_reservation "thunderx2t99_asimd_load1_onelane" 5 | 406 (define_insn_reservation "thunderx2t99_asimd_load1_onelane" 5 |
399 (and (eq_attr "tune" "thunderx2t99") | 407 (and (eq_attr "tune" "thunderx2t99") |
400 (eq_attr "type" "neon_load1_one_lane,neon_load1_one_lane_q")) | 408 (eq_attr "type" "neon_load1_one_lane,neon_load1_one_lane_q")) |
401 "thunderx2t99_l01delay,thunderx2t99_f01") | 409 "thunderx2t99_l01delay,thunderx2t99_f01") |
408 (define_insn_reservation "thunderx2t99_asimd_load2" 5 | 416 (define_insn_reservation "thunderx2t99_asimd_load2" 5 |
409 (and (eq_attr "tune" "thunderx2t99") | 417 (and (eq_attr "tune" "thunderx2t99") |
410 (eq_attr "type" "neon_load2_2reg,neon_load2_2reg_q,\ | 418 (eq_attr "type" "neon_load2_2reg,neon_load2_2reg_q,\ |
411 neon_load2_one_lane,neon_load2_one_lane_q,\ | 419 neon_load2_one_lane,neon_load2_one_lane_q,\ |
412 neon_load2_all_lanes,neon_load2_all_lanes_q")) | 420 neon_load2_all_lanes,neon_load2_all_lanes_q")) |
413 "(thunderx2t99_l0delay,thunderx2t99_f01)|(thunderx2t99_l1delay,\ | 421 "thunderx2t99_l01delay,thunderx2t99_f01") |
414 thunderx2t99_f01)") | 422 |
423 (define_insn_reservation "thunderx2t99_asimd_load3" 7 | |
424 (and (eq_attr "tune" "thunderx2t99") | |
425 (eq_attr "type" "neon_load3_3reg,neon_load3_3reg_q,\ | |
426 neon_load3_one_lane,neon_load3_one_lane_q,\ | |
427 neon_load3_all_lanes,neon_load3_all_lanes_q")) | |
428 "thunderx2t99_l01delay,thunderx2t99_f01") | |
429 | |
430 (define_insn_reservation "thunderx2t99_asimd_load4" 8 | |
431 (and (eq_attr "tune" "thunderx2t99") | |
432 (eq_attr "type" "neon_load4_4reg,neon_load4_4reg_q,\ | |
433 neon_load4_one_lane,neon_load4_one_lane_q,\ | |
434 neon_load4_all_lanes,neon_load4_all_lanes_q")) | |
435 "thunderx2t99_l01delay,thunderx2t99_f01") | |
415 | 436 |
416 ;; ASIMD store instructions. | 437 ;; ASIMD store instructions. |
417 | 438 |
418 ; Same note applies as for ASIMD load instructions. | 439 ; Same note applies as for ASIMD load instructions. |
419 | 440 |
420 (define_insn_reservation "thunderx2t99_asimd_store1_1_mult" 1 | 441 (define_insn_reservation "thunderx2t99_asimd_store_stp" 1 |
421 (and (eq_attr "tune" "thunderx2t99") | 442 (and (eq_attr "tune" "thunderx2t99") |
422 (eq_attr "type" "neon_store1_1reg,neon_store1_1reg_q")) | 443 (eq_attr "type" "neon_stp,neon_stp_q")) |
444 "thunderx2t99_ls01,thunderx2t99_sd") | |
445 | |
446 (define_insn_reservation "thunderx2t99_asimd_store1" 1 | |
447 (and (eq_attr "tune" "thunderx2t99") | |
448 (eq_attr "type" "neon_store1_1reg,neon_store1_1reg_q,\ | |
449 neon_store1_2reg,neon_store1_2reg_q,\ | |
450 neon_store1_3reg,neon_store1_4reg")) | |
423 "thunderx2t99_ls01") | 451 "thunderx2t99_ls01") |
424 | |
425 (define_insn_reservation "thunderx2t99_asimd_store1_2_mult" 1 | |
426 (and (eq_attr "tune" "thunderx2t99") | |
427 (eq_attr "type" "neon_store1_2reg,neon_store1_2reg_q")) | |
428 "thunderx2t99_ls_both") | |
429 | 452 |
430 (define_insn_reservation "thunderx2t99_asimd_store1_onelane" 1 | 453 (define_insn_reservation "thunderx2t99_asimd_store1_onelane" 1 |
431 (and (eq_attr "tune" "thunderx2t99") | 454 (and (eq_attr "tune" "thunderx2t99") |
432 (eq_attr "type" "neon_store1_one_lane,neon_store1_one_lane_q")) | 455 (eq_attr "type" "neon_store1_one_lane,neon_store1_one_lane_q")) |
433 "thunderx2t99_ls01,thunderx2t99_f01") | 456 "thunderx2t99_ls01,thunderx2t99_f01") |
434 | 457 |
435 (define_insn_reservation "thunderx2t99_asimd_store2_mult" 1 | 458 (define_insn_reservation "thunderx2t99_asimd_store2" 1 |
436 (and (eq_attr "tune" "thunderx2t99") | 459 (and (eq_attr "tune" "thunderx2t99") |
437 (eq_attr "type" "neon_store2_2reg,neon_store2_2reg_q")) | 460 (eq_attr "type" "neon_store2_2reg,neon_store2_2reg_q,\ |
438 "thunderx2t99_ls_both,thunderx2t99_f01") | 461 neon_store2_one_lane,neon_store2_one_lane_q")) |
439 | 462 "thunderx2t99_ls01,thunderx2t99_f01") |
440 (define_insn_reservation "thunderx2t99_asimd_store2_onelane" 1 | 463 |
441 (and (eq_attr "tune" "thunderx2t99") | 464 (define_insn_reservation "thunderx2t99_asimd_store3" 1 |
442 (eq_attr "type" "neon_store2_one_lane,neon_store2_one_lane_q")) | 465 (and (eq_attr "tune" "thunderx2t99") |
466 (eq_attr "type" "neon_store3_3reg,neon_store3_3reg_q,\ | |
467 neon_store3_one_lane,neon_store3_one_lane_q")) | |
468 "thunderx2t99_ls01,thunderx2t99_f01") | |
469 | |
470 (define_insn_reservation "thunderx2t99_asimd_store4" 1 | |
471 (and (eq_attr "tune" "thunderx2t99") | |
472 (eq_attr "type" "neon_store4_4reg,neon_store4_4reg_q,\ | |
473 neon_store4_one_lane,neon_store4_one_lane_q")) | |
443 "thunderx2t99_ls01,thunderx2t99_f01") | 474 "thunderx2t99_ls01,thunderx2t99_f01") |
444 | 475 |
445 ;; Crypto extensions. | 476 ;; Crypto extensions. |
446 | 477 |
447 (define_insn_reservation "thunderx2t99_aes" 5 | 478 (define_insn_reservation "thunderx2t99_aes" 5 |