1;; Machine description for AppliedMicro xgene1 core. 2;; Copyright (C) 2012-2018 Free Software Foundation, Inc. 3;; Contributed by Theobroma Systems Design und Consulting GmbH. 4;; 5;; This file is part of GCC. 6;; 7;; GCC is free software; you can redistribute it and/or modify it 8;; under the terms of the GNU General Public License as published by 9;; the Free Software Foundation; either version 3, or (at your option) 10;; any later version. 11;; 12;; GCC is distributed in the hope that it will be useful, but 13;; WITHOUT ANY WARRANTY; without even the implied warranty of 14;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15;; General Public License for more details. 16;; 17;; You should have received a copy of the GNU General Public License 18;; along with GCC; see the file COPYING3. If not see 19;; <http://www.gnu.org/licenses/>. 20 21;; Pipeline description for the xgene1 micro-architecture 22 23(define_automaton "xgene1_main, xgene1_decoder, xgene1_div, xgene1_simd") 24 25(define_cpu_unit "xgene1_decode_out0" "xgene1_decoder") 26(define_cpu_unit "xgene1_decode_out1" "xgene1_decoder") 27(define_cpu_unit "xgene1_decode_out2" "xgene1_decoder") 28(define_cpu_unit "xgene1_decode_out3" "xgene1_decoder") 29 30(define_cpu_unit "xgene1_IXA" "xgene1_main") 31(define_cpu_unit "xgene1_IXB" "xgene1_main") 32(define_cpu_unit "xgene1_IXB_compl" "xgene1_main") 33 34(define_reservation "xgene1_IXn" "(xgene1_IXA | xgene1_IXB)") 35 36(define_cpu_unit "xgene1_multiply" "xgene1_main") 37(define_cpu_unit "xgene1_divide" "xgene1_div") 38(define_cpu_unit "xgene1_fp_divide" "xgene1_div") 39(define_cpu_unit "xgene1_fsu" "xgene1_simd") 40(define_cpu_unit "xgene1_fcmp" "xgene1_simd") 41(define_cpu_unit "xgene1_ld" "xgene1_main") 42(define_cpu_unit "xgene1_st" "xgene1_main") 43 44(define_reservation "xgene1_decode1op" 45 "( xgene1_decode_out0 ) 46 |( xgene1_decode_out1 ) 47 |( xgene1_decode_out2 ) 48 |( xgene1_decode_out3 )" 49) 50(define_reservation "xgene1_decode2op" 51 "( xgene1_decode_out0 + xgene1_decode_out1 ) 52 |( xgene1_decode_out0 + xgene1_decode_out2 ) 53 |( xgene1_decode_out0 + xgene1_decode_out3 ) 54 |( xgene1_decode_out1 + xgene1_decode_out2 ) 55 |( xgene1_decode_out1 + xgene1_decode_out3 ) 56 |( xgene1_decode_out2 + xgene1_decode_out3 )" 57) 58(define_reservation "xgene1_decodeIsolated" 59 "( xgene1_decode_out0 + xgene1_decode_out1 + xgene1_decode_out2 + xgene1_decode_out3 )" 60) 61 62(define_insn_reservation "xgene1_branch" 1 63 (and (eq_attr "tune" "xgene1") 64 (eq_attr "type" "branch")) 65 "xgene1_decode1op") 66 67(define_insn_reservation "xgene1_nop" 1 68 (and (eq_attr "tune" "xgene1") 69 (eq_attr "type" "no_insn")) 70 "xgene1_decode1op") 71 72(define_insn_reservation "xgene1_call" 1 73 (and (eq_attr "tune" "xgene1") 74 (eq_attr "type" "call")) 75 "xgene1_decode2op") 76 77(define_insn_reservation "xgene1_f_load" 10 78 (and (eq_attr "tune" "xgene1") 79 (eq_attr "type" "f_loadd,f_loads")) 80 "xgene1_decode2op, xgene1_ld") 81 82(define_insn_reservation "xgene1_f_store" 4 83 (and (eq_attr "tune" "xgene1") 84 (eq_attr "type" "f_stored,f_stores")) 85 "xgene1_decode2op, xgene1_st") 86 87(define_insn_reservation "xgene1_fmov" 2 88 (and (eq_attr "tune" "xgene1") 89 (eq_attr "type" "fmov,fconsts,fconstd")) 90 "xgene1_decode1op") 91 92(define_insn_reservation "xgene1_f_mcr" 10 93 (and (eq_attr "tune" "xgene1") 94 (eq_attr "type" "f_mcr")) 95 "xgene1_decodeIsolated") 96 97(define_insn_reservation "xgene1_f_mrc" 4 98 (and (eq_attr "tune" "xgene1") 99 (eq_attr "type" "f_mrc")) 100 "xgene1_decode2op") 101 102(define_insn_reservation "xgene1_load_pair" 6 103 (and (eq_attr "tune" "xgene1") 104 (eq_attr "type" "load_16")) 105 "xgene1_decodeIsolated, xgene1_ld*2") 106 107(define_insn_reservation "xgene1_store_pair" 2 108 (and (eq_attr "tune" "xgene1") 109 (eq_attr "type" "store_16")) 110 "xgene1_decodeIsolated, xgene1_st*2") 111 112(define_insn_reservation "xgene1_fp_load1" 10 113 (and (eq_attr "tune" "xgene1") 114 (eq_attr "type" "load_4, load_8") 115 (eq_attr "fp" "yes")) 116 "xgene1_decode1op, xgene1_ld") 117 118(define_insn_reservation "xgene1_load1" 5 119 (and (eq_attr "tune" "xgene1") 120 (eq_attr "type" "load_4, load_8")) 121 "xgene1_decode1op, xgene1_ld") 122 123(define_insn_reservation "xgene1_store1" 1 124 (and (eq_attr "tune" "xgene1") 125 (eq_attr "type" "store_4, store_8")) 126 "xgene1_decode1op, xgene1_st") 127 128(define_insn_reservation "xgene1_move" 1 129 (and (eq_attr "tune" "xgene1") 130 (eq_attr "type" "mov_reg,mov_imm,mrs")) 131 "xgene1_decode1op, xgene1_IXn") 132 133(define_insn_reservation "xgene1_alu_cond" 1 134 (and (eq_attr "tune" "xgene1") 135 (eq_attr "type" "csel")) 136 "xgene1_decode1op, xgene1_IXn") 137 138(define_insn_reservation "xgene1_alu" 1 139 (and (eq_attr "tune" "xgene1") 140 (eq_attr "type" "alu_imm,alu_sreg,alu_shift_imm,\ 141 alu_ext,adc_reg,logic_imm,\ 142 logic_reg,logic_shift_imm,clz,\ 143 rbit,adr,mov_reg,shift_imm,\ 144 mov_imm,extend,multiple")) 145 "xgene1_decode1op, xgene1_IXn") 146 147(define_insn_reservation "xgene1_shift_rotate" 2 148 (and (eq_attr "tune" "xgene1") 149 (eq_attr "type" "shift_reg")) 150 "xgene1_decode1op, xgene1_IXB, xgene1_IXB_compl") 151 152(define_insn_reservation "xgene1_simd" 2 153 (and (eq_attr "tune" "xgene1") 154 (eq_attr "type" "rev")) 155 "xgene1_decode1op, xgene1_IXB, xgene1_IXB_compl") 156 157(define_insn_reservation "xgene1_alus" 1 158 (and (eq_attr "tune" "xgene1") 159 (eq_attr "type" "alus_imm,alus_sreg,alus_shift_imm,\ 160 alus_ext,logics_imm,logics_reg,\ 161 logics_shift_imm")) 162 "xgene1_decode1op, xgene1_IXB, xgene1_IXB_compl") 163 164(define_bypass 2 "xgene1_alus" 165 "xgene1_alu_cond, xgene1_branch") 166 167(define_insn_reservation "xgene1_mul32" 4 168 (and (eq_attr "tune" "xgene1") 169 (eq_attr "mul32" "yes")) 170 "xgene1_decode2op, xgene1_IXB + xgene1_multiply, xgene1_multiply, nothing, xgene1_IXB_compl") 171 172(define_insn_reservation "xgene1_mul64" 5 173 (and (eq_attr "tune" "xgene1") 174 (eq_attr "mul64" "yes")) 175 "xgene1_decode2op, xgene1_IXB + xgene1_multiply, xgene1_multiply, nothing*2, xgene1_IXB_compl") 176 177(define_insn_reservation "xgene1_div" 34 178 (and (eq_attr "tune" "xgene1") 179 (eq_attr "type" "sdiv,udiv")) 180 "xgene1_decode1op, xgene1_IXB + xgene1_divide*7") 181 182(define_insn_reservation "xgene1_fcmp" 10 183 (and (eq_attr "tune" "xgene1") 184 (eq_attr "type" "fcmpd,fcmps,fccmpd,fccmps")) 185 "xgene1_decode1op, xgene1_fsu + xgene1_fcmp*3") 186 187(define_insn_reservation "xgene1_fcsel" 3 188 (and (eq_attr "tune" "xgene1") 189 (eq_attr "type" "fcsel")) 190 "xgene1_decode1op, xgene1_fsu") 191 192(define_insn_reservation "xgene1_bfx" 1 193 (and (eq_attr "tune" "xgene1") 194 (eq_attr "type" "bfx")) 195 "xgene1_decode1op, xgene1_IXn") 196 197(define_insn_reservation "xgene1_bfm" 2 198 (and (eq_attr "tune" "xgene1") 199 (eq_attr "type" "bfm")) 200 "xgene1_decode1op, xgene1_IXB, xgene1_IXB_compl") 201 202(define_insn_reservation "xgene1_f_rint" 5 203 (and (eq_attr "tune" "xgene1") 204 (eq_attr "type" "f_rintd,f_rints")) 205 "xgene1_decode1op, xgene1_fsu") 206 207(define_insn_reservation "xgene1_f_cvt" 3 208 (and (eq_attr "tune" "xgene1") 209 (eq_attr "type" "f_cvt")) 210 "xgene1_decode1op,xgene1_fsu") 211 212(define_insn_reservation "xgene1_f_cvtf2i" 11 213 (and (eq_attr "tune" "xgene1") 214 (eq_attr "type" "f_cvtf2i")) 215 "xgene1_decodeIsolated,xgene1_fsu") 216 217(define_insn_reservation "xgene1_f_cvti2f" 14 218 (and (eq_attr "tune" "xgene1") 219 (eq_attr "type" "f_cvti2f")) 220 "xgene1_decodeIsolated,xgene1_fsu") 221 222(define_insn_reservation "xgene1_f_add" 5 223 (and (eq_attr "tune" "xgene1") 224 (eq_attr "type" "faddd,fadds,fmuld,fmuls")) 225 "xgene1_decode1op,xgene1_fsu") 226 227(define_insn_reservation "xgene1_f_divs" 22 228 (and (eq_attr "tune" "xgene1") 229 (eq_attr "type" "fdivs,fsqrts")) 230 "xgene1_decode1op,(xgene1_fp_divide+xgene1_fsu)*8,xgene1_fp_divide*14") 231 232(define_insn_reservation "xgene1_f_divd" 28 233 (and (eq_attr "tune" "xgene1") 234 (eq_attr "type" "fdivd")) 235 "xgene1_decode1op,(xgene1_fp_divide+xgene1_fsu)*11,xgene1_fp_divide*17") 236 237(define_insn_reservation "xgene1_f_sqrtd" 28 238 (and (eq_attr "tune" "xgene1") 239 (eq_attr "type" "fsqrtd")) 240 "xgene1_decode1op,(xgene1_fp_divide+xgene1_fsu)*17,xgene1_fp_divide*11") 241 242(define_insn_reservation "xgene1_f_arith" 2 243 (and (eq_attr "tune" "xgene1") 244 (eq_attr "type" "ffarithd,ffariths")) 245 "xgene1_decode1op,xgene1_fsu") 246 247(define_insn_reservation "xgene1_f_select" 3 248 (and (eq_attr "tune" "xgene1") 249 (eq_attr "type" "f_minmaxd,f_minmaxs")) 250 "xgene1_decode1op,xgene1_fsu") 251 252(define_insn_reservation "xgene1_neon_dup" 3 253 (and (eq_attr "tune" "xgene1") 254 (eq_attr "type" "neon_dup,neon_dup_q")) 255 "xgene1_decode1op,xgene1_fsu") 256 257(define_insn_reservation "xgene1_neon_load1" 11 258 (and (eq_attr "tune" "xgene1") 259 (eq_attr "type" "neon_load1_1reg, neon_load1_1reg_q")) 260 "xgene1_decode2op, xgene1_ld") 261 262(define_insn_reservation "xgene1_neon_store1" 5 263 (and (eq_attr "tune" "xgene1") 264 (eq_attr "type" "neon_store1_1reg, neon_store1_1reg_q")) 265 "xgene1_decode2op, xgene1_st") 266 267(define_insn_reservation "xgene1_neon_logic" 2 268 (and (eq_attr "tune" "xgene1") 269 (eq_attr "type" "neon_logic,\ 270 neon_logic_q,\ 271 neon_bsl,\ 272 neon_bsl_q,\ 273 neon_move,\ 274 neon_move_q,\ 275 ")) 276 "xgene1_decode1op,xgene1_fsu") 277 278(define_insn_reservation "xgene1_neon_umov" 7 279 (and (eq_attr "tune" "xgene1") 280 (eq_attr "type" "neon_to_gp, neon_to_gp_q")) 281 "xgene1_decodeIsolated") 282 283(define_insn_reservation "xgene1_neon_ins" 14 284 (and (eq_attr "tune" "xgene1") 285 (eq_attr "type" "neon_from_gp,\ 286 neon_from_gp_q,\ 287 neon_ins,\ 288 neon_ins_q,\ 289 ")) 290 "xgene1_decodeIsolated,xgene1_fsu") 291 292(define_insn_reservation "xgene1_neon_shift" 3 293 (and (eq_attr "tune" "xgene1") 294 (eq_attr "type" "neon_shift_imm,\ 295 neon_shift_imm_q,\ 296 neon_shift_reg,\ 297 neon_shift_reg_q,\ 298 neon_shift_imm_long,\ 299 neon_sat_shift_imm,\ 300 neon_sat_shift_imm_q,\ 301 neon_sat_shift_imm_narrow_q,\ 302 neon_sat_shift_reg,\ 303 neon_sat_shift_reg_q,\ 304 neon_shift_imm_narrow_q,\ 305 ")) 306 "xgene1_decode1op,xgene1_fsu") 307 308(define_insn_reservation "xgene1_neon_arith" 3 309 (and (eq_attr "tune" "xgene1") 310 (eq_attr "type" "neon_add,\ 311 neon_add_q,\ 312 neon_sub,\ 313 neon_sub_q,\ 314 neon_neg,\ 315 neon_neg_q,\ 316 neon_abs,\ 317 neon_abs_q,\ 318 neon_abd_q,\ 319 neon_arith_acc,\ 320 neon_arith_acc_q,\ 321 neon_reduc_add,\ 322 neon_reduc_add_q,\ 323 neon_add_halve,\ 324 neon_add_halve_q,\ 325 neon_sub_halve,\ 326 neon_sub_halve_q,\ 327 neon_qadd,\ 328 neon_qadd_q,\ 329 neon_compare,\ 330 neon_compare_q,\ 331 neon_compare_zero,\ 332 neon_compare_zero_q,\ 333 neon_tst,\ 334 neon_tst_q,\ 335 neon_minmax,\ 336 neon_minmax_q,\ 337 ")) 338 "xgene1_decode1op,xgene1_fsu") 339 340(define_insn_reservation "xgene1_neon_abs_diff" 6 341 (and (eq_attr "tune" "xgene1") 342 (eq_attr "type" "neon_arith_acc,neon_arith_acc_q")) 343 "xgene1_decode2op,xgene1_fsu*2") 344 345(define_insn_reservation "xgene1_neon_mul" 5 346 (and (eq_attr "tune" "xgene1") 347 (eq_attr "type" "neon_mul_b,\ 348 neon_mul_b_q,\ 349 neon_mul_h,\ 350 neon_mul_h_q,\ 351 neon_mul_s,\ 352 neon_mul_s_q,\ 353 neon_fp_mul_s_scalar,\ 354 neon_fp_mul_s_scalar_q,\ 355 neon_fp_mul_d_scalar_q,\ 356 neon_mla_b,neon_mla_b_q,\ 357 neon_mla_h,neon_mla_h_q,\ 358 neon_mla_s,neon_mla_s_q,\ 359 neon_mla_h_scalar,\ 360 neon_mla_h_scalar_q,\ 361 neon_mla_s_scalar,\ 362 neon_mla_s_scalar_q,\ 363 neon_mla_b_long,\ 364 neon_mla_h_long,\ 365 neon_mla_s_long,\ 366 neon_fp_mul_s,\ 367 neon_fp_mul_s_q,\ 368 neon_fp_mul_d,\ 369 neon_fp_mul_d_q,\ 370 neon_fp_mla_s,\ 371 neon_fp_mla_s_q,\ 372 neon_fp_mla_d,\ 373 neon_fp_mla_d_q,\ 374 neon_fp_mla_s_scalar,\ 375 neon_fp_mla_s_scalar_q,\ 376 neon_fp_mla_d_scalar_q,\ 377 neon_sat_mul_b,\ 378 neon_sat_mul_b_q,\ 379 neon_sat_mul_h,\ 380 neon_sat_mul_h_q,\ 381 neon_sat_mul_s,\ 382 neon_sat_mul_s_q,\ 383 neon_sat_mul_h_scalar,\ 384 neon_sat_mul_h_scalar_q,\ 385 neon_sat_mul_s_scalar,\ 386 neon_sat_mul_s_scalar_q,\ 387 neon_sat_mul_h_scalar_long,\ 388 neon_sat_mul_s_scalar_long,\ 389 neon_sat_mla_b_long,\ 390 neon_sat_mla_h_long,\ 391 neon_sat_mla_s_long,\ 392 neon_sat_mla_h_scalar_long,\ 393 neon_sat_mla_s_scalar_long,\ 394 ")) 395 "xgene1_decode2op,xgene1_fsu*2") 396 397(define_insn_reservation "xgene1_fp_abd_diff" 5 398 (and (eq_attr "tune" "xgene1") 399 (eq_attr "type" "neon_fp_abd_s,\ 400 neon_fp_abd_s_q,\ 401 neon_fp_abd_d,\ 402 neon_fp_abd_d_q,\ 403 ")) 404 "xgene1_decode1op,xgene1_fsu") 405 406(define_insn_reservation "xgene1_neon_f_add" 5 407 (and (eq_attr "tune" "xgene1") 408 (eq_attr "type" "neon_fp_addsub_s,\ 409 neon_fp_addsub_s_q,\ 410 neon_fp_addsub_d,\ 411 neon_fp_addsub_d_q,\ 412 ")) 413 "xgene1_decode1op") 414 415(define_insn_reservation "xgene1_neon_f_div" 2 416 (and (eq_attr "tune" "xgene1") 417 (eq_attr "type" "neon_fp_div_s,\ 418 neon_fp_div_s_q,\ 419 neon_fp_div_d,\ 420 neon_fp_div_d_q,\ 421 ")) 422 "xgene1_decode1op,(xgene1_fsu+xgene1_fp_divide)") 423 424(define_insn_reservation "xgene1_neon_f_neg" 2 425 (and (eq_attr "tune" "xgene1") 426 (eq_attr "type" "neon_fp_neg_s,\ 427 neon_fp_neg_s_q,\ 428 neon_fp_neg_d,\ 429 neon_fp_neg_d_q,\ 430 neon_fp_abs_s,\ 431 neon_fp_abs_s_q,\ 432 neon_fp_abs_d,\ 433 neon_fp_abs_d_q,\ 434 ")) 435 "xgene1_decode1op") 436 437(define_insn_reservation "xgene1_neon_f_round" 5 438 (and (eq_attr "tune" "xgene1") 439 (eq_attr "type" "neon_fp_round_s,\ 440 neon_fp_round_s_q,\ 441 neon_fp_round_d,\ 442 neon_fp_round_d_q,\ 443 ")) 444 "xgene1_decode1op") 445 446(define_insn_reservation "xgene1_neon_f_cvt" 5 447 (and (eq_attr "tune" "xgene1") 448 (eq_attr "type" "neon_int_to_fp_s,\ 449 neon_int_to_fp_s_q,\ 450 neon_int_to_fp_d,\ 451 neon_int_to_fp_d_q,\ 452 neon_fp_cvt_widen_s,\ 453 neon_fp_cvt_narrow_s_q,\ 454 neon_fp_cvt_narrow_d_q,\ 455 ")) 456 "xgene1_decode1op") 457 458(define_insn_reservation "xgene1_neon_f_reduc" 5 459 (and (eq_attr "tune" "xgene1") 460 (eq_attr "type" "neon_fp_reduc_add_s,\ 461 neon_fp_reduc_add_s_q,\ 462 neon_fp_reduc_add_d,\ 463 neon_fp_reduc_add_d_q,\ 464 ")) 465 "xgene1_decode1op") 466 467(define_insn_reservation "xgene1_neon_cls" 2 468 (and (eq_attr "tune" "xgene1") 469 (eq_attr "type" "neon_cls,neon_cls_q")) 470 "xgene1_decode1op") 471 472(define_insn_reservation "xgene1_neon_st1" 4 473 (and (eq_attr "tune" "xgene1") 474 (eq_attr "type" "neon_store1_one_lane,\ 475 neon_store1_one_lane_q,\ 476 neon_stp,\ 477 neon_stp_q,\ 478 ")) 479 "xgene1_decodeIsolated, xgene1_st") 480 481(define_insn_reservation "xgene1_neon_halve_narrow" 6 482 (and (eq_attr "tune" "xgene1") 483 (eq_attr "type" "neon_sub_halve_narrow_q,\ 484 neon_add_halve_narrow_q,\ 485 ")) 486 "xgene1_decodeIsolated") 487 488(define_insn_reservation "xgene1_neon_shift_acc" 6 489 (and (eq_attr "tune" "xgene1") 490 (eq_attr "type" "neon_shift_acc,\ 491 neon_shift_acc_q,\ 492 ")) 493 "xgene1_decode2op") 494 495(define_insn_reservation "xgene1_neon_fp_compare" 3 496 (and (eq_attr "tune" "xgene1") 497 (eq_attr "type" "neon_fp_compare_s,\ 498 neon_fp_compare_s_q,\ 499 neon_fp_compare_d,\ 500 neon_fp_compare_d_q,\ 501 ")) 502 "xgene1_decode1op") 503 504(define_insn_reservation "xgene1_neon_fp_sqrt" 2 505 (and (eq_attr "tune" "xgene1") 506 (eq_attr "type" "neon_fp_sqrt_s,\ 507 neon_fp_sqrt_s_q,\ 508 neon_fp_sqrt_d,\ 509 neon_fp_sqrt_d_q,\ 510 ")) 511 "xgene1_decode1op,(xgene1_fsu+xgene1_fp_divide)") 512 513(define_insn_reservation "xgene1_neon_tbl1" 4 514 (and (eq_attr "tune" "xgene1") 515 (eq_attr "type" "neon_tbl1,\ 516 neon_tbl1_q,\ 517 ")) 518 "xgene1_decode2op") 519 520(define_insn_reservation "xgene1_neon_tbl2" 8 521 (and (eq_attr "tune" "xgene1") 522 (eq_attr "type" "neon_tbl2,\ 523 neon_tbl2_q,\ 524 ")) 525 "xgene1_decodeIsolated") 526 527(define_insn_reservation "xgene1_neon_permute" 3 528 (and (eq_attr "tune" "xgene1") 529 (eq_attr "type" "neon_permute,\ 530 neon_permute_q,\ 531 ")) 532 "xgene1_decode2op") 533 534(define_insn_reservation "xgene1_neon_ld1r" 10 535 (and (eq_attr "tune" "xgene1") 536 (eq_attr "type" "neon_load1_all_lanes,\ 537 ")) 538 "xgene1_decode1op, xgene1_ld") 539 540(define_insn_reservation "xgene1_neon_fp_recp" 3 541 (and (eq_attr "tune" "xgene1") 542 (eq_attr "type" "neon_fp_recpe_s,\ 543 neon_fp_recpe_s_q,\ 544 neon_fp_recpe_d,\ 545 neon_fp_recpe_d_q,\ 546 neon_fp_recpx_s,\ 547 neon_fp_recpx_s_q,\ 548 neon_fp_recpx_d,\ 549 neon_fp_recpx_d_q,\ 550 ")) 551 "xgene1_decode1op") 552 553 554(define_insn_reservation "xgene1_neon_fp_recp_s" 5 555 (and (eq_attr "tune" "xgene1") 556 (eq_attr "type" "neon_fp_recps_s,\ 557 neon_fp_recps_s_q,\ 558 neon_fp_recps_d,\ 559 neon_fp_recps_d_q,\ 560 ")) 561 "xgene1_decode1op") 562 563(define_insn_reservation "xgene1_neon_pmull" 5 564 (and (eq_attr "tune" "xgene1") 565 (eq_attr "type" "neon_mul_d_long,\ 566 crypto_pmull,\ 567 ")) 568 "xgene1_decode2op") 569