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"

Reply via email to