This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[ARM] [1/10] Add new types to describe Neon insns.


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.greenhalgh@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"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]