Commit 20445ed6 by James Greenhalgh Committed by James Greenhalgh

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

gcc/
	* config/arm/types.md: Add new types for Neon insns.

From-SVN: r203611
parent 96937d47
2013-10-15 James Greenhalgh <james.greenhalgh@arm.com>
* config/arm/types.md: Add new types for Neon insns.
2013-10-15 Alexander Ivchenko <alexander.ivchenko@intel.com> 2013-10-15 Alexander Ivchenko <alexander.ivchenko@intel.com>
Maxim Kuznetsov <maxim.kuznetsov@intel.com> Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Sergey Lega <sergey.s.lega@intel.com> Sergey Lega <sergey.s.lega@intel.com>
......
...@@ -247,7 +247,6 @@ ...@@ -247,7 +247,6 @@
; neon_int_4 ; neon_int_4
; neon_int_5 ; neon_int_5
; neon_ldm_2 ; neon_ldm_2
; neon_ldr
; neon_mcr_2_mcrr ; neon_mcr_2_mcrr
; neon_mcr ; neon_mcr
; neon_mla_ddd_16_scalar_qdd_32_16_long_scalar ; neon_mla_ddd_16_scalar_qdd_32_16_long_scalar
...@@ -266,7 +265,6 @@ ...@@ -266,7 +265,6 @@
; neon_shift_2 ; neon_shift_2
; neon_shift_3 ; neon_shift_3
; neon_stm_2 ; neon_stm_2
; neon_str
; neon_vaba_qqq ; neon_vaba_qqq
; neon_vaba ; neon_vaba
; neon_vld1_1_2_regs ; neon_vld1_1_2_regs
...@@ -289,6 +287,299 @@ ...@@ -289,6 +287,299 @@
; neon_vst2_4_regs_vst3_vst4 ; neon_vst2_4_regs_vst3_vst4
; neon_vst3_vst4_lane ; neon_vst3_vst4_lane
; neon_vst3_vst4 ; 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" (define_attr "type"
"adc_imm,\ "adc_imm,\
...@@ -501,7 +792,6 @@ ...@@ -501,7 +792,6 @@
neon_int_4,\ neon_int_4,\
neon_int_5,\ neon_int_5,\
neon_ldm_2,\ neon_ldm_2,\
neon_ldr,\
neon_mcr_2_mcrr,\ neon_mcr_2_mcrr,\
neon_mcr,\ neon_mcr,\
neon_mla_ddd_16_scalar_qdd_32_16_long_scalar,\ neon_mla_ddd_16_scalar_qdd_32_16_long_scalar,\
...@@ -520,7 +810,6 @@ ...@@ -520,7 +810,6 @@
neon_shift_2,\ neon_shift_2,\
neon_shift_3,\ neon_shift_3,\
neon_stm_2,\ neon_stm_2,\
neon_str,\
neon_vaba_qqq,\ neon_vaba_qqq,\
neon_vaba,\ neon_vaba,\
neon_vld1_1_2_regs,\ neon_vld1_1_2_regs,\
...@@ -542,8 +831,333 @@ ...@@ -542,8 +831,333 @@
neon_vst1_vst2_lane,\ neon_vst1_vst2_lane,\
neon_vst2_4_regs_vst3_vst4,\ neon_vst2_4_regs_vst3_vst4,\
neon_vst3_vst4_lane,\ neon_vst3_vst4_lane,\
neon_vst3_vst4" neon_vst3_vst4,\
(const_string "untyped")) \
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? ; Is this an (integer side) multiply with a 32-bit (or smaller) result?
(define_attr "mul32" "no,yes" (define_attr "mul32" "no,yes"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment