1;; ARM Cortex-A8 NEON scheduling description. 2;; Copyright (C) 2007-2018 Free Software Foundation, Inc. 3;; Contributed by CodeSourcery. 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 9;; by the Free Software Foundation; either version 3, or (at your 10;; option) any later version. 11 12;; GCC is distributed in the hope that it will be useful, but WITHOUT 13;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 14;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 15;; 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(define_attr "cortex_a8_neon_type" 22 "neon_int_1,neon_int_2,neon_int_3,neon_int_4,neon_int_5,neon_vqneg_vqabs, 23 neon_bit_ops_q, 24 neon_vaba,neon_vaba_qqq, neon_vmov, 25 neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,neon_mul_qqq_8_16_32_ddd_32, 26 neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar, 27 neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,neon_mla_qqq_8_16, 28 neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long, 29 neon_mla_qqq_32_qqd_32_scalar,neon_mul_ddd_16_scalar_32_16_long_scalar, 30 neon_mul_qqd_32_scalar,neon_mla_ddd_16_scalar_qdd_32_16_long_scalar, 31 neon_shift_1,neon_shift_2,neon_shift_3, 32 neon_vqshl_vrshl_vqrshl_qqq,neon_vsra_vrsra,neon_fp_vadd_ddd_vabs_dd, 33 neon_fp_vadd_qqq_vabs_qq,neon_fp_vsum,neon_fp_vmul_ddd,neon_fp_vmul_qqd, 34 neon_fp_vmla_ddd,neon_fp_vmla_qqq,neon_fp_vmla_ddd_scalar, 35 neon_fp_vmla_qqq_scalar,neon_fp_vrecps_vrsqrts_ddd, 36 neon_fp_vrecps_vrsqrts_qqq,neon_bp_simple,neon_bp_2cycle,neon_bp_3cycle, 37 neon_ldr,neon_str,neon_vld1_1_2_regs,neon_vld1_3_4_regs, 38 neon_vld2_2_regs_vld1_vld2_all_lanes,neon_vld2_4_regs,neon_vld3_vld4, 39 neon_vst1_1_2_regs_vst2_2_regs,neon_vst1_3_4_regs, 40 neon_vst2_4_regs_vst3_vst4,neon_vld1_vld2_lane, 41 neon_vld3_vld4_lane,neon_vst1_vst2_lane,neon_vst3_vst4_lane, 42 neon_vld3_vld4_all_lanes,neon_mcr,neon_mcr_2_mcrr,neon_mrc,neon_mrrc, 43 neon_ldm_2,neon_stm_2,none,unknown" 44 (cond [ 45 (eq_attr "type" "neon_logic, neon_logic_q,\ 46 neon_bsl, neon_cls, neon_cnt,\ 47 neon_add, neon_add_q") 48 (const_string "neon_int_1") 49 (eq_attr "type" "neon_add_widen, neon_sub_widen,\ 50 neon_sub, neon_sub_q") 51 (const_string "neon_int_2") 52 (eq_attr "type" "neon_neg, neon_neg_q,\ 53 neon_reduc_add, neon_reduc_add_q,\ 54 neon_reduc_add_long,\ 55 neon_add_long, neon_sub_long") 56 (const_string "neon_int_3") 57 (eq_attr "type" "neon_abs, neon_abs_q, 58 neon_compare_zero, neon_compare_zero_q,\ 59 neon_add_halve_narrow_q,\ 60 neon_sub_halve_narrow_q,\ 61 neon_add_halve, neon_add_halve_q,\ 62 neon_qadd, neon_qadd_q,\ 63 neon_tst, neon_tst_q") 64 (const_string "neon_int_4") 65 (eq_attr "type" "neon_abd_long, neon_sub_halve, neon_sub_halve_q,\ 66 neon_qsub, neon_qsub_q,\ 67 neon_abd, neon_abd_q,\ 68 neon_compare, neon_compare_q,\ 69 neon_minmax, neon_minmax_q, neon_reduc_minmax,\ 70 neon_reduc_minmax_q") 71 (const_string "neon_int_5") 72 (eq_attr "type" "neon_qneg, neon_qneg_q, neon_qabs, neon_qabs_q") 73 (const_string "neon_vqneg_vqabs") 74 (eq_attr "type" "neon_move, neon_move_q") 75 (const_string "neon_vmov") 76 (eq_attr "type" "neon_bsl_q, neon_cls_q, neon_cnt_q") 77 (const_string "neon_bit_ops_q") 78 (eq_attr "type" "neon_arith_acc, neon_reduc_add_acc") 79 (const_string "neon_vaba") 80 (eq_attr "type" "neon_arith_acc_q") 81 (const_string "neon_vaba_qqq") 82 (eq_attr "type" "neon_shift_imm, neon_shift_imm_q,\ 83 neon_shift_imm_long, neon_shift_imm_narrow_q,\ 84 neon_shift_reg") 85 (const_string "neon_shift_1") 86 (eq_attr "type" "neon_sat_shift_imm, neon_sat_shift_imm_q, 87 neon_sat_shift_imm_narrow_q,\ 88 neon_sat_shift_reg") 89 (const_string "neon_shift_2") 90 (eq_attr "type" "neon_shift_reg_q") 91 (const_string "neon_shift_3") 92 (eq_attr "type" "neon_sat_shift_reg_q") 93 (const_string "neon_vqshl_vrshl_vqrshl_qqq") 94 (eq_attr "type" "neon_shift_acc, neon_shift_acc_q") 95 (const_string "neon_vsra_vrsra") 96 (eq_attr "type" "neon_mul_b, neon_mul_h,\ 97 neon_mul_b_long, neon_mul_h_long,\ 98 neon_sat_mul_b, neon_sat_mul_h,\ 99 neon_sat_mul_b_long, neon_sat_mul_h_long") 100 (const_string 101 "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long") 102 (eq_attr "type" "neon_mul_b_q, neon_mul_h_q,\ 103 neon_sat_mul_b_q, neon_sat_mul_h_q") 104 (const_string "neon_mul_qqq_8_16_32_ddd_32") 105 (eq_attr "type" "neon_mul_s, neon_mul_s_long,\ 106 neon_sat_mul_s, neon_sat_mul_s_long,\ 107 neon_mul_h_scalar_q, neon_sat_mul_h_scalar_q,\ 108 neon_mul_s_scalar, neon_sat_mul_s_scalar,\ 109 neon_mul_s_scalar_long,\ 110 neon_sat_mul_s_scalar_long") 111 (const_string 112 "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar") 113 (eq_attr "type" "neon_mla_b, neon_mla_h,\ 114 neon_mla_b_long, neon_mla_h_long,\ 115 neon_sat_mla_b_long, neon_sat_mla_h_long,\ 116 neon_sat_mla_h_scalar_long") 117 (const_string 118 "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long") 119 (eq_attr "type" "neon_mla_b_q, neon_mla_h_q") 120 (const_string "neon_mla_qqq_8_16") 121 (eq_attr "type" "neon_mla_s, neon_mla_s_long,\ 122 neon_sat_mla_s_long,\ 123 neon_mla_h_scalar_q, neon_mla_s_scalar,\ 124 neon_mla_s_scalar_long,\ 125 neon_sat_mla_s_scalar_long") 126 (const_string 127 "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long") 128 (eq_attr "type" "neon_mla_s_q, neon_mla_s_scalar_q") 129 (const_string "neon_mla_qqq_32_qqd_32_scalar") 130 (eq_attr "type" "neon_mul_h_scalar, neon_sat_mul_h_scalar,\ 131 neon_mul_h_scalar_long,\ 132 neon_sat_mul_h_scalar_long") 133 (const_string 134 "neon_mul_ddd_16_scalar_32_16_long_scalar") 135 (eq_attr "type" "neon_mul_s_q, neon_sat_mul_s_q,\ 136 neon_mul_s_scalar_q") 137 (const_string "neon_mul_qqd_32_scalar") 138 (eq_attr "type" "neon_mla_h_scalar, neon_mla_h_scalar_long") 139 (const_string 140 "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar") 141 (eq_attr "type" "neon_fp_abd_s, neon_fp_abs_s, neon_fp_neg_s,\ 142 neon_fp_addsub_s, neon_fp_compare_s,\ 143 neon_fp_minmax_s, neon_fp_mul_s,\ 144 neon_fp_recpe_s, neon_fp_rsqrte_s,\ 145 neon_fp_to_int_s, neon_int_to_fp_s") 146 (const_string "neon_fp_vadd_ddd_vabs_dd") 147 (eq_attr "type" "neon_fp_abd_s_q, neon_fp_abs_s_q,\ 148 neon_fp_neg_s_q,\ 149 neon_fp_addsub_s_q, neon_fp_compare_s_q,\ 150 neon_fp_minmax_s_q, neon_fp_mul_s_q,\ 151 neon_fp_recpe_s_q, neon_fp_rsqrte_s_q,\ 152 neon_fp_to_int_s_q, neon_int_to_fp_s_q") 153 (const_string "neon_fp_vadd_qqq_vabs_qq") 154 (eq_attr "type" "neon_fp_reduc_add_s, neon_fp_reduc_minmax_s,\ 155 neon_fp_reduc_add_s_q, neon_fp_reduc_minmax_s_q") 156 (const_string "neon_fp_vsum") 157 (eq_attr "type" "neon_fp_mul_s_scalar") 158 (const_string "neon_fp_vmul_ddd") 159 (eq_attr "type" "neon_fp_mul_s_scalar_q") 160 (const_string "neon_fp_vmul_qqd") 161 (eq_attr "type" "neon_fp_mla_s") 162 (const_string "neon_fp_vmla_ddd") 163 (eq_attr "type" "neon_fp_mla_s_q") 164 (const_string "neon_fp_vmla_qqq") 165 (eq_attr "type" "neon_fp_mla_s_scalar") 166 (const_string "neon_fp_vmla_ddd_scalar") 167 (eq_attr "type" "neon_fp_mla_s_scalar_q") 168 (const_string "neon_fp_vmla_qqq_scalar") 169 (eq_attr "type" "neon_fp_recps_s, neon_fp_rsqrts_s") 170 (const_string "neon_fp_vrecps_vrsqrts_ddd") 171 (eq_attr "type" "neon_fp_recps_s_q, neon_fp_rsqrts_s_q") 172 (const_string "neon_fp_vrecps_vrsqrts_qqq") 173 (eq_attr "type" "neon_move_narrow_q, neon_dup,\ 174 neon_dup_q, neon_permute, neon_zip,\ 175 neon_ext, neon_rev, neon_rev_q") 176 (const_string "neon_bp_simple") 177 (eq_attr "type" "neon_permute_q, neon_ext_q, neon_tbl1, neon_tbl2") 178 (const_string "neon_bp_2cycle") 179 (eq_attr "type" "neon_zip_q, neon_tbl3, neon_tbl4") 180 (const_string "neon_bp_3cycle") 181 (eq_attr "type" "neon_ldr") 182 (const_string "neon_ldr") 183 (eq_attr "type" "neon_str") 184 (const_string "neon_str") 185 (eq_attr "type" "neon_load1_1reg, neon_load1_1reg_q,\ 186 neon_load1_2reg, neon_load1_2reg_q,\ 187 neon_load2_2reg, neon_load2_2reg_q") 188 (const_string "neon_vld1_1_2_regs") 189 (eq_attr "type" "neon_load1_3reg, neon_load1_3reg_q,\ 190 neon_load1_4reg, neon_load1_4reg_q") 191 (const_string "neon_vld1_3_4_regs") 192 (eq_attr "type" "neon_load1_all_lanes, neon_load1_all_lanes_q,\ 193 neon_load2_all_lanes, neon_load2_all_lanes_q") 194 (const_string 195 "neon_vld2_2_regs_vld1_vld2_all_lanes") 196 (eq_attr "type" "neon_load3_all_lanes, neon_load3_all_lanes_q,\ 197 neon_load4_all_lanes, neon_load4_all_lanes_q,\ 198 neon_load2_4reg, neon_load2_4reg_q") 199 (const_string "neon_vld2_4_regs") 200 (eq_attr "type" "neon_load3_3reg, neon_load3_3reg_q,\ 201 neon_load4_4reg, neon_load4_4reg_q") 202 (const_string "neon_vld3_vld4") 203 (eq_attr "type" "f_loads, f_loadd, f_stores, f_stored,\ 204 neon_load1_one_lane, neon_load1_one_lane_q,\ 205 neon_load2_one_lane, neon_load2_one_lane_q") 206 (const_string "neon_vld1_vld2_lane") 207 (eq_attr "type" "neon_load3_one_lane, neon_load3_one_lane_q,\ 208 neon_load4_one_lane, neon_load4_one_lane_q") 209 (const_string "neon_vld3_vld4_lane") 210 (eq_attr "type" "neon_store1_1reg, neon_store1_1reg_q,\ 211 neon_store1_2reg, neon_store1_2reg_q,\ 212 neon_store2_2reg, neon_store2_2reg_q") 213 (const_string "neon_vst1_1_2_regs_vst2_2_regs") 214 (eq_attr "type" "neon_store1_3reg, neon_store1_3reg_q,\ 215 neon_store1_4reg, neon_store1_4reg_q") 216 (const_string "neon_vst1_3_4_regs") 217 (eq_attr "type" "neon_store2_4reg, neon_store2_4reg_q,\ 218 neon_store3_3reg, neon_store3_3reg_q,\ 219 neon_store4_4reg, neon_store4_4reg_q") 220 (const_string "neon_vst2_4_regs_vst3_vst4") 221 (eq_attr "type" "neon_store1_one_lane, neon_store1_one_lane_q,\ 222 neon_store2_one_lane, neon_store2_one_lane_q") 223 (const_string "neon_vst1_vst2_lane") 224 (eq_attr "type" "neon_store3_one_lane, neon_store3_one_lane_q,\ 225 neon_store4_one_lane, neon_store4_one_lane_q") 226 (const_string "neon_vst3_vst4_lane") 227 (eq_attr "type" "neon_from_gp, f_mcr") 228 (const_string "neon_mcr") 229 (eq_attr "type" "neon_from_gp_q, f_mcrr") 230 (const_string "neon_mcr_2_mcrr") 231 (eq_attr "type" "neon_to_gp, f_mrc") 232 (const_string "neon_mrc") 233 (eq_attr "type" "neon_to_gp_q, f_mrrc") 234 (const_string "neon_mrrc")] 235 (const_string "unknown"))) 236 237(define_automaton "cortex_a8_neon") 238 239;; Only one load, store, permute, MCR or MRC instruction can be issued 240;; per cycle. 241(define_cpu_unit "cortex_a8_neon_issue_perm" "cortex_a8_neon") 242 243;; Only one data-processing instruction can be issued per cycle. 244(define_cpu_unit "cortex_a8_neon_issue_dp" "cortex_a8_neon") 245 246;; The VFPLite unit (non-pipelined). 247(define_cpu_unit "cortex_a8_vfplite" "cortex_a8_neon") 248 249;; We need a special mutual exclusion (to be used in addition to 250;; cortex_a8_neon_issue_dp) for the case when an instruction such as 251;; vmla.f is forwarded from E5 of the floating-point multiply pipeline to 252;; E2 of the floating-point add pipeline. On the cycle previous to that 253;; forward we must prevent issue of any instruction to the floating-point 254;; add pipeline, but still allow issue of a data-processing instruction 255;; to any of the other pipelines. 256(define_cpu_unit "cortex_a8_neon_issue_fadd" "cortex_a8_neon") 257 258;; Patterns of reservation. 259;; We model the NEON issue units as running in parallel with the core ones. 260;; We assume that multi-cycle NEON instructions get decomposed into 261;; micro-ops as they are issued into the NEON pipeline, and not as they 262;; are issued into the ARM pipeline. Dual issue may not occur except 263;; upon the first and last cycles of a multi-cycle instruction, but it 264;; is unclear whether two multi-cycle instructions can issue together (in 265;; this model they cannot). It is also unclear whether a pair of 266;; a multi-cycle and single-cycle instructions, that could potentially 267;; issue together, only do so if (say) the single-cycle one precedes 268;; the other. 269 270(define_reservation "cortex_a8_neon_dp" 271 "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp") 272(define_reservation "cortex_a8_neon_dp_2" 273 "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp,\ 274 cortex_a8_neon_issue_dp") 275(define_reservation "cortex_a8_neon_dp_4" 276 "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp,\ 277 cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\ 278 cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\ 279 cortex_a8_neon_issue_dp") 280 281(define_reservation "cortex_a8_neon_fadd" 282 "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp+\ 283 cortex_a8_neon_issue_fadd") 284(define_reservation "cortex_a8_neon_fadd_2" 285 "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp+\ 286 cortex_a8_neon_issue_fadd,\ 287 cortex_a8_neon_issue_dp+cortex_a8_neon_issue_fadd") 288 289(define_reservation "cortex_a8_neon_perm" 290 "(cortex_a8_alu0|cortex_a8_alu1)+\ 291 cortex_a8_neon_issue_perm") 292(define_reservation "cortex_a8_neon_perm_2" 293 "(cortex_a8_alu0|cortex_a8_alu1)+\ 294 cortex_a8_neon_issue_perm,\ 295 cortex_a8_neon_issue_perm") 296(define_reservation "cortex_a8_neon_perm_3" 297 "(cortex_a8_alu0|cortex_a8_alu1)+\ 298 cortex_a8_neon_issue_perm,\ 299 cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\ 300 cortex_a8_neon_issue_perm") 301 302(define_reservation "cortex_a8_neon_ls" 303 "cortex_a8_issue_ls+cortex_a8_neon_issue_perm") 304(define_reservation "cortex_a8_neon_ls_2" 305 "cortex_a8_issue_ls+cortex_a8_neon_issue_perm,\ 306 cortex_a8_neon_issue_perm") 307(define_reservation "cortex_a8_neon_ls_3" 308 "cortex_a8_issue_ls+cortex_a8_neon_issue_perm,\ 309 cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\ 310 cortex_a8_neon_issue_perm") 311(define_reservation "cortex_a8_neon_ls_4" 312 "cortex_a8_issue_ls+cortex_a8_neon_issue_perm,\ 313 cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\ 314 cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\ 315 cortex_a8_neon_issue_perm") 316(define_reservation "cortex_a8_neon_ls_5" 317 "cortex_a8_issue_ls+cortex_a8_neon_issue_perm,\ 318 cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\ 319 cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\ 320 cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\ 321 cortex_a8_neon_issue_perm") 322 323(define_reservation "cortex_a8_neon_fmul_then_fadd" 324 "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp,\ 325 nothing*3,\ 326 cortex_a8_neon_issue_fadd") 327(define_reservation "cortex_a8_neon_fmul_then_fadd_2" 328 "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp,\ 329 cortex_a8_neon_issue_dp,\ 330 nothing*2,\ 331 cortex_a8_neon_issue_fadd,\ 332 cortex_a8_neon_issue_fadd") 333 334;; VFP instructions can only be single-issued into the NEON pipeline. 335(define_reservation "cortex_a8_vfp" 336 "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp+\ 337 cortex_a8_neon_issue_perm+cortex_a8_vfplite") 338 339;; VFP instructions. 340;; The VFPLite unit that executes these isn't pipelined; we give the 341;; worst-case latencies (and choose the double-precision ones where we 342;; do not distinguish on precision). We assume RunFast mode is not 343;; enabled and therefore do not model the possible VFP instruction 344;; execution in the NEON floating point pipelines, nor additional 345;; latencies for the processing of subnormals. 346;; 347;; TODO: RunFast mode could potentially be enabled when -ffast-math 348;; is specified. 349 350(define_insn_reservation "cortex_a8_vfp_add_sub" 10 351 (and (eq_attr "tune" "cortexa8") 352 (eq_attr "type" "fconsts,fconstd,fadds,faddd")) 353 "cortex_a8_vfp,cortex_a8_vfplite*9") 354 355(define_insn_reservation "cortex_a8_vfp_muls" 12 356 (and (eq_attr "tune" "cortexa8") 357 (eq_attr "type" "fmuls")) 358 "cortex_a8_vfp,cortex_a8_vfplite*11") 359 360;; Don't model a reservation for more than 15 cycles as this explodes the 361;; state space of the automaton for little gain. It is unlikely that the 362;; scheduler will find enough instructions to hide the full latency of the 363;; instructions. 364(define_insn_reservation "cortex_a8_vfp_muld" 17 365 (and (eq_attr "tune" "cortexa8") 366 (eq_attr "type" "fmuld")) 367 "cortex_a8_vfp,cortex_a8_vfplite*15") 368 369(define_insn_reservation "cortex_a8_vfp_macs" 21 370 (and (eq_attr "tune" "cortexa8") 371 (eq_attr "type" "fmacs,ffmas")) 372 "cortex_a8_vfp,cortex_a8_vfplite*15") 373 374(define_insn_reservation "cortex_a8_vfp_macd" 26 375 (and (eq_attr "tune" "cortexa8") 376 (eq_attr "type" "fmacd,ffmad")) 377 "cortex_a8_vfp,cortex_a8_vfplite*15") 378 379(define_insn_reservation "cortex_a8_vfp_divs" 37 380 (and (eq_attr "tune" "cortexa8") 381 (eq_attr "type" "fdivs, fsqrts")) 382 "cortex_a8_vfp,cortex_a8_vfplite*15") 383 384(define_insn_reservation "cortex_a8_vfp_divd" 65 385 (and (eq_attr "tune" "cortexa8") 386 (eq_attr "type" "fdivd, fsqrtd")) 387 "cortex_a8_vfp,cortex_a8_vfplite*15") 388 389;; Comparisons can actually take 7 cycles sometimes instead of four, 390;; but given all the other instructions lumped into type=ffarith that 391;; take four cycles, we pick that latency. 392(define_insn_reservation "cortex_a8_vfp_farith" 4 393 (and (eq_attr "tune" "cortexa8") 394 (eq_attr "type" "fmov,ffariths,ffarithd,fconsts,fconstd,fcmps,fcmpd")) 395 "cortex_a8_vfp,cortex_a8_vfplite*3") 396 397(define_insn_reservation "cortex_a8_vfp_cvt" 7 398 (and (eq_attr "tune" "cortexa8") 399 (eq_attr "type" "f_cvt,f_cvtf2i,f_cvti2f")) 400 "cortex_a8_vfp,cortex_a8_vfplite*6") 401 402;; NEON -> core transfers. 403 404(define_insn_reservation "cortex_a8_neon_mrc" 20 405 (and (eq_attr "tune" "cortexa8") 406 (eq_attr "cortex_a8_neon_type" "neon_mrc")) 407 "cortex_a8_neon_ls") 408 409(define_insn_reservation "cortex_a8_neon_mrrc" 21 410 (and (eq_attr "tune" "cortexa8") 411 (eq_attr "cortex_a8_neon_type" "neon_mrrc")) 412 "cortex_a8_neon_ls_2") 413 414;; Arithmetic Operations 415 416;; Instructions using this reservation read their source operands at N2, and 417;; produce a result at N3. 418(define_insn_reservation "cortex_a8_neon_int_1" 3 419 (and (eq_attr "tune" "cortexa8") 420 (eq_attr "cortex_a8_neon_type" "neon_int_1")) 421 "cortex_a8_neon_dp") 422 423;; Instructions using this reservation read their (D|Q)m operands at N1, 424;; their (D|Q)n operands at N2, and produce a result at N3. 425(define_insn_reservation "cortex_a8_neon_int_2" 3 426 (and (eq_attr "tune" "cortexa8") 427 (eq_attr "cortex_a8_neon_type" "neon_int_2")) 428 "cortex_a8_neon_dp") 429 430;; Instructions using this reservation read their source operands at N1, and 431;; produce a result at N3. 432(define_insn_reservation "cortex_a8_neon_int_3" 3 433 (and (eq_attr "tune" "cortexa8") 434 (eq_attr "cortex_a8_neon_type" "neon_int_3")) 435 "cortex_a8_neon_dp") 436 437;; Instructions using this reservation read their source operands at N2, and 438;; produce a result at N4. 439(define_insn_reservation "cortex_a8_neon_int_4" 4 440 (and (eq_attr "tune" "cortexa8") 441 (eq_attr "cortex_a8_neon_type" "neon_int_4")) 442 "cortex_a8_neon_dp") 443 444;; Instructions using this reservation read their (D|Q)m operands at N1, 445;; their (D|Q)n operands at N2, and produce a result at N4. 446(define_insn_reservation "cortex_a8_neon_int_5" 4 447 (and (eq_attr "tune" "cortexa8") 448 (eq_attr "cortex_a8_neon_type" "neon_int_5")) 449 "cortex_a8_neon_dp") 450 451;; Instructions using this reservation read their source operands at N1, and 452;; produce a result at N4. 453(define_insn_reservation "cortex_a8_neon_vqneg_vqabs" 4 454 (and (eq_attr "tune" "cortexa8") 455 (eq_attr "cortex_a8_neon_type" "neon_vqneg_vqabs")) 456 "cortex_a8_neon_dp") 457 458;; Instructions using this reservation produce a result at N3. 459(define_insn_reservation "cortex_a8_neon_vmov" 3 460 (and (eq_attr "tune" "cortexa8") 461 (eq_attr "cortex_a8_neon_type" "neon_vmov")) 462 "cortex_a8_neon_dp") 463 464;; Instructions using this reservation read their (D|Q)n operands at N2, 465;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and 466;; produce a result at N6. 467(define_insn_reservation "cortex_a8_neon_vaba" 6 468 (and (eq_attr "tune" "cortexa8") 469 (eq_attr "cortex_a8_neon_type" "neon_vaba")) 470 "cortex_a8_neon_dp") 471 472;; Instructions using this reservation read their (D|Q)n operands at N2, 473;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and 474;; produce a result at N6 on cycle 2. 475(define_insn_reservation "cortex_a8_neon_vaba_qqq" 7 476 (and (eq_attr "tune" "cortexa8") 477 (eq_attr "cortex_a8_neon_type" "neon_vaba_qqq")) 478 "cortex_a8_neon_dp_2") 479 480;; Instructions using this reservation read their source operands at N2, and 481;; produce a result at N3 on cycle 2. 482(define_insn_reservation "cortex_a8_neon_bit_ops_q" 4 483 (and (eq_attr "tune" "cortexa8") 484 (eq_attr "cortex_a8_neon_type" "neon_bit_ops_q")) 485 "cortex_a8_neon_dp_2") 486 487;; Integer Multiply/Accumulate Operations 488 489;; Instructions using this reservation read their source operands at N2, and 490;; produce a result at N6. 491(define_insn_reservation "cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6 492 (and (eq_attr "tune" "cortexa8") 493 (eq_attr "cortex_a8_neon_type" 494 "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long")) 495 "cortex_a8_neon_dp") 496 497;; Instructions using this reservation read their source operands at N2, and 498;; produce a result at N6 on cycle 2. 499(define_insn_reservation "cortex_a8_neon_mul_qqq_8_16_32_ddd_32" 7 500 (and (eq_attr "tune" "cortexa8") 501 (eq_attr "cortex_a8_neon_type" "neon_mul_qqq_8_16_32_ddd_32")) 502 "cortex_a8_neon_dp_2") 503 504;; Instructions using this reservation read their (D|Q)n operands at N2, 505;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 2. 506(define_insn_reservation "cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7 507 (and (eq_attr "tune" "cortexa8") 508 (eq_attr "cortex_a8_neon_type" 509 "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar")) 510 "cortex_a8_neon_dp_2") 511 512;; Instructions using this reservation read their (D|Q)n operands at N2, 513;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and 514;; produce a result at N6. 515(define_insn_reservation "cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6 516 (and (eq_attr "tune" "cortexa8") 517 (eq_attr "cortex_a8_neon_type" 518 "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long")) 519 "cortex_a8_neon_dp") 520 521;; Instructions using this reservation read their (D|Q)n operands at N2, 522;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and 523;; produce a result at N6 on cycle 2. 524(define_insn_reservation "cortex_a8_neon_mla_qqq_8_16" 7 525 (and (eq_attr "tune" "cortexa8") 526 (eq_attr "cortex_a8_neon_type" "neon_mla_qqq_8_16")) 527 "cortex_a8_neon_dp_2") 528 529;; Instructions using this reservation read their (D|Q)n operands at N2, 530;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and 531;; produce a result at N6 on cycle 2. 532(define_insn_reservation "cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 7 533 (and (eq_attr "tune" "cortexa8") 534 (eq_attr "cortex_a8_neon_type" 535 "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")) 536 "cortex_a8_neon_dp_2") 537 538;; Instructions using this reservation read their (D|Q)n operands at N2, 539;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and 540;; produce a result at N6 on cycle 4. 541(define_insn_reservation "cortex_a8_neon_mla_qqq_32_qqd_32_scalar" 9 542 (and (eq_attr "tune" "cortexa8") 543 (eq_attr "cortex_a8_neon_type" "neon_mla_qqq_32_qqd_32_scalar")) 544 "cortex_a8_neon_dp_4") 545 546;; Instructions using this reservation read their (D|Q)n operands at N2, 547;; their (D|Q)m operands at N1, and produce a result at N6. 548(define_insn_reservation "cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar" 6 549 (and (eq_attr "tune" "cortexa8") 550 (eq_attr "cortex_a8_neon_type" 551 "neon_mul_ddd_16_scalar_32_16_long_scalar")) 552 "cortex_a8_neon_dp") 553 554;; Instructions using this reservation read their (D|Q)n operands at N2, 555;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 4. 556(define_insn_reservation "cortex_a8_neon_mul_qqd_32_scalar" 9 557 (and (eq_attr "tune" "cortexa8") 558 (eq_attr "cortex_a8_neon_type" "neon_mul_qqd_32_scalar")) 559 "cortex_a8_neon_dp_4") 560 561;; Instructions using this reservation read their (D|Q)n operands at N2, 562;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and 563;; produce a result at N6. 564(define_insn_reservation "cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6 565 (and (eq_attr "tune" "cortexa8") 566 (eq_attr "cortex_a8_neon_type" 567 "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar")) 568 "cortex_a8_neon_dp") 569 570;; Shift Operations 571 572;; Instructions using this reservation read their source operands at N1, and 573;; produce a result at N3. 574(define_insn_reservation "cortex_a8_neon_shift_1" 3 575 (and (eq_attr "tune" "cortexa8") 576 (eq_attr "cortex_a8_neon_type" "neon_shift_1")) 577 "cortex_a8_neon_dp") 578 579;; Instructions using this reservation read their source operands at N1, and 580;; produce a result at N4. 581(define_insn_reservation "cortex_a8_neon_shift_2" 4 582 (and (eq_attr "tune" "cortexa8") 583 (eq_attr "cortex_a8_neon_type" "neon_shift_2")) 584 "cortex_a8_neon_dp") 585 586;; Instructions using this reservation read their source operands at N1, and 587;; produce a result at N3 on cycle 2. 588(define_insn_reservation "cortex_a8_neon_shift_3" 4 589 (and (eq_attr "tune" "cortexa8") 590 (eq_attr "cortex_a8_neon_type" "neon_shift_3")) 591 "cortex_a8_neon_dp_2") 592 593;; Instructions using this reservation read their source operands at N1, and 594;; produce a result at N4 on cycle 2. 595(define_insn_reservation "cortex_a8_neon_vqshl_vrshl_vqrshl_qqq" 5 596 (and (eq_attr "tune" "cortexa8") 597 (eq_attr "cortex_a8_neon_type" "neon_vqshl_vrshl_vqrshl_qqq")) 598 "cortex_a8_neon_dp_2") 599 600;; Instructions using this reservation read their (D|Q)m operands at N1, 601;; their (D|Q)d operands at N3, and produce a result at N6. 602(define_insn_reservation "cortex_a8_neon_vsra_vrsra" 6 603 (and (eq_attr "tune" "cortexa8") 604 (eq_attr "cortex_a8_neon_type" "neon_vsra_vrsra")) 605 "cortex_a8_neon_dp") 606 607;; Floating point Operations 608 609;; Instructions using this reservation read their source operands at N2, and 610;; produce a result at N5. 611(define_insn_reservation "cortex_a8_neon_fp_vadd_ddd_vabs_dd" 5 612 (and (eq_attr "tune" "cortexa8") 613 (eq_attr "cortex_a8_neon_type" "neon_fp_vadd_ddd_vabs_dd")) 614 "cortex_a8_neon_fadd") 615 616;; Instructions using this reservation read their source operands at N2, and 617;; produce a result at N5 on cycle 2. 618(define_insn_reservation "cortex_a8_neon_fp_vadd_qqq_vabs_qq" 6 619 (and (eq_attr "tune" "cortexa8") 620 (eq_attr "cortex_a8_neon_type" "neon_fp_vadd_qqq_vabs_qq")) 621 "cortex_a8_neon_fadd_2") 622 623;; Instructions using this reservation read their source operands at N1, and 624;; produce a result at N5. 625(define_insn_reservation "cortex_a8_neon_fp_vsum" 5 626 (and (eq_attr "tune" "cortexa8") 627 (eq_attr "cortex_a8_neon_type" "neon_fp_vsum")) 628 "cortex_a8_neon_fadd") 629 630;; Instructions using this reservation read their (D|Q)n operands at N2, 631;; their (D|Q)m operands at N1, and produce a result at N5. 632(define_insn_reservation "cortex_a8_neon_fp_vmul_ddd" 5 633 (and (eq_attr "tune" "cortexa8") 634 (eq_attr "cortex_a8_neon_type" "neon_fp_vmul_ddd")) 635 "cortex_a8_neon_dp") 636 637;; Instructions using this reservation read their (D|Q)n operands at N2, 638;; their (D|Q)m operands at N1, and produce a result at N5 on cycle 2. 639(define_insn_reservation "cortex_a8_neon_fp_vmul_qqd" 6 640 (and (eq_attr "tune" "cortexa8") 641 (eq_attr "cortex_a8_neon_type" "neon_fp_vmul_qqd")) 642 "cortex_a8_neon_dp_2") 643 644;; Instructions using this reservation read their (D|Q)n operands at N2, 645;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and 646;; produce a result at N9. 647(define_insn_reservation "cortex_a8_neon_fp_vmla_ddd" 9 648 (and (eq_attr "tune" "cortexa8") 649 (eq_attr "cortex_a8_neon_type" "neon_fp_vmla_ddd")) 650 "cortex_a8_neon_fmul_then_fadd") 651 652;; Instructions using this reservation read their (D|Q)n operands at N2, 653;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and 654;; produce a result at N9 on cycle 2. 655(define_insn_reservation "cortex_a8_neon_fp_vmla_qqq" 10 656 (and (eq_attr "tune" "cortexa8") 657 (eq_attr "cortex_a8_neon_type" "neon_fp_vmla_qqq")) 658 "cortex_a8_neon_fmul_then_fadd_2") 659 660;; Instructions using this reservation read their (D|Q)n operands at N2, 661;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and 662;; produce a result at N9. 663(define_insn_reservation "cortex_a8_neon_fp_vmla_ddd_scalar" 9 664 (and (eq_attr "tune" "cortexa8") 665 (eq_attr "cortex_a8_neon_type" "neon_fp_vmla_ddd_scalar")) 666 "cortex_a8_neon_fmul_then_fadd") 667 668;; Instructions using this reservation read their (D|Q)n operands at N2, 669;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and 670;; produce a result at N9 on cycle 2. 671(define_insn_reservation "cortex_a8_neon_fp_vmla_qqq_scalar" 10 672 (and (eq_attr "tune" "cortexa8") 673 (eq_attr "cortex_a8_neon_type" "neon_fp_vmla_qqq_scalar")) 674 "cortex_a8_neon_fmul_then_fadd_2") 675 676;; Instructions using this reservation read their source operands at N2, and 677;; produce a result at N9. 678(define_insn_reservation "cortex_a8_neon_fp_vrecps_vrsqrts_ddd" 9 679 (and (eq_attr "tune" "cortexa8") 680 (eq_attr "cortex_a8_neon_type" "neon_fp_vrecps_vrsqrts_ddd")) 681 "cortex_a8_neon_fmul_then_fadd") 682 683;; Instructions using this reservation read their source operands at N2, and 684;; produce a result at N9 on cycle 2. 685(define_insn_reservation "cortex_a8_neon_fp_vrecps_vrsqrts_qqq" 10 686 (and (eq_attr "tune" "cortexa8") 687 (eq_attr "type" "neon_fp_recps_s_q, neon_fp_rsqrts_s_q")) 688 "cortex_a8_neon_fmul_then_fadd_2") 689 690;; Permute operations. 691 692;; Instructions using this reservation read their source operands at N1, and 693;; produce a result at N2. 694(define_insn_reservation "cortex_a8_neon_bp_simple" 2 695 (and (eq_attr "tune" "cortexa8") 696 (eq_attr "cortex_a8_neon_type" "neon_bp_simple")) 697 "cortex_a8_neon_perm") 698 699;; Instructions using this reservation read their source operands at N1, and 700;; produce a result at N2 on cycle 2. 701(define_insn_reservation "cortex_a8_neon_bp_2cycle" 3 702 (and (eq_attr "tune" "cortexa8") 703 (eq_attr "cortex_a8_neon_type" "neon_bp_2cycle")) 704 "cortex_a8_neon_perm_2") 705 706;; Instructions using this reservation read their source operands at N1, and 707;; produce a result at N2 on cycle 3. 708(define_insn_reservation "cortex_a8_neon_bp_3cycle" 4 709 (and (eq_attr "tune" "cortexa8") 710 (eq_attr "cortex_a8_neon_type" "neon_bp_3cycle")) 711 "cortex_a8_neon_perm_3") 712 713;; Load Operations. 714 715;; Instructions using this reservation produce a result at N1. 716(define_insn_reservation "cortex_a8_neon_ldr" 1 717 (and (eq_attr "tune" "cortexa8") 718 (eq_attr "cortex_a8_neon_type" "neon_ldr")) 719 "cortex_a8_neon_ls") 720 721;; Instructions using this reservation read their source operands at N1. 722(define_insn_reservation "cortex_a8_neon_str" 0 723 (and (eq_attr "tune" "cortexa8") 724 (eq_attr "cortex_a8_neon_type" "neon_str")) 725 "cortex_a8_neon_ls") 726 727;; Instructions using this reservation produce a result at N1 on cycle 2. 728(define_insn_reservation "cortex_a8_neon_vld1_1_2_regs" 2 729 (and (eq_attr "tune" "cortexa8") 730 (eq_attr "cortex_a8_neon_type" "neon_vld1_1_2_regs")) 731 "cortex_a8_neon_ls_2") 732 733;; Instructions using this reservation produce a result at N1 on cycle 3. 734(define_insn_reservation "cortex_a8_neon_vld1_3_4_regs" 3 735 (and (eq_attr "tune" "cortexa8") 736 (eq_attr "cortex_a8_neon_type" "neon_vld1_3_4_regs")) 737 "cortex_a8_neon_ls_3") 738 739;; Instructions using this reservation produce a result at N2 on cycle 2. 740(define_insn_reservation "cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes" 3 741 (and (eq_attr "tune" "cortexa8") 742 (eq_attr "cortex_a8_neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes")) 743 "cortex_a8_neon_ls_2") 744 745;; Instructions using this reservation produce a result at N2 on cycle 3. 746(define_insn_reservation "cortex_a8_neon_vld2_4_regs" 4 747 (and (eq_attr "tune" "cortexa8") 748 (eq_attr "cortex_a8_neon_type" "neon_vld2_4_regs")) 749 "cortex_a8_neon_ls_3") 750 751;; Instructions using this reservation produce a result at N2 on cycle 4. 752(define_insn_reservation "cortex_a8_neon_vld3_vld4" 5 753 (and (eq_attr "tune" "cortexa8") 754 (eq_attr "cortex_a8_neon_type" "neon_vld3_vld4")) 755 "cortex_a8_neon_ls_4") 756 757;; Store operations. 758 759;; Instructions using this reservation read their source operands at N1. 760(define_insn_reservation "cortex_a8_neon_vst1_1_2_regs_vst2_2_regs" 0 761 (and (eq_attr "tune" "cortexa8") 762 (eq_attr "cortex_a8_neon_type" "neon_vst1_1_2_regs_vst2_2_regs")) 763 "cortex_a8_neon_ls_2") 764 765;; Instructions using this reservation read their source operands at N1. 766(define_insn_reservation "cortex_a8_neon_vst1_3_4_regs" 0 767 (and (eq_attr "tune" "cortexa8") 768 (eq_attr "cortex_a8_neon_type" "neon_vst1_3_4_regs")) 769 "cortex_a8_neon_ls_3") 770 771;; Instructions using this reservation read their source operands at N1. 772(define_insn_reservation "cortex_a8_neon_vst2_4_regs_vst3_vst4" 0 773 (and (eq_attr "tune" "cortexa8") 774 (eq_attr "cortex_a8_neon_type" "neon_vst2_4_regs_vst3_vst4")) 775 "cortex_a8_neon_ls_4") 776 777;; Instructions using this reservation read their source operands at N1, and 778;; produce a result at N2 on cycle 3. 779(define_insn_reservation "cortex_a8_neon_vld1_vld2_lane" 4 780 (and (eq_attr "tune" "cortexa8") 781 (eq_attr "cortex_a8_neon_type" "neon_vld1_vld2_lane")) 782 "cortex_a8_neon_ls_3") 783 784;; Instructions using this reservation read their source operands at N1, and 785;; produce a result at N2 on cycle 5. 786(define_insn_reservation "cortex_a8_neon_vld3_vld4_lane" 6 787 (and (eq_attr "tune" "cortexa8") 788 (eq_attr "cortex_a8_neon_type" "neon_vld3_vld4_lane")) 789 "cortex_a8_neon_ls_5") 790 791;; Instructions using this reservation read their source operands at N1. 792(define_insn_reservation "cortex_a8_neon_vst1_vst2_lane" 0 793 (and (eq_attr "tune" "cortexa8") 794 (eq_attr "cortex_a8_neon_type" "neon_vst1_vst2_lane")) 795 "cortex_a8_neon_ls_2") 796 797;; Instructions using this reservation read their source operands at N1. 798(define_insn_reservation "cortex_a8_neon_vst3_vst4_lane" 0 799 (and (eq_attr "tune" "cortexa8") 800 (eq_attr "cortex_a8_neon_type" "neon_vst3_vst4_lane")) 801 "cortex_a8_neon_ls_3") 802 803;; Register Transfer Operations 804 805;; Instructions using this reservation produce a result at N2. 806(define_insn_reservation "cortex_a8_neon_mcr" 2 807 (and (eq_attr "tune" "cortexa8") 808 (eq_attr "cortex_a8_neon_type" "neon_mcr")) 809 "cortex_a8_neon_perm") 810 811;; Instructions using this reservation produce a result at N2. 812(define_insn_reservation "cortex_a8_neon_mcr_2_mcrr" 2 813 (and (eq_attr "tune" "cortexa8") 814 (eq_attr "cortex_a8_neon_type" "neon_mcr_2_mcrr")) 815 "cortex_a8_neon_perm_2") 816 817;; Exceptions to the default latencies. 818 819(define_bypass 1 "cortex_a8_neon_mcr_2_mcrr" 820 "cortex_a8_neon_int_1,\ 821 cortex_a8_neon_int_4,\ 822 cortex_a8_neon_bit_ops_q,\ 823 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 824 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 825 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 826 cortex_a8_neon_mla_qqq_8_16,\ 827 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 828 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 829 cortex_a8_neon_fp_vmla_ddd,\ 830 cortex_a8_neon_fp_vmla_qqq,\ 831 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 832 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 833 834(define_bypass 1 "cortex_a8_neon_mcr" 835 "cortex_a8_neon_int_1,\ 836 cortex_a8_neon_int_4,\ 837 cortex_a8_neon_bit_ops_q,\ 838 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 839 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 840 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 841 cortex_a8_neon_mla_qqq_8_16,\ 842 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 843 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 844 cortex_a8_neon_fp_vmla_ddd,\ 845 cortex_a8_neon_fp_vmla_qqq,\ 846 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 847 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 848 849(define_bypass 5 "cortex_a8_neon_vld3_vld4_lane" 850 "cortex_a8_neon_int_1,\ 851 cortex_a8_neon_int_4,\ 852 cortex_a8_neon_bit_ops_q,\ 853 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 854 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 855 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 856 cortex_a8_neon_mla_qqq_8_16,\ 857 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 858 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 859 cortex_a8_neon_fp_vmla_ddd,\ 860 cortex_a8_neon_fp_vmla_qqq,\ 861 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 862 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 863 864(define_bypass 3 "cortex_a8_neon_vld1_vld2_lane" 865 "cortex_a8_neon_int_1,\ 866 cortex_a8_neon_int_4,\ 867 cortex_a8_neon_bit_ops_q,\ 868 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 869 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 870 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 871 cortex_a8_neon_mla_qqq_8_16,\ 872 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 873 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 874 cortex_a8_neon_fp_vmla_ddd,\ 875 cortex_a8_neon_fp_vmla_qqq,\ 876 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 877 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 878 879(define_bypass 4 "cortex_a8_neon_vld3_vld4" 880 "cortex_a8_neon_int_1,\ 881 cortex_a8_neon_int_4,\ 882 cortex_a8_neon_bit_ops_q,\ 883 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 884 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 885 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 886 cortex_a8_neon_mla_qqq_8_16,\ 887 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 888 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 889 cortex_a8_neon_fp_vmla_ddd,\ 890 cortex_a8_neon_fp_vmla_qqq,\ 891 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 892 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 893 894(define_bypass 3 "cortex_a8_neon_vld2_4_regs" 895 "cortex_a8_neon_int_1,\ 896 cortex_a8_neon_int_4,\ 897 cortex_a8_neon_bit_ops_q,\ 898 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 899 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 900 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 901 cortex_a8_neon_mla_qqq_8_16,\ 902 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 903 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 904 cortex_a8_neon_fp_vmla_ddd,\ 905 cortex_a8_neon_fp_vmla_qqq,\ 906 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 907 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 908 909(define_bypass 2 "cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes" 910 "cortex_a8_neon_int_1,\ 911 cortex_a8_neon_int_4,\ 912 cortex_a8_neon_bit_ops_q,\ 913 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 914 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 915 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 916 cortex_a8_neon_mla_qqq_8_16,\ 917 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 918 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 919 cortex_a8_neon_fp_vmla_ddd,\ 920 cortex_a8_neon_fp_vmla_qqq,\ 921 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 922 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 923 924(define_bypass 2 "cortex_a8_neon_vld1_3_4_regs" 925 "cortex_a8_neon_int_1,\ 926 cortex_a8_neon_int_4,\ 927 cortex_a8_neon_bit_ops_q,\ 928 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 929 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 930 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 931 cortex_a8_neon_mla_qqq_8_16,\ 932 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 933 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 934 cortex_a8_neon_fp_vmla_ddd,\ 935 cortex_a8_neon_fp_vmla_qqq,\ 936 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 937 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 938 939(define_bypass 1 "cortex_a8_neon_vld1_1_2_regs" 940 "cortex_a8_neon_int_1,\ 941 cortex_a8_neon_int_4,\ 942 cortex_a8_neon_bit_ops_q,\ 943 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 944 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 945 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 946 cortex_a8_neon_mla_qqq_8_16,\ 947 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 948 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 949 cortex_a8_neon_fp_vmla_ddd,\ 950 cortex_a8_neon_fp_vmla_qqq,\ 951 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 952 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 953 954(define_bypass 0 "cortex_a8_neon_ldr" 955 "cortex_a8_neon_int_1,\ 956 cortex_a8_neon_int_4,\ 957 cortex_a8_neon_bit_ops_q,\ 958 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 959 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 960 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 961 cortex_a8_neon_mla_qqq_8_16,\ 962 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 963 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 964 cortex_a8_neon_fp_vmla_ddd,\ 965 cortex_a8_neon_fp_vmla_qqq,\ 966 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 967 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 968 969(define_bypass 3 "cortex_a8_neon_bp_3cycle" 970 "cortex_a8_neon_int_1,\ 971 cortex_a8_neon_int_4,\ 972 cortex_a8_neon_bit_ops_q,\ 973 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 974 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 975 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 976 cortex_a8_neon_mla_qqq_8_16,\ 977 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 978 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 979 cortex_a8_neon_fp_vmla_ddd,\ 980 cortex_a8_neon_fp_vmla_qqq,\ 981 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 982 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 983 984(define_bypass 2 "cortex_a8_neon_bp_2cycle" 985 "cortex_a8_neon_int_1,\ 986 cortex_a8_neon_int_4,\ 987 cortex_a8_neon_bit_ops_q,\ 988 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 989 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 990 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 991 cortex_a8_neon_mla_qqq_8_16,\ 992 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 993 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 994 cortex_a8_neon_fp_vmla_ddd,\ 995 cortex_a8_neon_fp_vmla_qqq,\ 996 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 997 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 998 999(define_bypass 1 "cortex_a8_neon_bp_simple" 1000 "cortex_a8_neon_int_1,\ 1001 cortex_a8_neon_int_4,\ 1002 cortex_a8_neon_bit_ops_q,\ 1003 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1004 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1005 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1006 cortex_a8_neon_mla_qqq_8_16,\ 1007 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1008 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1009 cortex_a8_neon_fp_vmla_ddd,\ 1010 cortex_a8_neon_fp_vmla_qqq,\ 1011 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1012 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1013 1014(define_bypass 9 "cortex_a8_neon_fp_vrecps_vrsqrts_qqq" 1015 "cortex_a8_neon_int_1,\ 1016 cortex_a8_neon_int_4,\ 1017 cortex_a8_neon_bit_ops_q,\ 1018 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1019 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1020 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1021 cortex_a8_neon_mla_qqq_8_16,\ 1022 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1023 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1024 cortex_a8_neon_fp_vmla_ddd,\ 1025 cortex_a8_neon_fp_vmla_qqq,\ 1026 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1027 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1028 1029(define_bypass 8 "cortex_a8_neon_fp_vrecps_vrsqrts_ddd" 1030 "cortex_a8_neon_int_1,\ 1031 cortex_a8_neon_int_4,\ 1032 cortex_a8_neon_bit_ops_q,\ 1033 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1034 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1035 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1036 cortex_a8_neon_mla_qqq_8_16,\ 1037 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1038 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1039 cortex_a8_neon_fp_vmla_ddd,\ 1040 cortex_a8_neon_fp_vmla_qqq,\ 1041 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1042 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1043 1044(define_bypass 9 "cortex_a8_neon_fp_vmla_qqq_scalar" 1045 "cortex_a8_neon_int_1,\ 1046 cortex_a8_neon_int_4,\ 1047 cortex_a8_neon_bit_ops_q,\ 1048 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1049 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1050 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1051 cortex_a8_neon_mla_qqq_8_16,\ 1052 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1053 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1054 cortex_a8_neon_fp_vmla_ddd,\ 1055 cortex_a8_neon_fp_vmla_qqq,\ 1056 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1057 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1058 1059(define_bypass 8 "cortex_a8_neon_fp_vmla_ddd_scalar" 1060 "cortex_a8_neon_int_1,\ 1061 cortex_a8_neon_int_4,\ 1062 cortex_a8_neon_bit_ops_q,\ 1063 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1064 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1065 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1066 cortex_a8_neon_mla_qqq_8_16,\ 1067 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1068 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1069 cortex_a8_neon_fp_vmla_ddd,\ 1070 cortex_a8_neon_fp_vmla_qqq,\ 1071 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1072 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1073 1074(define_bypass 9 "cortex_a8_neon_fp_vmla_qqq" 1075 "cortex_a8_neon_int_1,\ 1076 cortex_a8_neon_int_4,\ 1077 cortex_a8_neon_bit_ops_q,\ 1078 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1079 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1080 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1081 cortex_a8_neon_mla_qqq_8_16,\ 1082 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1083 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1084 cortex_a8_neon_fp_vmla_ddd,\ 1085 cortex_a8_neon_fp_vmla_qqq,\ 1086 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1087 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1088 1089(define_bypass 8 "cortex_a8_neon_fp_vmla_ddd" 1090 "cortex_a8_neon_int_1,\ 1091 cortex_a8_neon_int_4,\ 1092 cortex_a8_neon_bit_ops_q,\ 1093 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1094 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1095 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1096 cortex_a8_neon_mla_qqq_8_16,\ 1097 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1098 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1099 cortex_a8_neon_fp_vmla_ddd,\ 1100 cortex_a8_neon_fp_vmla_qqq,\ 1101 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1102 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1103 1104(define_bypass 5 "cortex_a8_neon_fp_vmul_qqd" 1105 "cortex_a8_neon_int_1,\ 1106 cortex_a8_neon_int_4,\ 1107 cortex_a8_neon_bit_ops_q,\ 1108 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1109 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1110 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1111 cortex_a8_neon_mla_qqq_8_16,\ 1112 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1113 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1114 cortex_a8_neon_fp_vmla_ddd,\ 1115 cortex_a8_neon_fp_vmla_qqq,\ 1116 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1117 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1118 1119(define_bypass 4 "cortex_a8_neon_fp_vmul_ddd" 1120 "cortex_a8_neon_int_1,\ 1121 cortex_a8_neon_int_4,\ 1122 cortex_a8_neon_bit_ops_q,\ 1123 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1124 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1125 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1126 cortex_a8_neon_mla_qqq_8_16,\ 1127 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1128 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1129 cortex_a8_neon_fp_vmla_ddd,\ 1130 cortex_a8_neon_fp_vmla_qqq,\ 1131 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1132 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1133 1134(define_bypass 4 "cortex_a8_neon_fp_vsum" 1135 "cortex_a8_neon_int_1,\ 1136 cortex_a8_neon_int_4,\ 1137 cortex_a8_neon_bit_ops_q,\ 1138 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1139 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1140 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1141 cortex_a8_neon_mla_qqq_8_16,\ 1142 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1143 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1144 cortex_a8_neon_fp_vmla_ddd,\ 1145 cortex_a8_neon_fp_vmla_qqq,\ 1146 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1147 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1148 1149(define_bypass 5 "cortex_a8_neon_fp_vadd_qqq_vabs_qq" 1150 "cortex_a8_neon_int_1,\ 1151 cortex_a8_neon_int_4,\ 1152 cortex_a8_neon_bit_ops_q,\ 1153 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1154 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1155 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1156 cortex_a8_neon_mla_qqq_8_16,\ 1157 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1158 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1159 cortex_a8_neon_fp_vmla_ddd,\ 1160 cortex_a8_neon_fp_vmla_qqq,\ 1161 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1162 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1163 1164(define_bypass 4 "cortex_a8_neon_fp_vadd_ddd_vabs_dd" 1165 "cortex_a8_neon_int_1,\ 1166 cortex_a8_neon_int_4,\ 1167 cortex_a8_neon_bit_ops_q,\ 1168 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1169 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1170 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1171 cortex_a8_neon_mla_qqq_8_16,\ 1172 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1173 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1174 cortex_a8_neon_fp_vmla_ddd,\ 1175 cortex_a8_neon_fp_vmla_qqq,\ 1176 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1177 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1178 1179(define_bypass 5 "cortex_a8_neon_vsra_vrsra" 1180 "cortex_a8_neon_int_1,\ 1181 cortex_a8_neon_int_4,\ 1182 cortex_a8_neon_bit_ops_q,\ 1183 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1184 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1185 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1186 cortex_a8_neon_mla_qqq_8_16,\ 1187 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1188 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1189 cortex_a8_neon_fp_vmla_ddd,\ 1190 cortex_a8_neon_fp_vmla_qqq,\ 1191 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1192 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1193 1194(define_bypass 4 "cortex_a8_neon_vqshl_vrshl_vqrshl_qqq" 1195 "cortex_a8_neon_int_1,\ 1196 cortex_a8_neon_int_4,\ 1197 cortex_a8_neon_bit_ops_q,\ 1198 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1199 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1200 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1201 cortex_a8_neon_mla_qqq_8_16,\ 1202 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1203 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1204 cortex_a8_neon_fp_vmla_ddd,\ 1205 cortex_a8_neon_fp_vmla_qqq,\ 1206 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1207 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1208 1209(define_bypass 3 "cortex_a8_neon_shift_3" 1210 "cortex_a8_neon_int_1,\ 1211 cortex_a8_neon_int_4,\ 1212 cortex_a8_neon_bit_ops_q,\ 1213 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1214 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1215 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1216 cortex_a8_neon_mla_qqq_8_16,\ 1217 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1218 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1219 cortex_a8_neon_fp_vmla_ddd,\ 1220 cortex_a8_neon_fp_vmla_qqq,\ 1221 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1222 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1223 1224(define_bypass 3 "cortex_a8_neon_shift_2" 1225 "cortex_a8_neon_int_1,\ 1226 cortex_a8_neon_int_4,\ 1227 cortex_a8_neon_bit_ops_q,\ 1228 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1229 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1230 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1231 cortex_a8_neon_mla_qqq_8_16,\ 1232 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1233 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1234 cortex_a8_neon_fp_vmla_ddd,\ 1235 cortex_a8_neon_fp_vmla_qqq,\ 1236 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1237 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1238 1239(define_bypass 2 "cortex_a8_neon_shift_1" 1240 "cortex_a8_neon_int_1,\ 1241 cortex_a8_neon_int_4,\ 1242 cortex_a8_neon_bit_ops_q,\ 1243 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1244 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1245 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1246 cortex_a8_neon_mla_qqq_8_16,\ 1247 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1248 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1249 cortex_a8_neon_fp_vmla_ddd,\ 1250 cortex_a8_neon_fp_vmla_qqq,\ 1251 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1252 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1253 1254(define_bypass 5 "cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 1255 "cortex_a8_neon_int_1,\ 1256 cortex_a8_neon_int_4,\ 1257 cortex_a8_neon_bit_ops_q,\ 1258 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1259 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1260 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1261 cortex_a8_neon_mla_qqq_8_16,\ 1262 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1263 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1264 cortex_a8_neon_fp_vmla_ddd,\ 1265 cortex_a8_neon_fp_vmla_qqq,\ 1266 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1267 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1268 1269(define_bypass 8 "cortex_a8_neon_mul_qqd_32_scalar" 1270 "cortex_a8_neon_int_1,\ 1271 cortex_a8_neon_int_4,\ 1272 cortex_a8_neon_bit_ops_q,\ 1273 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1274 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1275 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1276 cortex_a8_neon_mla_qqq_8_16,\ 1277 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1278 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1279 cortex_a8_neon_fp_vmla_ddd,\ 1280 cortex_a8_neon_fp_vmla_qqq,\ 1281 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1282 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1283 1284(define_bypass 5 "cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar" 1285 "cortex_a8_neon_int_1,\ 1286 cortex_a8_neon_int_4,\ 1287 cortex_a8_neon_bit_ops_q,\ 1288 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1289 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1290 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1291 cortex_a8_neon_mla_qqq_8_16,\ 1292 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1293 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1294 cortex_a8_neon_fp_vmla_ddd,\ 1295 cortex_a8_neon_fp_vmla_qqq,\ 1296 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1297 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1298 1299(define_bypass 8 "cortex_a8_neon_mla_qqq_32_qqd_32_scalar" 1300 "cortex_a8_neon_int_1,\ 1301 cortex_a8_neon_int_4,\ 1302 cortex_a8_neon_bit_ops_q,\ 1303 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1304 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1305 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1306 cortex_a8_neon_mla_qqq_8_16,\ 1307 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1308 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1309 cortex_a8_neon_fp_vmla_ddd,\ 1310 cortex_a8_neon_fp_vmla_qqq,\ 1311 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1312 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1313 1314(define_bypass 6 "cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 1315 "cortex_a8_neon_int_1,\ 1316 cortex_a8_neon_int_4,\ 1317 cortex_a8_neon_bit_ops_q,\ 1318 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1319 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1320 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1321 cortex_a8_neon_mla_qqq_8_16,\ 1322 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1323 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1324 cortex_a8_neon_fp_vmla_ddd,\ 1325 cortex_a8_neon_fp_vmla_qqq,\ 1326 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1327 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1328 1329(define_bypass 6 "cortex_a8_neon_mla_qqq_8_16" 1330 "cortex_a8_neon_int_1,\ 1331 cortex_a8_neon_int_4,\ 1332 cortex_a8_neon_bit_ops_q,\ 1333 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1334 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1335 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1336 cortex_a8_neon_mla_qqq_8_16,\ 1337 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1338 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1339 cortex_a8_neon_fp_vmla_ddd,\ 1340 cortex_a8_neon_fp_vmla_qqq,\ 1341 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1342 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1343 1344(define_bypass 5 "cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 1345 "cortex_a8_neon_int_1,\ 1346 cortex_a8_neon_int_4,\ 1347 cortex_a8_neon_bit_ops_q,\ 1348 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1349 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1350 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1351 cortex_a8_neon_mla_qqq_8_16,\ 1352 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1353 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1354 cortex_a8_neon_fp_vmla_ddd,\ 1355 cortex_a8_neon_fp_vmla_qqq,\ 1356 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1357 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1358 1359(define_bypass 6 "cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 1360 "cortex_a8_neon_int_1,\ 1361 cortex_a8_neon_int_4,\ 1362 cortex_a8_neon_bit_ops_q,\ 1363 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1364 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1365 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1366 cortex_a8_neon_mla_qqq_8_16,\ 1367 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1368 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1369 cortex_a8_neon_fp_vmla_ddd,\ 1370 cortex_a8_neon_fp_vmla_qqq,\ 1371 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1372 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1373 1374(define_bypass 6 "cortex_a8_neon_mul_qqq_8_16_32_ddd_32" 1375 "cortex_a8_neon_int_1,\ 1376 cortex_a8_neon_int_4,\ 1377 cortex_a8_neon_bit_ops_q,\ 1378 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1379 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1380 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1381 cortex_a8_neon_mla_qqq_8_16,\ 1382 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1383 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1384 cortex_a8_neon_fp_vmla_ddd,\ 1385 cortex_a8_neon_fp_vmla_qqq,\ 1386 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1387 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1388 1389(define_bypass 5 "cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 1390 "cortex_a8_neon_int_1,\ 1391 cortex_a8_neon_int_4,\ 1392 cortex_a8_neon_bit_ops_q,\ 1393 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1394 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1395 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1396 cortex_a8_neon_mla_qqq_8_16,\ 1397 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1398 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1399 cortex_a8_neon_fp_vmla_ddd,\ 1400 cortex_a8_neon_fp_vmla_qqq,\ 1401 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1402 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1403 1404(define_bypass 6 "cortex_a8_neon_vaba_qqq" 1405 "cortex_a8_neon_int_1,\ 1406 cortex_a8_neon_int_4,\ 1407 cortex_a8_neon_bit_ops_q,\ 1408 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1409 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1410 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1411 cortex_a8_neon_mla_qqq_8_16,\ 1412 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1413 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1414 cortex_a8_neon_fp_vmla_ddd,\ 1415 cortex_a8_neon_fp_vmla_qqq,\ 1416 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1417 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1418 1419(define_bypass 5 "cortex_a8_neon_vaba" 1420 "cortex_a8_neon_int_1,\ 1421 cortex_a8_neon_int_4,\ 1422 cortex_a8_neon_bit_ops_q,\ 1423 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1424 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1425 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1426 cortex_a8_neon_mla_qqq_8_16,\ 1427 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1428 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1429 cortex_a8_neon_fp_vmla_ddd,\ 1430 cortex_a8_neon_fp_vmla_qqq,\ 1431 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1432 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1433 1434(define_bypass 3 "cortex_a8_neon_bit_ops_q" 1435 "cortex_a8_neon_int_1,\ 1436 cortex_a8_neon_int_4,\ 1437 cortex_a8_neon_bit_ops_q,\ 1438 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1439 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1440 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1441 cortex_a8_neon_mla_qqq_8_16,\ 1442 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1443 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1444 cortex_a8_neon_fp_vmla_ddd,\ 1445 cortex_a8_neon_fp_vmla_qqq,\ 1446 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1447 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1448 1449(define_bypass 3 "cortex_a8_neon_vqneg_vqabs" 1450 "cortex_a8_neon_int_1,\ 1451 cortex_a8_neon_int_4,\ 1452 cortex_a8_neon_bit_ops_q,\ 1453 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1454 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1455 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1456 cortex_a8_neon_mla_qqq_8_16,\ 1457 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1458 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1459 cortex_a8_neon_fp_vmla_ddd,\ 1460 cortex_a8_neon_fp_vmla_qqq,\ 1461 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1462 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1463 1464(define_bypass 3 "cortex_a8_neon_int_5" 1465 "cortex_a8_neon_int_1,\ 1466 cortex_a8_neon_int_4,\ 1467 cortex_a8_neon_bit_ops_q,\ 1468 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1469 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1470 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1471 cortex_a8_neon_mla_qqq_8_16,\ 1472 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1473 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1474 cortex_a8_neon_fp_vmla_ddd,\ 1475 cortex_a8_neon_fp_vmla_qqq,\ 1476 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1477 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1478 1479(define_bypass 3 "cortex_a8_neon_int_4" 1480 "cortex_a8_neon_int_1,\ 1481 cortex_a8_neon_int_4,\ 1482 cortex_a8_neon_bit_ops_q,\ 1483 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1484 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1485 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1486 cortex_a8_neon_mla_qqq_8_16,\ 1487 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1488 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1489 cortex_a8_neon_fp_vmla_ddd,\ 1490 cortex_a8_neon_fp_vmla_qqq,\ 1491 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1492 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1493 1494(define_bypass 2 "cortex_a8_neon_int_3" 1495 "cortex_a8_neon_int_1,\ 1496 cortex_a8_neon_int_4,\ 1497 cortex_a8_neon_bit_ops_q,\ 1498 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1499 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1500 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1501 cortex_a8_neon_mla_qqq_8_16,\ 1502 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1503 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1504 cortex_a8_neon_fp_vmla_ddd,\ 1505 cortex_a8_neon_fp_vmla_qqq,\ 1506 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1507 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1508 1509(define_bypass 2 "cortex_a8_neon_int_2" 1510 "cortex_a8_neon_int_1,\ 1511 cortex_a8_neon_int_4,\ 1512 cortex_a8_neon_bit_ops_q,\ 1513 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1514 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1515 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1516 cortex_a8_neon_mla_qqq_8_16,\ 1517 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1518 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1519 cortex_a8_neon_fp_vmla_ddd,\ 1520 cortex_a8_neon_fp_vmla_qqq,\ 1521 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1522 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1523 1524(define_bypass 2 "cortex_a8_neon_int_1" 1525 "cortex_a8_neon_int_1,\ 1526 cortex_a8_neon_int_4,\ 1527 cortex_a8_neon_bit_ops_q,\ 1528 cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\ 1529 cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\ 1530 cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\ 1531 cortex_a8_neon_mla_qqq_8_16,\ 1532 cortex_a8_neon_fp_vadd_ddd_vabs_dd,\ 1533 cortex_a8_neon_fp_vadd_qqq_vabs_qq,\ 1534 cortex_a8_neon_fp_vmla_ddd,\ 1535 cortex_a8_neon_fp_vmla_qqq,\ 1536 cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\ 1537 cortex_a8_neon_fp_vrecps_vrsqrts_qqq") 1538 1539