Hi, This patch updates all the types used by the "types" attribute to describe neon instructions.
These have, in the past, been designed to support modelling the Cortex-A8 pipeline. We can split these types, and use them to better model other pipelines. This patch adds the new types we plan to use to the type attribute. These are not a trivial split of existing instructions, but the table below shows the easiest way to map between them. OLD NEW neon_int_1 neon_logic, neon_logic_q, neon_bsl, neon_cls, neon_cnt, neon_add, neon_add_q neon_int_2 neon_add_widen, neon_sub_widen, neon_sub, neon_sub_q neon_int_3 neon_neg, neon_neg_q, neon_reduc_add, neon_reduc_add_q, neon_reduc_add_long, neon_add_long, neon_sub_long neon_int_4 neon_abs, neon_abs_q, neon_compare_zero, neon_compare_zero_q, neon_add_halve_narrow_q, neon_sub_halve_narrow_q, neon_add_halve, neon_add_halve_q, neon_qadd, neon_qadd_q, neon_tst, neon_tst_q neon_int_5 neon_abd_long, neon_sub_halve, neon_sub_halve_q, neon_qsub, neon_qsub_q, neon_abd, neon_abd_q, neon_compare, neon_compare_q, neon_minmax, neon_minmax_q, neon_reduc_minmax, neon_reduc_minmax_q neon_vqneg_vqabs neon_qneg, neon_qneg_q, neon_qabs, neon_qabs_q neon_vmov neon_move, neon_move_q neon_bit_ops_q neon_bsl_q, neon_cls_q, neon_cnt_q neon_vaba neon_arith_acc, neon_reduc_add_acc neon_vaba_qqq neon_arith_acc_q neon_shift_1 neon_shift_imm, neon_shift_imm_q, neon_shift_imm_long, neon_shift_imm_narrow_q, neon_shift_reg neon_shift_2 neon_sat_shift_imm, neon_sat_shift_imm_q, neon_sat_shift_imm_narrow_q, neon_sat_shift_reg neon_shift_3 neon_shift_reg_q neon_vqshl_vrshl_vqrshl_qqq neon_sat_shift_reg_q neon_vsra_vrsra neon_shift_acc, neon_shift_acc_q neon_mul_ddd_8_16_qdd_16_8_long_32_16_long neon_mul_b, neon_mul_h, neon_mul_b_long, neon_mul_h_long, neon_sat_mul_b, neon_sat_mul_h, neon_sat_mul_b_long, neon_sat_mul_h_long neon_mul_qqq_8_16_32_ddd_32 neon_mul_b_q, neon_mul_h_q, neon_sat_mul_b_q, neon_sat_mul_h_q neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar neon_mul_s, neon_mul_s_long, neon_sat_mul_s, neon_sat_mul_s_long, neon_mul_h_scalar_q, neon_sat_mul_h_scalar_q, neon_mul_s_scalar, neon_sat_mul_s_scalar, neon_mul_s_scalar_long, neon_sat_mul_s_scalar_long neon_mla_ddd_8_16_qdd_16_8_long_32_16_long neon_mla_b, neon_mla_h, neon_mla_b_long, neon_mla_h_long, neon_sat_mla_b_long, neon_sat_mla_h_long, neon_sat_mla_h_scalar_long neon_mla_qqq_8_16 neon_mla_b_q, neon_mla_h_q neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long neon_mla_s, neon_mla_s_long, neon_sat_mla_s_long, neon_mla_h_scalar_q, neon_mla_s_scalar, neon_mla_s_scalar_long, neon_sat_mla_s_scalar_long neon_mla_qqq_32_qqd_32_scalar neon_mla_s_q, neon_mla_s_scalar_q neon_mul_ddd_16_scalar_32_16_long_scalar neon_mul_h_scalar, neon_sat_mul_h_scalar, neon_mul_h_scalar_long, neon_sat_mul_h_scalar_long neon_mul_qqd_32_scalar neon_mul_s_q, neon_sat_mul_s_q, neon_mul_s_scalar_q neon_mla_ddd_16_scalar_qdd_32_16_long_scalar neon_mla_h_scalar, neon_mla_h_scalar_long neon_fp_vadd_ddd_vabs_dd neon_fp_abd_s, neon_fp_abs_s, neon_fp_neg_s, neon_fp_addsub_s, neon_fp_compare_s, neon_fp_minmax_s, neon_fp_mul_s, neon_fp_recpe_s, neon_fp_rsqrte_s, neon_fp_to_int_s, neon_int_to_fp_s neon_fp_vadd_qqq_vabs_qq neon_fp_abd_s_q, neon_fp_abs_s_q, neon_fp_neg_s_q, neon_fp_addsub_s_q, neon_fp_compare_s_q, neon_fp_minmax_s_q, neon_fp_mul_s_q, neon_fp_recpe_s_q, neon_fp_rsqrte_s_q, neon_fp_to_int_s_q, neon_int_to_fp_s_q neon_fp_vsum neon_fp_reduc_add_s, neon_fp_reduc_minmax_s, neon_fp_reduc_add_s_q, neon_fp_reduc_minmax_s_q neon_fp_vmul_ddd neon_fp_mul_s_scalar neon_fp_vmul_qqd neon_fp_mul_s_scalar_q neon_fp_vmla_ddd neon_fp_mla_s neon_fp_vmla_qqq neon_fp_mla_s_q neon_fp_vmla_ddd_scalar neon_fp_mla_s_scalar neon_fp_vmla_qqq_scalar neon_fp_mla_s_scalar_q neon_fp_vrecps_vrsqrts_ddd neon_fp_recps_s, neon_fp_rsqrts_s neon_fp_vrecps_vrsqrts_qqq neon_fp_recps_s_q, neon_fp_rsqrts_s_q neon_bp_simple neon_move_narrow_q, neon_dup, neon_dup_q, neon_permute, neon_zip, neon_ext, neon_rev, neon_rev_q neon_bp_2cycle neon_permute_q, neon_ext_q, neon_tbl1, neon_tbl2 neon_bp_3cycle neon_zip_q, neon_tbl3, neon_tbl4 neon_ldr neon_ldr neon_str neon_str neon_vld1_1_2_regs neon_load1_1reg, neon_load1_1reg_q, neon_load1_2reg, neon_load1_2reg_q, neon_load2_2reg, neon_load2_2reg_q neon_vld1_3_4_regs neon_load1_3reg, neon_load1_3reg_q, neon_load1_4reg, neon_load1_4reg_q neon_vld2_2_regs_vld1_vld2_all_lanes neon_load1_all_lanes, neon_load1_all_lanes_q, neon_load2_all_lanes, neon_load2_all_lanes_q (const_string neon_vld2_4_regs neon_load3_all_lanes, neon_load3_all_lanes_q, neon_load4_all_lanes, neon_load4_all_lanes_q, neon_load2_4reg, neon_load2_4reg_q neon_vld3_vld4 neon_load3_3reg, neon_load3_3reg_q, neon_load4_4reg, neon_load4_4reg_q neon_vld1_vld2_lane f_loads, f_loadd, f_stores, f_stored, neon_load1_one_lane, neon_load1_one_lane_q, neon_load2_one_lane, neon_load2_one_lane_q neon_vld3_vld4_lane neon_load3_one_lane, neon_load3_one_lane_q, neon_load4_one_lane, neon_load4_one_lane_q neon_vst1_1_2_regs_vst2_2_regs neon_store1_1reg, neon_store1_1reg_q, neon_store1_2reg, neon_store1_2reg_q, neon_store2_2reg, neon_store2_2reg_q neon_vst1_3_4_regs neon_store1_3reg, neon_store1_3reg_q, neon_store1_4reg, neon_store1_4reg_q neon_vst2_4_regs_vst3_vst4 neon_store2_4reg, neon_store2_4reg_q, neon_store3_3reg, neon_store3_3reg_q, neon_store4_4reg, neon_store4_4reg_q neon_vst1_vst2_lane neon_store1_one_lane, neon_store1_one_lane_q, neon_store2_one_lane, neon_store2_one_lane_q neon_vst3_vst4_lane neon_store3_one_lane, neon_store3_one_lane_q, neon_store4_one_lane, neon_store4_one_lane_q neon_mcr neon_from_gp, f_mcr neon_mcr_2_mcrr neon_from_gp_q, f_mcrr neon_mrc neon_to_gp, f_mrc neon_mrrc neon_to_gp_q, f_mrrc Bootstrapped in series, and sanity checked. Thanks, James --- gcc 2013-10-15 James Greenhalgh <james.greenha...@arm.com> * config/arm/types.md: Add new types for Neon insns.
diff --git a/gcc/config/arm/types.md b/gcc/config/arm/types.md index 7a96438fd48d5e52dda4508ed637695c8290f492..7cb8aa87a261856e3b89d325a45e6a87d976f697 100644 --- a/gcc/config/arm/types.md +++ b/gcc/config/arm/types.md @@ -247,7 +247,6 @@ ; neon_int_4 ; neon_int_5 ; neon_ldm_2 -; neon_ldr ; neon_mcr_2_mcrr ; neon_mcr ; neon_mla_ddd_16_scalar_qdd_32_16_long_scalar @@ -266,7 +265,6 @@ ; neon_shift_2 ; neon_shift_3 ; neon_stm_2 -; neon_str ; neon_vaba_qqq ; neon_vaba ; neon_vld1_1_2_regs @@ -289,6 +287,299 @@ ; neon_vst2_4_regs_vst3_vst4 ; neon_vst3_vst4_lane ; neon_vst3_vst4 +; +; neon_add +; neon_add_q +; neon_add_widen +; neon_add_long +; neon_qadd +; neon_qadd_q +; neon_add_halve +; neon_add_halve_q +; neon_add_halve_narrow_q +; neon_sub +; neon_sub_q +; neon_sub_widen +; neon_sub_long +; neon_qsub +; neon_qsub_q +; neon_sub_halve +; neon_sub_halve_q +; neon_sub_halve_narrow_q +; neon_abs +; neon_abs_q +; neon_neg +; neon_neg_q +; neon_qneg +; neon_qneg_q +; neon_qabs +; neon_qabs_q +; neon_abd +; neon_abd_q +; neon_abd_long +; neon_minmax +; neon_minmax_q +; neon_compare +; neon_compare_q +; neon_compare_zero +; neon_compare_zero_q +; neon_arith_acc +; neon_arith_acc_q +; neon_reduc_add +; neon_reduc_add_q +; neon_reduc_add_long +; neon_reduc_add_acc +; neon_reduc_add_acc_q +; neon_reduc_minmax +; neon_reduc_minmax_q +; neon_logic +; neon_logic_q +; neon_tst +; neon_tst_q +; neon_shift_imm +; neon_shift_imm_q +; neon_shift_imm_narrow_q +; neon_shift_imm_long +; neon_shift_reg +; neon_shift_reg_q +; neon_shift_acc +; neon_shift_acc_q +; neon_sat_shift_imm +; neon_sat_shift_imm_q +; neon_sat_shift_imm_narrow_q +; neon_sat_shift_reg +; neon_sat_shift_reg_q +; neon_ins +; neon_ins_q +; neon_move +; neon_move_q +; neon_move_narrow_q +; neon_permute +; neon_permute_q +; neon_zip +; neon_zip_q +; neon_tbl1 +; neon_tbl1_q +; neon_tbl2 +; neon_tbl2_q +; neon_tbl3 +; neon_tbl3_q +; neon_tbl4 +; neon_tbl4_q +; neon_bsl +; neon_bsl_q +; neon_cls +; neon_cls_q +; neon_cnt +; neon_cnt_q +; neon_ext +; neon_ext_q +; neon_rbit +; neon_rbit_q +; neon_rev +; neon_rev_q +; neon_mul_b +; neon_mul_b_q +; neon_mul_h +; neon_mul_h_q +; neon_mul_s +; neon_mul_s_q +; neon_mul_b_long +; neon_mul_h_long +; neon_mul_s_long +; neon_mul_h_scalar +; neon_mul_h_scalar_q +; neon_mul_s_scalar +; neon_mul_s_scalar_q +; neon_mul_h_scalar_long +; neon_mul_s_scalar_long +; neon_sat_mul_b +; neon_sat_mul_b_q +; neon_sat_mul_h +; neon_sat_mul_h_q +; neon_sat_mul_s +; neon_sat_mul_s_q +; neon_sat_mul_b_long +; neon_sat_mul_h_long +; neon_sat_mul_s_long +; neon_sat_mul_h_scalar +; neon_sat_mul_h_scalar_q +; neon_sat_mul_s_scalar +; neon_sat_mul_s_scalar_q +; neon_sat_mul_h_scalar_long +; neon_sat_mul_s_scalar_long +; neon_mla_b +; neon_mla_b_q +; neon_mla_h +; neon_mla_h_q +; neon_mla_s +; neon_mla_s_q +; neon_mla_b_long +; neon_mla_h_long +; neon_mla_s_long +; neon_mla_h_scalar +; neon_mla_h_scalar_q +; neon_mla_s_scalar +; neon_mla_s_scalar_q +; neon_mla_h_scalar_long +; neon_mla_s_scalar_long +; neon_sat_mla_b_long +; neon_sat_mla_h_long +; neon_sat_mla_s_long +; neon_sat_mla_h_scalar_long +; neon_sat_mla_s_scalar_long +; neon_to_gp +; neon_to_gp_q +; neon_from_gp +; neon_from_gp_q +; neon_ldr +; neon_load1_1reg +; neon_load1_1reg_q +; neon_load1_2reg +; neon_load1_2reg_q +; neon_load1_3reg +; neon_load1_3reg_q +; neon_load1_4reg +; neon_load1_4reg_q +; neon_load1_all_lanes +; neon_load1_all_lanes_q +; neon_load1_one_lane +; neon_load1_one_lane_q +; neon_load2_2reg +; neon_load2_2reg_q +; neon_load2_4reg +; neon_load2_4reg_q +; neon_load2_all_lanes +; neon_load2_all_lanes_q +; neon_load2_one_lane +; neon_load2_one_lane_q +; neon_load3_3reg +; neon_load3_3reg_q +; neon_load3_all_lanes +; neon_load3_all_lanes_q +; neon_load3_one_lane +; neon_load3_one_lane_q +; neon_load4_4reg +; neon_load4_4reg_q +; neon_load4_all_lanes +; neon_load4_all_lanes_q +; neon_load4_one_lane +; neon_load4_one_lane_q +; neon_str +; neon_store1_1reg +; neon_store1_1reg_q +; neon_store1_2reg +; neon_store1_2reg_q +; neon_store1_3reg +; neon_store1_3reg_q +; neon_store1_4reg +; neon_store1_4reg_q +; neon_store1_one_lane +; neon_store1_one_lane_q +; neon_store2_2reg +; neon_store2_2reg_q +; neon_store2_4reg +; neon_store2_4reg_q +; neon_store2_one_lane +; neon_store2_one_lane_q +; neon_store3_3reg +; neon_store3_3reg_q +; neon_store3_one_lane +; neon_store3_one_lane_q +; neon_store4_4reg +; neon_store4_4reg_q +; neon_store4_one_lane +; neon_store4_one_lane_q +; neon_fp_abs_s +; neon_fp_abs_s_q +; neon_fp_abs_d +; neon_fp_abs_d_q +; neon_fp_neg_s +; neon_fp_neg_s_q +; neon_fp_neg_d +; neon_fp_neg_d_q +; neon_fp_abd_s +; neon_fp_abd_s_q +; neon_fp_abd_d +; neon_fp_abd_d_q +; neon_fp_addsub_s +; neon_fp_addsub_s_q +; neon_fp_addsub_d +; neon_fp_addsub_d_q +; neon_fp_compare_s +; neon_fp_compare_s_q +; neon_fp_compare_d +; neon_fp_compare_d_q +; neon_fp_minmax_s +; neon_fp_minmax_s_q +; neon_fp_minmax_d +; neon_fp_minmax_d_q +; neon_fp_reduc_add_s +; neon_fp_reduc_add_s_q +; neon_fp_reduc_add_d +; neon_fp_reduc_add_d_q +; neon_fp_reduc_minmax_s +; neon_fp_reduc_minmax_s_q +; neon_fp_reduc_minmax_d +; neon_fp_reduc_minmax_d_q +; neon_fp_cvt_narrow_s_q +; neon_fp_cvt_narrow_d_q +; neon_fp_cvt_widen_h +; neon_fp_cvt_widen_s +; neon_fp_to_int_s +; neon_fp_to_int_s_q +; neon_fp_to_int_d +; neon_fp_to_int_d_q +; neon_int_to_fp_s +; neon_int_to_fp_s_q +; neon_int_to_fp_d +; neon_int_to_fp_d_q +; neon_fp_round_s +; neon_fp_round_s_q +; neon_fp_round_d +; neon_fp_round_d_q +; neon_fp_recpe_s +; neon_fp_recpe_s_q +; neon_fp_recpe_d +; neon_fp_recpe_d_q +; neon_fp_recps_s +; neon_fp_recps_s_q +; neon_fp_recps_d +; neon_fp_recps_d_q +; neon_fp_recpx_s +; neon_fp_recpx_s_q +; neon_fp_recpx_d +; neon_fp_recpx_d_q +; neon_fp_rsqrte_s +; neon_fp_rsqrte_s_q +; neon_fp_rsqrte_d +; neon_fp_rsqrte_d_q +; neon_fp_rsqrts_s +; neon_fp_rsqrts_s_q +; neon_fp_rsqrts_d +; neon_fp_rsqrts_d_q +; neon_fp_mul_s +; neon_fp_mul_s_q +; neon_fp_mul_s_scalar +; neon_fp_mul_s_scalar_q +; neon_fp_mul_d +; neon_fp_mul_d_q +; neon_fp_mul_d_scalar_q +; neon_fp_mla_s +; neon_fp_mla_s_q +; neon_fp_mla_s_scalar +; neon_fp_mla_s_scalar_q +; neon_fp_mla_d +; neon_fp_mla_d_q +; neon_fp_mla_d_scalar_q +; neon_fp_sqrt_s +; neon_fp_sqrt_s_q +; neon_fp_sqrt_d +; neon_fp_sqrt_d_q +; neon_fp_div_s +; neon_fp_div_s_q +; neon_fp_div_d +; neon_fp_div_d_q (define_attr "type" "adc_imm,\ @@ -501,7 +792,6 @@ (define_attr "type" neon_int_4,\ neon_int_5,\ neon_ldm_2,\ - neon_ldr,\ neon_mcr_2_mcrr,\ neon_mcr,\ neon_mla_ddd_16_scalar_qdd_32_16_long_scalar,\ @@ -520,7 +810,6 @@ (define_attr "type" neon_shift_2,\ neon_shift_3,\ neon_stm_2,\ - neon_str,\ neon_vaba_qqq,\ neon_vaba,\ neon_vld1_1_2_regs,\ @@ -542,8 +831,333 @@ (define_attr "type" neon_vst1_vst2_lane,\ neon_vst2_4_regs_vst3_vst4,\ neon_vst3_vst4_lane,\ - neon_vst3_vst4" - (const_string "untyped")) + neon_vst3_vst4,\ +\ + neon_add,\ + neon_add_q,\ + neon_add_widen,\ + neon_add_long,\ + neon_qadd,\ + neon_qadd_q,\ + neon_add_halve,\ + neon_add_halve_q,\ + neon_add_halve_narrow_q,\ +\ + neon_sub,\ + neon_sub_q,\ + neon_sub_widen,\ + neon_sub_long,\ + neon_qsub,\ + neon_qsub_q,\ + neon_sub_halve,\ + neon_sub_halve_q,\ + neon_sub_halve_narrow_q,\ +\ + neon_abs,\ + neon_abs_q,\ + neon_neg,\ + neon_neg_q,\ + neon_qneg,\ + neon_qneg_q,\ + neon_qabs,\ + neon_qabs_q,\ + neon_abd,\ + neon_abd_q,\ + neon_abd_long,\ +\ + neon_minmax,\ + neon_minmax_q,\ + neon_compare,\ + neon_compare_q,\ + neon_compare_zero,\ + neon_compare_zero_q,\ +\ + neon_arith_acc,\ + neon_arith_acc_q,\ + neon_reduc_add,\ + neon_reduc_add_q,\ + neon_reduc_add_long,\ + neon_reduc_add_acc,\ + neon_reduc_add_acc_q,\ + neon_reduc_minmax,\ + neon_reduc_minmax_q,\ + neon_logic,\ + neon_logic_q,\ + neon_tst,\ + neon_tst_q,\ +\ + neon_shift_imm,\ + neon_shift_imm_q,\ + neon_shift_imm_narrow_q,\ + neon_shift_imm_long,\ + neon_shift_reg,\ + neon_shift_reg_q,\ + neon_shift_acc,\ + neon_shift_acc_q,\ + neon_sat_shift_imm,\ + neon_sat_shift_imm_q,\ + neon_sat_shift_imm_narrow_q,\ + neon_sat_shift_reg,\ + neon_sat_shift_reg_q,\ +\ + neon_ins,\ + neon_ins_q,\ + neon_move,\ + neon_move_q,\ + neon_move_narrow_q,\ + neon_permute,\ + neon_permute_q,\ + neon_zip,\ + neon_zip_q,\ + neon_tbl1,\ + neon_tbl1_q,\ + neon_tbl2,\ + neon_tbl2_q,\ + neon_tbl3,\ + neon_tbl3_q,\ + neon_tbl4,\ + neon_tbl4_q,\ +\ + neon_bsl,\ + neon_bsl_q,\ + neon_cls,\ + neon_cls_q,\ + neon_cnt,\ + neon_cnt_q,\ + neon_dup,\ + neon_dup_q,\ + neon_ext,\ + neon_ext_q,\ + neon_rbit,\ + neon_rbit_q,\ + neon_rev,\ + neon_rev_q,\ +\ + neon_mul_b,\ + neon_mul_b_q,\ + neon_mul_h,\ + neon_mul_h_q,\ + neon_mul_s,\ + neon_mul_s_q,\ + neon_mul_b_long,\ + neon_mul_h_long,\ + neon_mul_s_long,\ + neon_mul_h_scalar,\ + neon_mul_h_scalar_q,\ + neon_mul_s_scalar,\ + neon_mul_s_scalar_q,\ + neon_mul_h_scalar_long,\ + neon_mul_s_scalar_long,\ +\ + neon_sat_mul_b,\ + neon_sat_mul_b_q,\ + neon_sat_mul_h,\ + neon_sat_mul_h_q,\ + neon_sat_mul_s,\ + neon_sat_mul_s_q,\ + neon_sat_mul_b_long,\ + neon_sat_mul_h_long,\ + neon_sat_mul_s_long,\ + neon_sat_mul_h_scalar,\ + neon_sat_mul_h_scalar_q,\ + neon_sat_mul_s_scalar,\ + neon_sat_mul_s_scalar_q,\ + neon_sat_mul_h_scalar_long,\ + neon_sat_mul_s_scalar_long,\ +\ + neon_mla_b,\ + neon_mla_b_q,\ + neon_mla_h,\ + neon_mla_h_q,\ + neon_mla_s,\ + neon_mla_s_q,\ + neon_mla_b_long,\ + neon_mla_h_long,\ + neon_mla_s_long,\ + neon_mla_h_scalar,\ + neon_mla_h_scalar_q,\ + neon_mla_s_scalar,\ + neon_mla_s_scalar_q,\ + neon_mla_h_scalar_long,\ + neon_mla_s_scalar_long,\ +\ + neon_sat_mla_b_long,\ + neon_sat_mla_h_long,\ + neon_sat_mla_s_long,\ + neon_sat_mla_h_scalar_long,\ + neon_sat_mla_s_scalar_long,\ +\ + neon_to_gp,\ + neon_to_gp_q,\ + neon_from_gp,\ + neon_from_gp_q,\ +\ + neon_ldr,\ + neon_load1_1reg,\ + neon_load1_1reg_q,\ + neon_load1_2reg,\ + neon_load1_2reg_q,\ + neon_load1_3reg,\ + neon_load1_3reg_q,\ + neon_load1_4reg,\ + neon_load1_4reg_q,\ + neon_load1_all_lanes,\ + neon_load1_all_lanes_q,\ + neon_load1_one_lane,\ + neon_load1_one_lane_q,\ +\ + neon_load2_2reg,\ + neon_load2_2reg_q,\ + neon_load2_4reg,\ + neon_load2_4reg_q,\ + neon_load2_all_lanes,\ + neon_load2_all_lanes_q,\ + neon_load2_one_lane,\ + neon_load2_one_lane_q,\ +\ + neon_load3_3reg,\ + neon_load3_3reg_q,\ + neon_load3_all_lanes,\ + neon_load3_all_lanes_q,\ + neon_load3_one_lane,\ + neon_load3_one_lane_q,\ +\ + neon_load4_4reg,\ + neon_load4_4reg_q,\ + neon_load4_all_lanes,\ + neon_load4_all_lanes_q,\ + neon_load4_one_lane,\ + neon_load4_one_lane_q,\ +\ + neon_str,\ + neon_store1_1reg,\ + neon_store1_1reg_q,\ + neon_store1_2reg,\ + neon_store1_2reg_q,\ + neon_store1_3reg,\ + neon_store1_3reg_q,\ + neon_store1_4reg,\ + neon_store1_4reg_q,\ + neon_store1_one_lane,\ + neon_store1_one_lane_q,\ +\ + neon_store2_2reg,\ + neon_store2_2reg_q,\ + neon_store2_4reg,\ + neon_store2_4reg_q,\ + neon_store2_one_lane,\ + neon_store2_one_lane_q,\ +\ + neon_store3_3reg,\ + neon_store3_3reg_q,\ + neon_store3_one_lane,\ + neon_store3_one_lane_q,\ +\ + neon_store4_4reg,\ + neon_store4_4reg_q,\ + neon_store4_one_lane,\ + neon_store4_one_lane_q,\ +\ + neon_fp_abs_s,\ + neon_fp_abs_s_q,\ + neon_fp_abs_d,\ + neon_fp_abs_d_q,\ + neon_fp_neg_s,\ + neon_fp_neg_s_q,\ + neon_fp_neg_d,\ + neon_fp_neg_d_q,\ +\ + neon_fp_abd_s,\ + neon_fp_abd_s_q,\ + neon_fp_abd_d,\ + neon_fp_abd_d_q,\ + neon_fp_addsub_s,\ + neon_fp_addsub_s_q,\ + neon_fp_addsub_d,\ + neon_fp_addsub_d_q,\ + neon_fp_compare_s,\ + neon_fp_compare_s_q,\ + neon_fp_compare_d,\ + neon_fp_compare_d_q,\ + neon_fp_minmax_s,\ + neon_fp_minmax_s_q,\ + neon_fp_minmax_d,\ + neon_fp_minmax_d_q,\ +\ + neon_fp_reduc_add_s,\ + neon_fp_reduc_add_s_q,\ + neon_fp_reduc_add_d,\ + neon_fp_reduc_add_d_q,\ + neon_fp_reduc_minmax_s,\ + neon_fp_reduc_minmax_s_q,\ + neon_fp_reduc_minmax_d,\ + neon_fp_reduc_minmax_d_q,\ +\ + neon_fp_cvt_narrow_s_q,\ + neon_fp_cvt_narrow_d_q,\ + neon_fp_cvt_widen_h,\ + neon_fp_cvt_widen_s,\ +\ + neon_fp_to_int_s,\ + neon_fp_to_int_s_q,\ + neon_fp_to_int_d,\ + neon_fp_to_int_d_q,\ + neon_int_to_fp_s,\ + neon_int_to_fp_s_q,\ + neon_int_to_fp_d,\ + neon_int_to_fp_d_q,\ + neon_fp_round_s,\ + neon_fp_round_s_q,\ + neon_fp_round_d,\ + neon_fp_round_d_q,\ +\ + neon_fp_recpe_s,\ + neon_fp_recpe_s_q,\ + neon_fp_recpe_d,\ + neon_fp_recpe_d_q,\ + neon_fp_recps_s,\ + neon_fp_recps_s_q,\ + neon_fp_recps_d,\ + neon_fp_recps_d_q,\ + neon_fp_recpx_s,\ + neon_fp_recpx_s_q,\ + neon_fp_recpx_d,\ + neon_fp_recpx_d_q,\ +\ + neon_fp_rsqrte_s,\ + neon_fp_rsqrte_s_q,\ + neon_fp_rsqrte_d,\ + neon_fp_rsqrte_d_q,\ + neon_fp_rsqrts_s,\ + neon_fp_rsqrts_s_q,\ + neon_fp_rsqrts_d,\ + neon_fp_rsqrts_d_q,\ +\ + neon_fp_mul_s,\ + neon_fp_mul_s_q,\ + neon_fp_mul_s_scalar,\ + neon_fp_mul_s_scalar_q,\ + neon_fp_mul_d,\ + neon_fp_mul_d_q,\ + neon_fp_mul_d_scalar_q,\ +\ + neon_fp_mla_s,\ + neon_fp_mla_s_q,\ + neon_fp_mla_s_scalar,\ + neon_fp_mla_s_scalar_q,\ + neon_fp_mla_d,\ + neon_fp_mla_d_q,\ + neon_fp_mla_d_scalar_q,\ +\ + neon_fp_sqrt_s,\ + neon_fp_sqrt_s_q,\ + neon_fp_sqrt_d,\ + neon_fp_sqrt_d_q,\ + neon_fp_div_s,\ + neon_fp_div_s_q,\ + neon_fp_div_d,\ + neon_fp_div_d_q" + (const_string "untyped")) ; Is this an (integer side) multiply with a 32-bit (or smaller) result? (define_attr "mul32" "no,yes"