From 78ec30368544d09a0cd1423b2eefc2496bb29632 Mon Sep 17 00:00:00 2001 From: James Greenhalgh Date: Fri, 15 Nov 2013 17:05:37 +0000 Subject: [PATCH] [AArch64] Remove simd_type gcc/ * config/aarch64/aarch64-simd.md: Remove simd_type from all patterns. * config/aarch64/aarch64.md: Likewise, correct "type" attribute where it is incorrect or missing. From-SVN: r204852 --- gcc/ChangeLog | 7 + gcc/config/aarch64/aarch64-simd.md | 961 ++++++++----------------------------- gcc/config/aarch64/aarch64.md | 48 +- 3 files changed, 226 insertions(+), 790 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e5d586c..89a7f75 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-11-15 James Greenhalgh + + * config/aarch64/aarch64-simd.md: Remove simd_type from all + patterns. + * config/aarch64/aarch64.md: Likewise, correct "type" attribute + where it is incorrect or missing. + 2013-11-15 Richard Sandiford * dwarf2out.c (gen_enumeration_type_die): Remove unnecessary diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 0b16b05..b9ebdf5 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -18,226 +18,6 @@ ;; along with GCC; see the file COPYING3. If not see ;; . - -; Main data types used by the insntructions - -(define_attr "simd_mode" "unknown,none,V8QI,V16QI,V4HI,V8HI,V2SI,V4SI,V2DI,V2SF,V4SF,V2DF,OI,CI,XI,DI,DF,SI,SF,HI,QI" - (const_string "unknown")) - - -; Classification of AdvSIMD instructions for scheduling purposes. -; Do not set this attribute and the "v8type" attribute together in -; any instruction pattern. - -; simd_abd integer absolute difference and accumulate. -; simd_abdl integer absolute difference and accumulate (long). -; simd_adal integer add and accumulate (long). -; simd_add integer addition/subtraction. -; simd_addl integer addition/subtraction (long). -; simd_addlv across lanes integer sum (long). -; simd_addn integer addition/subtraction (narrow). -; simd_addn2 integer addition/subtraction (narrow, high). -; simd_addv across lanes integer sum. -; simd_cls count leading sign/zero bits. -; simd_cmp compare / create mask. -; simd_cnt population count. -; simd_dup duplicate element. -; simd_dupgp duplicate general purpose register. -; simd_ext bitwise extract from pair. -; simd_fabd floating point absolute difference. -; simd_fadd floating point add/sub. -; simd_fcmp floating point compare. -; simd_fcvti floating point convert to integer. -; simd_fcvtl floating-point convert upsize. -; simd_fcvtn floating-point convert downsize (narrow). -; simd_fcvtn2 floating-point convert downsize (narrow, high). -; simd_fdiv floating point division. -; simd_fminmax floating point min/max. -; simd_fminmaxv across lanes floating point min/max. -; simd_fmla floating point multiply-add. -; simd_fmla_elt floating point multiply-add (by element). -; simd_fmul floating point multiply. -; simd_fmul_elt floating point multiply (by element). -; simd_fnegabs floating point neg/abs. -; simd_frecpe floating point reciprocal estimate. -; simd_frecps floating point reciprocal step. -; simd_frecpx floating point reciprocal exponent. -; simd_frint floating point round to integer. -; simd_fsqrt floating point square root. -; simd_icvtf integer convert to floating point. -; simd_ins insert element. -; simd_insgp insert general purpose register. -; simd_load1 load multiple structures to one register (LD1). -; simd_load1r load single structure to all lanes of one register (LD1R). -; simd_load1s load single structure to one lane of one register (LD1 [index]). -; simd_load2 load multiple structures to two registers (LD1, LD2). -; simd_load2r load single structure to all lanes of two registers (LD1R, LD2R). -; simd_load2s load single structure to one lane of two registers (LD2 [index]). -; simd_load3 load multiple structures to three registers (LD1, LD3). -; simd_load3r load single structure to all lanes of three registers (LD3R). -; simd_load3s load single structure to one lane of three registers (LD3 [index]). -; simd_load4 load multiple structures to four registers (LD1, LD2, LD4). -; simd_load4r load single structure to all lanes of four registers (LD4R). -; simd_load4s load single structure to one lane of four registers (LD4 [index]). -; simd_logic logical operation. -; simd_logic_imm logcial operation (immediate). -; simd_minmax integer min/max. -; simd_minmaxv across lanes integer min/max, -; simd_mla integer multiply-accumulate. -; simd_mla_elt integer multiply-accumulate (by element). -; simd_mlal integer multiply-accumulate (long). -; simd_mlal_elt integer multiply-accumulate (by element, long). -; simd_move move register. -; simd_move_imm move immediate. -; simd_movgp move element to general purpose register. -; simd_mul integer multiply. -; simd_mul_elt integer multiply (by element). -; simd_mull integer multiply (long). -; simd_mull_elt integer multiply (by element, long). -; simd_negabs integer negate/absolute. -; simd_rbit bitwise reverse. -; simd_rcpe integer reciprocal estimate. -; simd_rcps integer reciprocal square root. -; simd_rev element reverse. -; simd_sat_add integer saturating addition/subtraction. -; simd_sat_mlal integer saturating multiply-accumulate (long). -; simd_sat_mlal_elt integer saturating multiply-accumulate (by element, long). -; simd_sat_mul integer saturating multiply. -; simd_sat_mul_elt integer saturating multiply (by element). -; simd_sat_mull integer saturating multiply (long). -; simd_sat_mull_elt integer saturating multiply (by element, long). -; simd_sat_negabs integer saturating negate/absolute. -; simd_sat_shift integer saturating shift. -; simd_sat_shift_imm integer saturating shift (immediate). -; simd_sat_shiftn_imm integer saturating shift (narrow, immediate). -; simd_sat_shiftn2_imm integer saturating shift (narrow, high, immediate). -; simd_shift shift register/vector. -; simd_shift_acc shift accumulate. -; simd_shift_imm shift immediate. -; simd_shift_imm_acc shift immediate and accumualte. -; simd_shiftl shift register/vector (long). -; simd_shiftl_imm shift register/vector (long, immediate). -; simd_shiftn_imm shift register/vector (narrow, immediate). -; simd_shiftn2_imm shift register/vector (narrow, high, immediate). -; simd_store1 store multiple structures from one register (ST1). -; simd_store1s store single structure from one lane of one register (ST1 [index]). -; simd_store2 store multiple structures from two registers (ST1, ST2). -; simd_store2s store single structure from one lane of two registers (ST2 [index]). -; simd_store3 store multiple structures from three registers (ST1, ST3). -; simd_store3s store single structure from one lane of three register (ST3 [index]). -; simd_store4 store multiple structures from four registers (ST1, ST2, ST4). -; simd_store4s store single structure from one lane for four registers (ST4 [index]). -; simd_tbl table lookup. -; simd_trn transpose. -; simd_uzp unzip. -; simd_zip zip. - -(define_attr "simd_type" - "simd_abd,\ - simd_abdl,\ - simd_adal,\ - simd_add,\ - simd_addl,\ - simd_addlv,\ - simd_addn,\ - simd_addn2,\ - simd_addv,\ - simd_cls,\ - simd_cmp,\ - simd_cnt,\ - simd_dup,\ - simd_dupgp,\ - simd_ext,\ - simd_fabd,\ - simd_fadd,\ - simd_fcmp,\ - simd_fcvti,\ - simd_fcvtl,\ - simd_fcvtn,\ - simd_fcvtn2,\ - simd_fdiv,\ - simd_fminmax,\ - simd_fminmaxv,\ - simd_fmla,\ - simd_fmla_elt,\ - simd_fmul,\ - simd_fmul_elt,\ - simd_fnegabs,\ - simd_frecpe,\ - simd_frecps,\ - simd_frecpx,\ - simd_frint,\ - simd_fsqrt,\ - simd_icvtf,\ - simd_ins,\ - simd_insgp,\ - simd_load1,\ - simd_load1r,\ - simd_load1s,\ - simd_load2,\ - simd_load2r,\ - simd_load2s,\ - simd_load3,\ - simd_load3r,\ - simd_load3s,\ - simd_load4,\ - simd_load4r,\ - simd_load4s,\ - simd_logic,\ - simd_logic_imm,\ - simd_minmax,\ - simd_minmaxv,\ - simd_mla,\ - simd_mla_elt,\ - simd_mlal,\ - simd_mlal_elt,\ - simd_movgp,\ - simd_move,\ - simd_move_imm,\ - simd_mul,\ - simd_mul_elt,\ - simd_mull,\ - simd_mull_elt,\ - simd_negabs,\ - simd_rbit,\ - simd_rcpe,\ - simd_rcps,\ - simd_rev,\ - simd_sat_add,\ - simd_sat_mlal,\ - simd_sat_mlal_elt,\ - simd_sat_mul,\ - simd_sat_mul_elt,\ - simd_sat_mull,\ - simd_sat_mull_elt,\ - simd_sat_negabs,\ - simd_sat_shift,\ - simd_sat_shift_imm,\ - simd_sat_shiftn_imm,\ - simd_sat_shiftn2_imm,\ - simd_shift,\ - simd_shift_acc,\ - simd_shift_imm,\ - simd_shift_imm_acc,\ - simd_shiftl,\ - simd_shiftl_imm,\ - simd_shiftn_imm,\ - simd_shiftn2_imm,\ - simd_store1,\ - simd_store1s,\ - simd_store2,\ - simd_store2s,\ - simd_store3,\ - simd_store3s,\ - simd_store4,\ - simd_store4s,\ - simd_tbl,\ - simd_trn,\ - simd_uzp,\ - simd_zip,\ - none" - (const_string "none")) - (define_expand "mov" [(set (match_operand:VALL 0 "aarch64_simd_nonimmediate_operand" "") (match_operand:VALL 1 "aarch64_simd_general_operand" ""))] @@ -268,9 +48,7 @@ "@ dup\\t%0., %1 dup\\t%0., %1.[0]" - [(set_attr "simd_type" "simd_dupgp, simd_dup") - (set_attr "type" "neon_from_gp, neon_dup") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_from_gp, neon_dup")] ) (define_insn "aarch64_simd_dup" @@ -278,9 +56,7 @@ (vec_duplicate:VDQF (match_operand: 1 "register_operand" "w")))] "TARGET_SIMD" "dup\\t%0., %1.[0]" - [(set_attr "simd_type" "simd_dup") - (set_attr "type" "neon_dup") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_dup")] ) (define_insn "aarch64_dup_lane" @@ -292,9 +68,7 @@ )))] "TARGET_SIMD" "dup\\t%0., %1.[%2]" - [(set_attr "simd_type" "simd_dup") - (set_attr "type" "neon_dup") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_dup")] ) (define_insn "aarch64_dup_lane_" @@ -306,9 +80,7 @@ )))] "TARGET_SIMD" "dup\\t%0., %1.[%2]" - [(set_attr "simd_type" "simd_dup") - (set_attr "type" "neon_dup") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_dup")] ) (define_insn "*aarch64_simd_mov" @@ -334,11 +106,9 @@ default: gcc_unreachable (); } } - [(set_attr "simd_type" "simd_load1,simd_store1,simd_move,simd_movgp,simd_insgp,simd_move,simd_move_imm") - (set_attr "type" "neon_load1_1reg, neon_store1_1reg,\ + [(set_attr "type" "neon_load1_1reg, neon_store1_1reg,\ neon_logic, neon_to_gp, neon_from_gp,\ - mov_reg, neon_move") - (set_attr "simd_mode" "")] + mov_reg, neon_move")] ) (define_insn "*aarch64_simd_mov" @@ -368,11 +138,9 @@ gcc_unreachable (); } } - [(set_attr "simd_type" "simd_load1,simd_store1,simd_move,simd_movgp,simd_insgp,simd_move,simd_move_imm") - (set_attr "type" "neon_load1_1reg, neon_store1_1reg,\ + [(set_attr "type" "neon_load1_1reg, neon_store1_1reg,\ neon_logic, multiple, multiple, multiple,\ neon_move") - (set_attr "simd_mode" "") (set_attr "length" "4,4,4,8,8,8,4")] ) @@ -451,9 +219,7 @@ (match_operand:VQ 2 "vect_par_cnst_lo_half" "")))] "TARGET_SIMD && reload_completed" "umov\t%0, %1.d[0]" - [(set_attr "simd_type" "simd_movgp") - (set_attr "type" "neon_to_gp") - (set_attr "simd_mode" "") + [(set_attr "type" "neon_to_gp") (set_attr "length" "4") ]) @@ -464,9 +230,7 @@ (match_operand:VQ 2 "vect_par_cnst_hi_half" "")))] "TARGET_SIMD && reload_completed" "umov\t%0, %1.d[1]" - [(set_attr "simd_type" "simd_movgp") - (set_attr "type" "neon_to_gp") - (set_attr "simd_mode" "") + [(set_attr "type" "neon_to_gp") (set_attr "length" "4") ]) @@ -476,9 +240,7 @@ (match_operand:VDQ 2 "register_operand" "w")))] "TARGET_SIMD" "orn\t%0., %2., %1." - [(set_attr "simd_type" "simd_logic") - (set_attr "type" "neon_logic") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_logic")] ) (define_insn "bic3" @@ -487,9 +249,7 @@ (match_operand:VDQ 2 "register_operand" "w")))] "TARGET_SIMD" "bic\t%0., %2., %1." - [(set_attr "simd_type" "simd_logic") - (set_attr "type" "neon_logic") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_logic")] ) (define_insn "add3" @@ -498,9 +258,7 @@ (match_operand:VDQ 2 "register_operand" "w")))] "TARGET_SIMD" "add\t%0., %1., %2." - [(set_attr "simd_type" "simd_add") - (set_attr "type" "neon_add") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_add")] ) (define_insn "sub3" @@ -509,9 +267,7 @@ (match_operand:VDQ 2 "register_operand" "w")))] "TARGET_SIMD" "sub\t%0., %1., %2." - [(set_attr "simd_type" "simd_add") - (set_attr "type" "neon_sub") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sub")] ) (define_insn "mul3" @@ -520,9 +276,7 @@ (match_operand:VDQM 2 "register_operand" "w")))] "TARGET_SIMD" "mul\t%0., %1., %2." - [(set_attr "simd_type" "simd_mul") - (set_attr "type" "neon_mul_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mul_")] ) (define_insn "*aarch64_mul3_elt" @@ -535,9 +289,7 @@ (match_operand:VMUL 3 "register_operand" "w")))] "TARGET_SIMD" "mul\\t%0., %3., %1.[%2]" - [(set_attr "simd_type" "simd_mul_elt") - (set_attr "type" "neon_mul__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mul__scalar")] ) (define_insn "*aarch64_mul3_elt_" @@ -550,9 +302,7 @@ (match_operand:VMUL_CHANGE_NLANES 3 "register_operand" "w")))] "TARGET_SIMD" "mul\\t%0., %3., %1.[%2]" - [(set_attr "simd_type" "simd_mul_elt") - (set_attr "type" "neon_mul__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mul__scalar")] ) (define_insn "*aarch64_mul3_elt_to_128df" @@ -563,9 +313,7 @@ (match_operand:V2DF 1 "register_operand" "w")))] "TARGET_SIMD" "fmul\\t%0.2d, %1.2d, %2.d[0]" - [(set_attr "simd_type" "simd_fmul_elt") - (set_attr "type" "neon_fp_mul_d_scalar_q") - (set_attr "simd_mode" "V2DF")] + [(set_attr "type" "neon_fp_mul_d_scalar_q")] ) (define_insn "*aarch64_mul3_elt_to_64v2df" @@ -577,9 +325,7 @@ (match_operand:DF 3 "register_operand" "w")))] "TARGET_SIMD" "fmul\\t%0.2d, %3.2d, %1.d[%2]" - [(set_attr "simd_type" "simd_fmul_elt") - (set_attr "type" "neon_fp_mul_d_scalar_q") - (set_attr "simd_mode" "V2DF")] + [(set_attr "type" "neon_fp_mul_d_scalar_q")] ) (define_insn "neg2" @@ -587,9 +333,7 @@ (neg:VDQ (match_operand:VDQ 1 "register_operand" "w")))] "TARGET_SIMD" "neg\t%0., %1." - [(set_attr "simd_type" "simd_negabs") - (set_attr "type" "neon_neg") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_neg")] ) (define_insn "abs2" @@ -597,9 +341,7 @@ (abs:VDQ (match_operand:VDQ 1 "register_operand" "w")))] "TARGET_SIMD" "abs\t%0., %1." - [(set_attr "simd_type" "simd_negabs") - (set_attr "type" "neon_abs") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_abs")] ) (define_insn "abd_3" @@ -609,9 +351,7 @@ (match_operand:VDQ_BHSI 2 "register_operand" "w"))))] "TARGET_SIMD" "sabd\t%0., %1., %2." - [(set_attr "simd_type" "simd_abd") - (set_attr "type" "neon_abd") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_abd")] ) (define_insn "aba_3" @@ -622,9 +362,7 @@ (match_operand:VDQ_BHSI 3 "register_operand" "0")))] "TARGET_SIMD" "saba\t%0., %1., %2." - [(set_attr "simd_type" "simd_abd") - (set_attr "type" "neon_arith_acc") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_arith_acc")] ) (define_insn "fabd_3" @@ -634,9 +372,7 @@ (match_operand:VDQF 2 "register_operand" "w"))))] "TARGET_SIMD" "fabd\t%0., %1., %2." - [(set_attr "simd_type" "simd_fabd") - (set_attr "type" "neon_fp_abd_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_abd_")] ) (define_insn "*fabd_scalar3" @@ -646,9 +382,7 @@ (match_operand:GPF 2 "register_operand" "w"))))] "TARGET_SIMD" "fabd\t%0, %1, %2" - [(set_attr "simd_type" "simd_fabd") - (set_attr "type" "neon_fp_abd_") - (set_attr "mode" "")] + [(set_attr "type" "neon_fp_abd_")] ) (define_insn "and3" @@ -657,9 +391,7 @@ (match_operand:VDQ 2 "register_operand" "w")))] "TARGET_SIMD" "and\t%0., %1., %2." - [(set_attr "simd_type" "simd_logic") - (set_attr "type" "neon_logic") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_logic")] ) (define_insn "ior3" @@ -668,9 +400,7 @@ (match_operand:VDQ 2 "register_operand" "w")))] "TARGET_SIMD" "orr\t%0., %1., %2." - [(set_attr "simd_type" "simd_logic") - (set_attr "type" "neon_logic") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_logic")] ) (define_insn "xor3" @@ -679,9 +409,7 @@ (match_operand:VDQ 2 "register_operand" "w")))] "TARGET_SIMD" "eor\t%0., %1., %2." - [(set_attr "simd_type" "simd_logic") - (set_attr "type" "neon_logic") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_logic")] ) (define_insn "one_cmpl2" @@ -689,9 +417,7 @@ (not:VDQ (match_operand:VDQ 1 "register_operand" "w")))] "TARGET_SIMD" "not\t%0., %1." - [(set_attr "simd_type" "simd_logic") - (set_attr "type" "neon_logic") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_logic")] ) (define_insn "aarch64_simd_vec_set" @@ -705,9 +431,7 @@ "@ ins\t%0.[%p2], %w1 ins\\t%0.[%p2], %1.[0]" - [(set_attr "simd_type" "simd_insgp, simd_ins") - (set_attr "type" "neon_from_gp, neon_ins") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_from_gp, neon_ins")] ) (define_insn "aarch64_simd_lshr" @@ -716,9 +440,7 @@ (match_operand:VDQ 2 "aarch64_simd_rshift_imm" "Dr")))] "TARGET_SIMD" "ushr\t%0., %1., %2" - [(set_attr "simd_type" "simd_shift_imm") - (set_attr "type" "neon_shift_imm") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_imm")] ) (define_insn "aarch64_simd_ashr" @@ -727,9 +449,7 @@ (match_operand:VDQ 2 "aarch64_simd_rshift_imm" "Dr")))] "TARGET_SIMD" "sshr\t%0., %1., %2" - [(set_attr "simd_type" "simd_shift_imm") - (set_attr "type" "neon_shift_imm") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_imm")] ) (define_insn "aarch64_simd_imm_shl" @@ -738,9 +458,7 @@ (match_operand:VDQ 2 "aarch64_simd_lshift_imm" "Dl")))] "TARGET_SIMD" "shl\t%0., %1., %2" - [(set_attr "simd_type" "simd_shift_imm") - (set_attr "type" "neon_shift_imm") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_imm")] ) (define_insn "aarch64_simd_reg_sshl" @@ -749,9 +467,7 @@ (match_operand:VDQ 2 "register_operand" "w")))] "TARGET_SIMD" "sshl\t%0., %1., %2." - [(set_attr "simd_type" "simd_shift") - (set_attr "type" "neon_shift_reg") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_reg")] ) (define_insn "aarch64_simd_reg_shl_unsigned" @@ -761,9 +477,7 @@ UNSPEC_ASHIFT_UNSIGNED))] "TARGET_SIMD" "ushl\t%0., %1., %2." - [(set_attr "simd_type" "simd_shift") - (set_attr "type" "neon_shift_reg") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_reg")] ) (define_insn "aarch64_simd_reg_shl_signed" @@ -773,9 +487,7 @@ UNSPEC_ASHIFT_SIGNED))] "TARGET_SIMD" "sshl\t%0., %1., %2." - [(set_attr "simd_type" "simd_shift") - (set_attr "type" "neon_shift_reg") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_reg")] ) (define_expand "ashl3" @@ -983,9 +695,7 @@ "@ ins\t%0.d[%p2], %1 ins\\t%0.d[%p2], %1.d[0]" - [(set_attr "simd_type" "simd_insgp, simd_ins") - (set_attr "type" "neon_from_gp, neon_ins_q") - (set_attr "simd_mode" "V2DI")] + [(set_attr "type" "neon_from_gp, neon_ins_q")] ) (define_expand "vec_setv2di" @@ -1010,9 +720,7 @@ (match_operand:SI 2 "immediate_operand" "i")))] "TARGET_SIMD" "ins\t%0.[%p2], %1.[0]"; - [(set_attr "simd_type" "simd_ins") - (set_attr "type" "neon_ins") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_ins")] ) (define_expand "vec_set" @@ -1036,9 +744,7 @@ (match_operand:VQ_S 1 "register_operand" "0")))] "TARGET_SIMD" "mla\t%0., %2., %3." - [(set_attr "simd_type" "simd_mla") - (set_attr "type" "neon_mla_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla_")] ) (define_insn "*aarch64_mla_elt" @@ -1053,9 +759,7 @@ (match_operand:VDQHS 4 "register_operand" "0")))] "TARGET_SIMD" "mla\t%0., %3., %1.[%2]" - [(set_attr "simd_type" "simd_mla") - (set_attr "type" "neon_mla__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla__scalar")] ) (define_insn "*aarch64_mla_elt_" @@ -1070,9 +774,7 @@ (match_operand:VDQHS 4 "register_operand" "0")))] "TARGET_SIMD" "mla\t%0., %3., %1.[%2]" - [(set_attr "simd_type" "simd_mla") - (set_attr "type" "neon_mla__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla__scalar")] ) (define_insn "aarch64_mls" @@ -1082,9 +784,7 @@ (match_operand:VQ_S 3 "register_operand" "w"))))] "TARGET_SIMD" "mls\t%0., %2., %3." - [(set_attr "simd_type" "simd_mla") - (set_attr "type" "neon_mla_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla_")] ) (define_insn "*aarch64_mls_elt" @@ -1099,9 +799,7 @@ (match_operand:VDQHS 3 "register_operand" "w"))))] "TARGET_SIMD" "mls\t%0., %3., %1.[%2]" - [(set_attr "simd_type" "simd_mla") - (set_attr "type" "neon_mla__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla__scalar")] ) (define_insn "*aarch64_mls_elt_" @@ -1116,9 +814,7 @@ (match_operand:VDQHS 3 "register_operand" "w"))))] "TARGET_SIMD" "mls\t%0., %3., %1.[%2]" - [(set_attr "simd_type" "simd_mla") - (set_attr "type" "neon_mla__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla__scalar")] ) ;; Max/Min operations. @@ -1128,9 +824,7 @@ (match_operand:VQ_S 2 "register_operand" "w")))] "TARGET_SIMD" "\t%0., %1., %2." - [(set_attr "simd_type" "simd_minmax") - (set_attr "type" "neon_minmax") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_minmax")] ) ;; Move into low-half clearing high half to 0. @@ -1145,10 +839,7 @@ dup\\t%d0, %1.d[0] fmov\\t%d0, %1 dup\\t%d0, %1" - [(set_attr "v8type" "*,fmov,*") - (set_attr "type" "neon_dup,fmov,neon_dup") - (set_attr "simd_type" "simd_dup,*,simd_dup") - (set_attr "simd_mode" "") + [(set_attr "type" "neon_dup,fmov,neon_dup") (set_attr "simd" "yes,*,yes") (set_attr "fp" "*,yes,*") (set_attr "length" "4")] @@ -1167,9 +858,7 @@ "@ ins\\t%0.d[1], %1.d[0] ins\\t%0.d[1], %1" - [(set_attr "simd_type" "simd_ins,simd_ins") - (set_attr "type" "neon_ins") - (set_attr "simd_mode" "") + [(set_attr "type" "neon_ins") (set_attr "length" "4")] ) @@ -1192,9 +881,7 @@ (truncate: (match_operand:VQN 1 "register_operand" "w")))] "TARGET_SIMD" "xtn\\t%0., %1." - [(set_attr "simd_type" "simd_shiftn_imm") - (set_attr "type" "neon_shift_imm_narrow_q") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_imm_narrow_q")] ) (define_expand "vec_pack_trunc_" @@ -1220,9 +907,7 @@ (truncate: (match_operand:VQN 2 "register_operand" "w"))))] "TARGET_SIMD" "xtn\\t%0., %1.\;xtn2\\t%0., %2." - [(set_attr "simd_type" "simd_shiftn2_imm") - (set_attr "type" "multiple") - (set_attr "simd_mode" "") + [(set_attr "type" "multiple") (set_attr "length" "8")] ) @@ -1236,9 +921,7 @@ )))] "TARGET_SIMD" "shll %0., %1., 0" - [(set_attr "simd_type" "simd_shiftl_imm") - (set_attr "type" "neon_shift_imm_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_imm_long")] ) (define_insn "aarch64_simd_vec_unpack_hi_" @@ -1249,9 +932,7 @@ )))] "TARGET_SIMD" "shll2 %0., %1., 0" - [(set_attr "simd_type" "simd_shiftl_imm") - (set_attr "type" "neon_shift_imm_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_imm_long")] ) (define_expand "vec_unpack_hi_" @@ -1293,9 +974,7 @@ (match_operand: 1 "register_operand" "0")))] "TARGET_SIMD" "mlal\t%0., %2., %4." - [(set_attr "simd_type" "simd_mlal") - (set_attr "type" "neon_mla__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla__long")] ) (define_insn "*aarch64_mlal_hi" @@ -1311,9 +990,7 @@ (match_operand: 1 "register_operand" "0")))] "TARGET_SIMD" "mlal2\t%0., %2., %4." - [(set_attr "simd_type" "simd_mlal") - (set_attr "type" "neon_mla__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla__long")] ) (define_insn "*aarch64_mlsl_lo" @@ -1329,9 +1006,7 @@ (match_dup 3))))))] "TARGET_SIMD" "mlsl\t%0., %2., %4." - [(set_attr "simd_type" "simd_mlal") - (set_attr "type" "neon_mla__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla__long")] ) (define_insn "*aarch64_mlsl_hi" @@ -1347,9 +1022,7 @@ (match_dup 3))))))] "TARGET_SIMD" "mlsl2\t%0., %2., %4." - [(set_attr "simd_type" "simd_mlal") - (set_attr "type" "neon_mla__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla__long")] ) (define_insn "*aarch64_mlal" @@ -1363,9 +1036,7 @@ (match_operand: 3 "register_operand" "0")))] "TARGET_SIMD" "mlal\t%0., %1., %2." - [(set_attr "simd_type" "simd_mlal") - (set_attr "type" "neon_mla__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla__long")] ) (define_insn "*aarch64_mlsl" @@ -1379,9 +1050,7 @@ (match_operand:VDW 3 "register_operand" "w")))))] "TARGET_SIMD" "mlsl\t%0., %2., %3." - [(set_attr "simd_type" "simd_mlal") - (set_attr "type" "neon_mla__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mla__long")] ) (define_insn "aarch64_simd_vec_mult_lo_" @@ -1394,9 +1063,7 @@ (match_dup 3)))))] "TARGET_SIMD" "mull\\t%0., %1., %2." - [(set_attr "simd_type" "simd_mull") - (set_attr "type" "neon_mul__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mul__long")] ) (define_expand "vec_widen_mult_lo_" @@ -1423,9 +1090,7 @@ (match_dup 3)))))] "TARGET_SIMD" "mull2\\t%0., %1., %2." - [(set_attr "simd_type" "simd_mull") - (set_attr "type" "neon_mul__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mul__long")] ) (define_expand "vec_widen_mult_hi_" @@ -1474,9 +1139,7 @@ (match_operand:VDQF 2 "register_operand" "w")))] "TARGET_SIMD" "fadd\\t%0., %1., %2." - [(set_attr "simd_type" "simd_fadd") - (set_attr "type" "neon_fp_addsub_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_addsub_")] ) (define_insn "sub3" @@ -1485,9 +1148,7 @@ (match_operand:VDQF 2 "register_operand" "w")))] "TARGET_SIMD" "fsub\\t%0., %1., %2." - [(set_attr "simd_type" "simd_fadd") - (set_attr "type" "neon_fp_addsub_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_addsub_")] ) (define_insn "mul3" @@ -1496,9 +1157,7 @@ (match_operand:VDQF 2 "register_operand" "w")))] "TARGET_SIMD" "fmul\\t%0., %1., %2." - [(set_attr "simd_type" "simd_fmul") - (set_attr "type" "neon_fp_mul_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_mul_")] ) (define_insn "div3" @@ -1507,9 +1166,7 @@ (match_operand:VDQF 2 "register_operand" "w")))] "TARGET_SIMD" "fdiv\\t%0., %1., %2." - [(set_attr "simd_type" "simd_fdiv") - (set_attr "type" "neon_fp_div_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_div_")] ) (define_insn "neg2" @@ -1517,9 +1174,7 @@ (neg:VDQF (match_operand:VDQF 1 "register_operand" "w")))] "TARGET_SIMD" "fneg\\t%0., %1." - [(set_attr "simd_type" "simd_fnegabs") - (set_attr "type" "neon_fp_neg_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_neg_")] ) (define_insn "abs2" @@ -1527,9 +1182,7 @@ (abs:VDQF (match_operand:VDQF 1 "register_operand" "w")))] "TARGET_SIMD" "fabs\\t%0., %1." - [(set_attr "simd_type" "simd_fnegabs") - (set_attr "type" "neon_fp_abs_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_abs_")] ) (define_insn "fma4" @@ -1539,9 +1192,7 @@ (match_operand:VDQF 3 "register_operand" "0")))] "TARGET_SIMD" "fmla\\t%0., %1., %2." - [(set_attr "simd_type" "simd_fmla") - (set_attr "type" "neon_fp_mla_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_mla_")] ) (define_insn "*aarch64_fma4_elt" @@ -1555,9 +1206,7 @@ (match_operand:VDQF 4 "register_operand" "0")))] "TARGET_SIMD" "fmla\\t%0., %3., %1.[%2]" - [(set_attr "simd_type" "simd_fmla_elt") - (set_attr "type" "neon_fp_mla__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_mla__scalar")] ) (define_insn "*aarch64_fma4_elt_" @@ -1571,9 +1220,7 @@ (match_operand:VDQSF 4 "register_operand" "0")))] "TARGET_SIMD" "fmla\\t%0., %3., %1.[%2]" - [(set_attr "simd_type" "simd_fmla_elt") - (set_attr "type" "neon_fp_mla__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_mla__scalar")] ) (define_insn "*aarch64_fma4_elt_to_128df" @@ -1585,9 +1232,7 @@ (match_operand:V2DF 3 "register_operand" "0")))] "TARGET_SIMD" "fmla\\t%0.2d, %2.2d, %1.2d[0]" - [(set_attr "simd_type" "simd_fmla_elt") - (set_attr "type" "neon_fp_mla_d_scalar_q") - (set_attr "simd_mode" "V2DF")] + [(set_attr "type" "neon_fp_mla_d_scalar_q")] ) (define_insn "*aarch64_fma4_elt_to_64v2df" @@ -1600,9 +1245,7 @@ (match_operand:DF 4 "register_operand" "0")))] "TARGET_SIMD" "fmla\\t%0.2d, %3.2d, %1.2d[%2]" - [(set_attr "simd_type" "simd_fmla_elt") - (set_attr "type" "neon_fp_mla_d_scalar_q") - (set_attr "simd_mode" "V2DF")] + [(set_attr "type" "neon_fp_mla_d_scalar_q")] ) (define_insn "fnma4" @@ -1614,9 +1257,7 @@ (match_operand:VDQF 3 "register_operand" "0")))] "TARGET_SIMD" "fmls\\t%0., %1., %2." - [(set_attr "simd_type" "simd_fmla") - (set_attr "type" "neon_fp_mla_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_mla_")] ) (define_insn "*aarch64_fnma4_elt" @@ -1631,9 +1272,7 @@ (match_operand:VDQF 4 "register_operand" "0")))] "TARGET_SIMD" "fmls\\t%0., %3., %1.[%2]" - [(set_attr "simd_type" "simd_fmla_elt") - (set_attr "type" "neon_fp_mla__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_mla__scalar")] ) (define_insn "*aarch64_fnma4_elt_" @@ -1648,9 +1287,7 @@ (match_operand:VDQSF 4 "register_operand" "0")))] "TARGET_SIMD" "fmls\\t%0., %3., %1.[%2]" - [(set_attr "simd_type" "simd_fmla_elt") - (set_attr "type" "neon_fp_mla__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_mla__scalar")] ) (define_insn "*aarch64_fnma4_elt_to_128df" @@ -1663,9 +1300,7 @@ (match_operand:V2DF 3 "register_operand" "0")))] "TARGET_SIMD" "fmls\\t%0.2d, %2.2d, %1.2d[0]" - [(set_attr "simd_type" "simd_fmla_elt") - (set_attr "type" "neon_fp_mla_d_scalar_q") - (set_attr "simd_mode" "V2DF")] + [(set_attr "type" "neon_fp_mla_d_scalar_q")] ) (define_insn "*aarch64_fnma4_elt_to_64v2df" @@ -1679,9 +1314,7 @@ (match_operand:DF 4 "register_operand" "0")))] "TARGET_SIMD" "fmls\\t%0.2d, %3.2d, %1.2d[%2]" - [(set_attr "simd_type" "simd_fmla_elt") - (set_attr "type" "neon_fp_mla_d_scalar_q") - (set_attr "simd_mode" "V2DF")] + [(set_attr "type" "neon_fp_mla_d_scalar_q")] ) ;; Vector versions of the floating-point frint patterns. @@ -1692,9 +1325,7 @@ FRINT))] "TARGET_SIMD" "frint\\t%0., %1." - [(set_attr "simd_type" "simd_frint") - (set_attr "type" "neon_fp_round_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_round_")] ) ;; Vector versions of the fcvt standard patterns. @@ -1706,9 +1337,7 @@ FCVT)))] "TARGET_SIMD" "fcvt\\t%0., %1." - [(set_attr "simd_type" "simd_fcvti") - (set_attr "type" "neon_fp_to_int_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_to_int_")] ) (define_expand "2" @@ -1740,9 +1369,7 @@ (match_operand: 1 "register_operand" "w")))] "TARGET_SIMD" "cvtf\\t%0., %1." - [(set_attr "simd_type" "simd_icvtf") - (set_attr "type" "neon_int_to_fp_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_int_to_fp_")] ) ;; Conversions between vectors of floats and doubles. @@ -1760,9 +1387,7 @@ )))] "TARGET_SIMD" "fcvtl\\t%0.2d, %1.2s" - [(set_attr "simd_type" "simd_fcvtl") - (set_attr "type" "neon_fp_cvt_widen_s") - (set_attr "simd_mode" "V2DF")] + [(set_attr "type" "neon_fp_cvt_widen_s")] ) (define_insn "aarch64_float_extend_lo_v2df" @@ -1771,9 +1396,7 @@ (match_operand:V2SF 1 "register_operand" "w")))] "TARGET_SIMD" "fcvtl\\t%0.2d, %1.2s" - [(set_attr "simd_type" "simd_fcvtl") - (set_attr "type" "neon_fp_cvt_widen_s") - (set_attr "simd_mode" "V2DF")] + [(set_attr "type" "neon_fp_cvt_widen_s")] ) (define_insn "vec_unpacks_hi_v4sf" @@ -1785,9 +1408,7 @@ )))] "TARGET_SIMD" "fcvtl2\\t%0.2d, %1.4s" - [(set_attr "simd_type" "simd_fcvtl") - (set_attr "type" "neon_fp_cvt_widen_s") - (set_attr "simd_mode" "V2DF")] + [(set_attr "type" "neon_fp_cvt_widen_s")] ) ;; Float narrowing operations. @@ -1798,9 +1419,7 @@ (match_operand:V2DF 1 "register_operand" "w")))] "TARGET_SIMD" "fcvtn\\t%0.2s, %1.2d" - [(set_attr "simd_type" "simd_fcvtl") - (set_attr "type" "neon_fp_cvt_narrow_d_q") - (set_attr "simd_mode" "V2SF")] + [(set_attr "type" "neon_fp_cvt_narrow_d_q")] ) (define_insn "aarch64_float_truncate_hi_v4sf" @@ -1811,9 +1430,7 @@ (match_operand:V2DF 2 "register_operand" "w"))))] "TARGET_SIMD" "fcvtn2\\t%0.4s, %2.2d" - [(set_attr "simd_type" "simd_fcvtl") - (set_attr "type" "neon_fp_cvt_narrow_d_q") - (set_attr "simd_mode" "V4SF")] + [(set_attr "type" "neon_fp_cvt_narrow_d_q")] ) (define_expand "vec_pack_trunc_v2df" @@ -1859,9 +1476,7 @@ (match_operand:VDQF 3 "register_operand" "w"))))] "TARGET_SIMD" "fmls\\t%0., %2., %3." - [(set_attr "simd_type" "simd_fmla") - (set_attr "type" "neon_fp_mla__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_mla__scalar")] ) ;; FP Max/Min @@ -1884,9 +1499,7 @@ (match_operand:VDQF 2 "register_operand" "w")))] "TARGET_SIMD" "fnm\\t%0., %1., %2." - [(set_attr "simd_type" "simd_fminmax") - (set_attr "type" "neon_fp_minmax_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_minmax_")] ) (define_insn "3" @@ -1896,9 +1509,7 @@ FMAXMIN_UNS))] "TARGET_SIMD" "\\t%0., %1., %2." - [(set_attr "simd_type" "simd_fminmax") - (set_attr "type" "neon_fp_minmax_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_minmax_")] ) ;; 'across lanes' add. @@ -1909,9 +1520,7 @@ SUADDV))] "TARGET_SIMD" "addv\\t%0, %1." - [(set_attr "simd_type" "simd_addv") - (set_attr "type" "neon_reduc_add") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_reduc_add")] ) (define_insn "reduc_plus_v2di" @@ -1920,9 +1529,7 @@ SUADDV))] "TARGET_SIMD" "addp\\t%d0, %1.2d" - [(set_attr "simd_type" "simd_addv") - (set_attr "type" "neon_reduc_add_q") - (set_attr "simd_mode" "V2DI")] + [(set_attr "type" "neon_reduc_add_q")] ) (define_insn "reduc_plus_v2si" @@ -1931,9 +1538,7 @@ SUADDV))] "TARGET_SIMD" "addp\\t%0.2s, %1.2s, %1.2s" - [(set_attr "simd_type" "simd_addv") - (set_attr "type" "neon_reduc_add") - (set_attr "simd_mode" "V2SI")] + [(set_attr "type" "neon_reduc_add")] ) (define_insn "reduc_plus_" @@ -1942,9 +1547,7 @@ SUADDV))] "TARGET_SIMD" "faddp\\t%0, %1." - [(set_attr "simd_type" "simd_fadd") - (set_attr "type" "neon_fp_reduc_add_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_reduc_add_")] ) (define_insn "aarch64_addpv4sf" @@ -1953,9 +1556,7 @@ UNSPEC_FADDV))] "TARGET_SIMD" "faddp\\t%0.4s, %1.4s, %1.4s" - [(set_attr "simd_type" "simd_fadd") - (set_attr "type" "neon_fp_reduc_add_s_q") - (set_attr "simd_mode" "V4SF")] + [(set_attr "type" "neon_fp_reduc_add_s_q")] ) (define_expand "reduc_plus_v4sf" @@ -1975,9 +1576,7 @@ (clz:VDQ_BHSI (match_operand:VDQ_BHSI 1 "register_operand" "w")))] "TARGET_SIMD" "clz\\t%0., %1." - [(set_attr "simd_type" "simd_cls") - (set_attr "type" "neon_cls") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_cls")] ) ;; 'across lanes' max and min ops. @@ -1988,9 +1587,7 @@ MAXMINV))] "TARGET_SIMD" "v\\t%0, %1." - [(set_attr "simd_type" "simd_minmaxv") - (set_attr "type" "neon_reduc_minmax") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_reduc_minmax")] ) (define_insn "reduc__v2di" @@ -1999,9 +1596,7 @@ MAXMINV))] "TARGET_SIMD" "p\\t%d0, %1.2d" - [(set_attr "simd_type" "simd_minmaxv") - (set_attr "type" "neon_reduc_minmax_q") - (set_attr "simd_mode" "V2DI")] + [(set_attr "type" "neon_reduc_minmax_q")] ) (define_insn "reduc__v2si" @@ -2010,9 +1605,7 @@ MAXMINV))] "TARGET_SIMD" "p\\t%0.2s, %1.2s, %1.2s" - [(set_attr "simd_type" "simd_minmaxv") - (set_attr "type" "neon_reduc_minmax") - (set_attr "simd_mode" "V2SI")] + [(set_attr "type" "neon_reduc_minmax")] ) (define_insn "reduc__" @@ -2021,9 +1614,7 @@ FMAXMINV))] "TARGET_SIMD" "p\\t%0, %1." - [(set_attr "simd_type" "simd_fminmaxv") - (set_attr "type" "neon_fp_reduc_minmax_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_reduc_minmax_")] ) (define_insn "reduc__v4sf" @@ -2032,9 +1623,7 @@ FMAXMINV))] "TARGET_SIMD" "v\\t%s0, %1.4s" - [(set_attr "simd_type" "simd_fminmaxv") - (set_attr "type" "neon_fp_reduc_minmax_s_q") - (set_attr "simd_mode" "V4SF")] + [(set_attr "type" "neon_fp_reduc_minmax_s_q")] ) ;; aarch64_simd_bsl may compile to any of bsl/bif/bit depending on register @@ -2069,8 +1658,7 @@ bsl\\t%0., %2., %3. bit\\t%0., %2., %1. bif\\t%0., %3., %1." - [(set_attr "simd_mode" "") - (set_attr "type" "neon_bsl")] + [(set_attr "type" "neon_bsl")] ) (define_expand "aarch64_simd_bsl" @@ -2435,9 +2023,7 @@ (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))] "TARGET_SIMD" "smov\\t%0, %1.[%2]" - [(set_attr "simd_type" "simd_movgp") - (set_attr "type" "neon_to_gp") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_to_gp")] ) (define_insn "*aarch64_get_lane_zero_extendsi" @@ -2448,9 +2034,7 @@ (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))] "TARGET_SIMD" "umov\\t%w0, %1.[%2]" - [(set_attr "simd_type" "simd_movgp") - (set_attr "type" "neon_to_gp") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_to_gp")] ) ;; Lane extraction of a value, neither sign nor zero extension @@ -2464,9 +2048,7 @@ "@ umov\\t%0, %1.[%2] dup\\t%0, %1.[%2]" - [(set_attr "simd_type" "simd_movgp, simd_dup") - (set_attr "type" "neon_to_gp, neon_dup") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_to_gp, neon_dup")] ) (define_expand "aarch64_get_lanedi" @@ -2589,9 +2171,7 @@ (match_operand:VDIC 2 "aarch64_simd_imm_zero" "Dz")))] "TARGET_SIMD" "mov\\t%0.8b, %1.8b" - [(set_attr "simd_type" "simd_move") - (set_attr "type" "neon_move") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_move")] ) (define_insn_and_split "aarch64_combine" @@ -2634,9 +2214,7 @@ (match_dup 3)))))] "TARGET_SIMD" "l2\t%0., %1., %2." - [(set_attr "simd_type" "simd_addl") - (set_attr "type" "neon__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon__long")] ) (define_insn "aarch64_l_lo_internal" @@ -2649,9 +2227,7 @@ (match_dup 3)))))] "TARGET_SIMD" "l\t%0., %1., %2." - [(set_attr "simd_type" "simd_addl") - (set_attr "type" "neon__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon__long")] ) @@ -2711,9 +2287,7 @@ (match_operand:VDW 2 "register_operand" "w"))))] "TARGET_SIMD" "l %0., %1., %2." - [(set_attr "simd_type" "simd_addl") - (set_attr "type" "neon__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon__long")] ) ;; w. @@ -2725,9 +2299,7 @@ (match_operand:VDW 2 "register_operand" "w"))))] "TARGET_SIMD" "w\\t%0., %1., %2." - [(set_attr "simd_type" "simd_addl") - (set_attr "type" "neon__widen") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon__widen")] ) (define_insn "aarch64_w2_internal" @@ -2739,9 +2311,7 @@ (match_operand:VQW 3 "vect_par_cnst_hi_half" "")))))] "TARGET_SIMD" "w2\\t%0., %1., %2." - [(set_attr "simd_type" "simd_addl") - (set_attr "type" "neon__widen") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon__widen")] ) (define_expand "aarch64_saddw2" @@ -2802,9 +2372,7 @@ HADDSUB))] "TARGET_SIMD" "h\\t%0., %1., %2." - [(set_attr "simd_type" "simd_add") - (set_attr "type" "neon__halve") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon__halve")] ) ;; hn. @@ -2816,9 +2384,7 @@ ADDSUBHN))] "TARGET_SIMD" "hn\\t%0., %1., %2." - [(set_attr "simd_type" "simd_addn") - (set_attr "type" "neon__halve_narrow_q") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon__halve_narrow_q")] ) (define_insn "aarch64_hn2" @@ -2829,9 +2395,7 @@ ADDSUBHN2))] "TARGET_SIMD" "hn2\\t%0., %2., %3." - [(set_attr "simd_type" "simd_addn2") - (set_attr "type" "neon__halve_narrow_q") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon__halve_narrow_q")] ) ;; pmul. @@ -2843,9 +2407,7 @@ UNSPEC_PMUL))] "TARGET_SIMD" "pmul\\t%0., %1., %2." - [(set_attr "simd_type" "simd_mul") - (set_attr "type" "neon_mul_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_mul_")] ) ;; q @@ -2856,9 +2418,7 @@ (match_operand:VSDQ_I 2 "register_operand" "w")))] "TARGET_SIMD" "\\t%0, %1, %2" - [(set_attr "simd_type" "simd_add") - (set_attr "type" "neon_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_")] ) ;; suqadd and usqadd @@ -2870,9 +2430,7 @@ USSUQADD))] "TARGET_SIMD" "qadd\\t%0, %2" - [(set_attr "simd_type" "simd_sat_add") - (set_attr "type" "neon_qadd") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_qadd")] ) ;; sqmovun @@ -2883,9 +2441,7 @@ UNSPEC_SQXTUN))] "TARGET_SIMD" "sqxtun\\t%0, %1" - [(set_attr "simd_type" "simd_sat_shiftn_imm") - (set_attr "type" "neon_sat_shift_imm_narrow_q") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_shift_imm_narrow_q")] ) ;; sqmovn and uqmovn @@ -2896,9 +2452,7 @@ SUQMOVN))] "TARGET_SIMD" "qxtn\\t%0, %1" - [(set_attr "simd_type" "simd_sat_shiftn_imm") - (set_attr "type" "neon_sat_shift_imm_narrow_q") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_shift_imm_narrow_q")] ) ;; q @@ -2909,9 +2463,7 @@ (match_operand:VSDQ_I_BHSI 1 "register_operand" "w")))] "TARGET_SIMD" "s\\t%0, %1" - [(set_attr "simd_type" "simd_sat_negabs") - (set_attr "type" "neon_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_")] ) ;; sqdmulh. @@ -2924,9 +2476,7 @@ VQDMULH))] "TARGET_SIMD" "sqdmulh\\t%0, %1, %2" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul_")] ) ;; sqdmulh_lane @@ -2943,9 +2493,7 @@ "* aarch64_simd_lane_bounds (operands[3], 0, GET_MODE_NUNITS (mode)); return \"sqdmulh\\t%0., %1., %2.[%3]\";" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul__scalar")] ) (define_insn "aarch64_sqdmulh_laneq" @@ -2960,9 +2508,7 @@ "* aarch64_simd_lane_bounds (operands[3], 0, GET_MODE_NUNITS (mode)); return \"sqdmulh\\t%0., %1., %2.[%3]\";" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul__scalar")] ) (define_insn "aarch64_sqdmulh_lane" @@ -2977,9 +2523,7 @@ "* aarch64_simd_lane_bounds (operands[3], 0, GET_MODE_NUNITS (mode)); return \"sqdmulh\\t%0, %1, %2.[%3]\";" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul__scalar") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul__scalar")] ) ;; vqdml[sa]l @@ -2997,9 +2541,7 @@ (const_int 1))))] "TARGET_SIMD" "sqdmll\\t%0, %2, %3" - [(set_attr "simd_type" "simd_sat_mlal") - (set_attr "type" "neon_sat_mla__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mla__long")] ) ;; vqdml[sa]l_lane @@ -3021,9 +2563,7 @@ (const_int 1))))] "TARGET_SIMD" "sqdmll\\t%0, %2, %3.[%4]" - [(set_attr "simd_type" "simd_sat_mlal") - (set_attr "type" "neon_sat_mla__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mla__scalar_long")] ) (define_insn "aarch64_sqdmll_lane_internal" @@ -3042,9 +2582,7 @@ (const_int 1))))] "TARGET_SIMD" "sqdmll\\t%0, %2, %3.[%4]" - [(set_attr "simd_type" "simd_sat_mlal") - (set_attr "type" "neon_sat_mla__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mla__scalar_long")] ) (define_expand "aarch64_sqdmlal_lane" @@ -3123,9 +2661,7 @@ (const_int 1))))] "TARGET_SIMD" "sqdmll\\t%0, %2, %3.[0]" - [(set_attr "simd_type" "simd_sat_mlal") - (set_attr "type" "neon_sat_mla__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mla__scalar_long")] ) ;; sqdml[as]l2 @@ -3147,9 +2683,7 @@ (const_int 1))))] "TARGET_SIMD" "sqdmll2\\t%0, %2, %3" - [(set_attr "simd_type" "simd_sat_mlal") - (set_attr "type" "neon_sat_mla__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mla__scalar_long")] ) (define_expand "aarch64_sqdmlal2" @@ -3199,9 +2733,7 @@ (const_int 1))))] "TARGET_SIMD" "sqdmll2\\t%0, %2, %3.[%4]" - [(set_attr "simd_type" "simd_sat_mlal") - (set_attr "type" "neon_sat_mla__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mla__scalar_long")] ) (define_expand "aarch64_sqdmlal2_lane" @@ -3284,9 +2816,7 @@ (const_int 1))))] "TARGET_SIMD" "sqdmll2\\t%0, %2, %3.[0]" - [(set_attr "simd_type" "simd_sat_mlal") - (set_attr "type" "neon_sat_mla__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mla__scalar_long")] ) (define_expand "aarch64_sqdmlal2_n" @@ -3330,9 +2860,7 @@ (const_int 1)))] "TARGET_SIMD" "sqdmull\\t%0, %1, %2" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul__long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul__long")] ) ;; vqdmull_lane @@ -3352,9 +2880,7 @@ (const_int 1)))] "TARGET_SIMD" "sqdmull\\t%0, %1, %2.[%3]" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul__scalar_long")] ) (define_insn "aarch64_sqdmull_lane_internal" @@ -3371,9 +2897,7 @@ (const_int 1)))] "TARGET_SIMD" "sqdmull\\t%0, %1, %2.[%3]" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul__scalar_long")] ) (define_expand "aarch64_sqdmull_lane" @@ -3417,9 +2941,7 @@ (const_int 1)))] "TARGET_SIMD" "sqdmull\\t%0, %1, %2.[0]" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul__scalar_long")] ) ;; vqdmull2 @@ -3442,9 +2964,7 @@ (const_int 1)))] "TARGET_SIMD" "sqdmull2\\t%0, %1, %2" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul__scalar_long")] ) (define_expand "aarch64_sqdmull2" @@ -3478,9 +2998,7 @@ (const_int 1)))] "TARGET_SIMD" "sqdmull2\\t%0, %1, %2.[%3]" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul__scalar_long")] ) (define_expand "aarch64_sqdmull2_lane" @@ -3530,9 +3048,7 @@ (const_int 1)))] "TARGET_SIMD" "sqdmull2\\t%0, %1, %2.[0]" - [(set_attr "simd_type" "simd_sat_mul") - (set_attr "type" "neon_sat_mul__scalar_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_mul__scalar_long")] ) (define_expand "aarch64_sqdmull2_n" @@ -3557,9 +3073,7 @@ VSHL))] "TARGET_SIMD" "shl\\t%0, %1, %2"; - [(set_attr "simd_type" "simd_shift") - (set_attr "type" "neon_shift_reg") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_reg")] ) @@ -3573,9 +3087,7 @@ VQSHL))] "TARGET_SIMD" "qshl\\t%0, %1, %2"; - [(set_attr "simd_type" "simd_sat_shift") - (set_attr "type" "neon_sat_shift_reg") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_shift_reg")] ) ;; vshll_n @@ -3596,9 +3108,7 @@ else { return \"shll\\t%0., %1., %2\"; }" - [(set_attr "simd_type" "simd_shift_imm") - (set_attr "type" "neon_shift_imm_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_imm_long")] ) ;; vshll_high_n @@ -3619,9 +3129,7 @@ else { return \"shll2\\t%0., %1., %2\"; }" - [(set_attr "simd_type" "simd_shift_imm") - (set_attr "type" "neon_shift_imm_long") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_imm_long")] ) ;; vrshr_n @@ -3636,9 +3144,7 @@ int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; aarch64_simd_const_bounds (operands[2], 1, bit_width + 1); return \"shr\\t%0, %1, %2\";" - [(set_attr "simd_type" "simd_shift_imm") - (set_attr "type" "neon_sat_shift_imm") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_shift_imm")] ) ;; v(r)sra_n @@ -3654,9 +3160,7 @@ int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; aarch64_simd_const_bounds (operands[3], 1, bit_width + 1); return \"sra\\t%0, %2, %3\";" - [(set_attr "simd_type" "simd_shift_imm_acc") - (set_attr "type" "neon_shift_acc") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_acc")] ) ;; vsi_n @@ -3673,9 +3177,7 @@ aarch64_simd_const_bounds (operands[3], 1 - , bit_width - + 1); return \"si\\t%0, %2, %3\";" - [(set_attr "simd_type" "simd_shift_imm") - (set_attr "type" "neon_shift_imm") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_shift_imm")] ) ;; vqshl(u) @@ -3690,9 +3192,7 @@ int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; aarch64_simd_const_bounds (operands[2], 0, bit_width); return \"qshl\\t%0, %1, %2\";" - [(set_attr "simd_type" "simd_sat_shift_imm") - (set_attr "type" "neon_sat_shift_imm") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_shift_imm")] ) @@ -3708,9 +3208,7 @@ int bit_width = GET_MODE_UNIT_SIZE (mode) * BITS_PER_UNIT; aarch64_simd_const_bounds (operands[2], 1, bit_width + 1); return \"qshrn\\t%0, %1, %2\";" - [(set_attr "simd_type" "simd_sat_shiftn_imm") - (set_attr "type" "neon_sat_shift_imm_narrow_q") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_sat_shift_imm_narrow_q")] ) @@ -3729,9 +3227,7 @@ "@ cm\t%0, %, % cm\t%0, %1, #0" - [(set_attr "simd_type" "simd_cmp") - (set_attr "type" "neon_compare, neon_compare_zero") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_compare, neon_compare_zero")] ) (define_insn_and_split "aarch64_cmdi" @@ -3760,9 +3256,7 @@ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); DONE; } - [(set_attr "simd_type" "simd_cmp") - (set_attr "type" "neon_compare, neon_compare_zero, multiple") - (set_attr "simd_mode" "DI")] + [(set_attr "type" "neon_compare, neon_compare_zero, multiple")] ) ;; cm(hs|hi) @@ -3776,9 +3270,7 @@ )))] "TARGET_SIMD" "cm\t%0, %, %" - [(set_attr "simd_type" "simd_cmp") - (set_attr "type" "neon_compare") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_compare")] ) (define_insn_and_split "aarch64_cmdi" @@ -3806,9 +3298,7 @@ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); DONE; } - [(set_attr "simd_type" "simd_cmp") - (set_attr "type" "neon_compare, neon_compare_zero") - (set_attr "simd_mode" "DI")] + [(set_attr "type" "neon_compare, neon_compare_zero")] ) ;; cmtst @@ -3823,9 +3313,7 @@ (vec_duplicate: (const_int 0)))))] "TARGET_SIMD" "cmtst\t%0, %1, %2" - [(set_attr "simd_type" "simd_cmp") - (set_attr "type" "neon_tst") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_tst")] ) (define_insn_and_split "aarch64_cmtstdi" @@ -3855,9 +3343,7 @@ emit_insn (gen_cstoredi_neg (operands[0], comparison, cc_reg)); DONE; } - [(set_attr "simd_type" "simd_cmp") - (set_attr "type" "neon_tst") - (set_attr "simd_mode" "DI")] + [(set_attr "type" "neon_tst")] ) ;; fcm(eq|ge|gt|le|lt) @@ -3873,9 +3359,7 @@ "@ fcm\t%0, %, % fcm\t%0, %1, 0" - [(set_attr "simd_type" "simd_fcmp") - (set_attr "type" "neon_fp_compare_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_compare_")] ) ;; fac(ge|gt) @@ -3891,9 +3375,7 @@ )))] "TARGET_SIMD" "fac\t%0, %, %" - [(set_attr "simd_type" "simd_fcmp") - (set_attr "type" "neon_fp_compare_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_compare_")] ) ;; addp @@ -3906,9 +3388,7 @@ UNSPEC_ADDP))] "TARGET_SIMD" "addp\t%0, %1, %2" - [(set_attr "simd_type" "simd_add") - (set_attr "type" "neon_reduc_add") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_reduc_add")] ) (define_insn "aarch64_addpdi" @@ -3918,9 +3398,7 @@ UNSPEC_ADDP))] "TARGET_SIMD" "addp\t%d0, %1.2d" - [(set_attr "simd_type" "simd_add") - (set_attr "type" "neon_reduc_add") - (set_attr "simd_mode" "DI")] + [(set_attr "type" "neon_reduc_add")] ) ;; sqrt @@ -3930,9 +3408,7 @@ (sqrt:VDQF (match_operand:VDQF 1 "register_operand" "w")))] "TARGET_SIMD" "fsqrt\\t%0., %1." - [(set_attr "simd_type" "simd_fsqrt") - (set_attr "type" "neon_fp_sqrt_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_sqrt_")] ) ;; Patterns for vector struct loads and stores. @@ -3944,9 +3420,8 @@ UNSPEC_LD2))] "TARGET_SIMD" "ld2\\t{%S0. - %T0.}, %1" - [(set_attr "simd_type" "simd_load2") - (set_attr "type" "neon_load2_2reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_load2_2reg")] +) (define_insn "vec_store_lanesoi" [(set (match_operand:OI 0 "aarch64_simd_struct_operand" "=Utv") @@ -3955,9 +3430,8 @@ UNSPEC_ST2))] "TARGET_SIMD" "st2\\t{%S1. - %T1.}, %0" - [(set_attr "simd_type" "simd_store2") - (set_attr "type" "neon_store2_2reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_store2_2reg")] +) (define_insn "vec_load_lanesci" [(set (match_operand:CI 0 "register_operand" "=w") @@ -3966,9 +3440,8 @@ UNSPEC_LD3))] "TARGET_SIMD" "ld3\\t{%S0. - %U0.}, %1" - [(set_attr "simd_type" "simd_load3") - (set_attr "type" "neon_load3_3reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_load3_3reg")] +) (define_insn "vec_store_lanesci" [(set (match_operand:CI 0 "aarch64_simd_struct_operand" "=Utv") @@ -3977,9 +3450,8 @@ UNSPEC_ST3))] "TARGET_SIMD" "st3\\t{%S1. - %U1.}, %0" - [(set_attr "simd_type" "simd_store3") - (set_attr "type" "neon_store3_3reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_store3_3reg")] +) (define_insn "vec_load_lanesxi" [(set (match_operand:XI 0 "register_operand" "=w") @@ -3988,9 +3460,8 @@ UNSPEC_LD4))] "TARGET_SIMD" "ld4\\t{%S0. - %V0.}, %1" - [(set_attr "simd_type" "simd_load4") - (set_attr "type" "neon_load4_4reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_load4_4reg")] +) (define_insn "vec_store_lanesxi" [(set (match_operand:XI 0 "aarch64_simd_struct_operand" "=Utv") @@ -3999,9 +3470,8 @@ UNSPEC_ST4))] "TARGET_SIMD" "st4\\t{%S1. - %V1.}, %0" - [(set_attr "simd_type" "simd_store4") - (set_attr "type" "neon_store4_4reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_store4_4reg")] +) ;; Reload patterns for AdvSIMD register list operands. @@ -4033,11 +3503,10 @@ default: gcc_unreachable (); } } - [(set_attr "simd_type" "simd_move,simd_store,simd_load") - (set_attr "type" "neon_move,neon_store_reg_q,\ + [(set_attr "type" "neon_move,neon_store_reg_q,\ neon_load_reg_q") - (set (attr "length") (symbol_ref "aarch64_simd_attr_length_move (insn)")) - (set_attr "simd_mode" "")]) + (set (attr "length") (symbol_ref "aarch64_simd_attr_length_move (insn)"))] +) (define_split [(set (match_operand:OI 0 "register_operand" "") @@ -4119,9 +3588,8 @@ (vec_duplicate:VD (const_int 0)))) 0))] "TARGET_SIMD" "ld2\\t{%S0. - %T0.}, %1" - [(set_attr "simd_type" "simd_load2") - (set_attr "type" "neon_load2_2reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_load2_2reg")] +) (define_insn "aarch64_ld2_dreg" [(set (match_operand:OI 0 "register_operand" "=w") @@ -4137,9 +3605,8 @@ (const_int 0))) 0))] "TARGET_SIMD" "ld1\\t{%S0.1d - %T0.1d}, %1" - [(set_attr "simd_type" "simd_load2") - (set_attr "type" "neon_load1_2reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_load1_2reg")] +) (define_insn "aarch64_ld3_dreg" [(set (match_operand:CI 0 "register_operand" "=w") @@ -4160,9 +3627,8 @@ (vec_duplicate:VD (const_int 0)))) 0))] "TARGET_SIMD" "ld3\\t{%S0. - %U0.}, %1" - [(set_attr "simd_type" "simd_load3") - (set_attr "type" "neon_load3_3reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_load3_3reg")] +) (define_insn "aarch64_ld3_dreg" [(set (match_operand:CI 0 "register_operand" "=w") @@ -4183,9 +3649,8 @@ (const_int 0))) 0))] "TARGET_SIMD" "ld1\\t{%S0.1d - %U0.1d}, %1" - [(set_attr "simd_type" "simd_load3") - (set_attr "type" "neon_load1_3reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_load1_3reg")] +) (define_insn "aarch64_ld4_dreg" [(set (match_operand:XI 0 "register_operand" "=w") @@ -4211,9 +3676,8 @@ (vec_duplicate:VD (const_int 0))))) 0))] "TARGET_SIMD" "ld4\\t{%S0. - %V0.}, %1" - [(set_attr "simd_type" "simd_load4") - (set_attr "type" "neon_load4_4reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_load4_4reg")] +) (define_insn "aarch64_ld4_dreg" [(set (match_operand:XI 0 "register_operand" "=w") @@ -4239,9 +3703,8 @@ (const_int 0)))) 0))] "TARGET_SIMD" "ld1\\t{%S0.1d - %V0.1d}, %1" - [(set_attr "simd_type" "simd_load4") - (set_attr "type" "neon_load1_4reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_load1_4reg")] +) (define_expand "aarch64_ld" [(match_operand:VSTRUCT 0 "register_operand" "=w") @@ -4355,9 +3818,7 @@ UNSPEC_TBL))] "TARGET_SIMD" "tbl\\t%0., {%1.16b}, %2." - [(set_attr "simd_type" "simd_tbl") - (set_attr "type" "neon_tbl1") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_tbl1")] ) ;; Two source registers. @@ -4369,9 +3830,7 @@ UNSPEC_TBL))] "TARGET_SIMD" "tbl\\t%0.16b, {%S1.16b - %T1.16b}, %2.16b" - [(set_attr "simd_type" "simd_tbl") - (set_attr "type" "neon_tbl2_q") - (set_attr "simd_mode" "V16QI")] + [(set_attr "type" "neon_tbl2_q")] ) (define_insn_and_split "aarch64_combinev16qi" @@ -4397,9 +3856,7 @@ PERMUTE))] "TARGET_SIMD" "\\t%0., %1., %2." - [(set_attr "simd_type" "simd_") - (set_attr "type" "neon_permute") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_permute")] ) (define_insn "aarch64_st2_dreg" @@ -4409,9 +3866,8 @@ UNSPEC_ST2))] "TARGET_SIMD" "st2\\t{%S1. - %T1.}, %0" - [(set_attr "simd_type" "simd_store2") - (set_attr "type" "neon_store2_2reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_store2_2reg")] +) (define_insn "aarch64_st2_dreg" [(set (match_operand:TI 0 "aarch64_simd_struct_operand" "=Utv") @@ -4420,9 +3876,8 @@ UNSPEC_ST2))] "TARGET_SIMD" "st1\\t{%S1.1d - %T1.1d}, %0" - [(set_attr "simd_type" "simd_store2") - (set_attr "type" "neon_store1_2reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_store1_2reg")] +) (define_insn "aarch64_st3_dreg" [(set (match_operand:EI 0 "aarch64_simd_struct_operand" "=Utv") @@ -4431,9 +3886,8 @@ UNSPEC_ST3))] "TARGET_SIMD" "st3\\t{%S1. - %U1.}, %0" - [(set_attr "simd_type" "simd_store3") - (set_attr "type" "neon_store3_3reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_store3_3reg")] +) (define_insn "aarch64_st3_dreg" [(set (match_operand:EI 0 "aarch64_simd_struct_operand" "=Utv") @@ -4442,9 +3896,8 @@ UNSPEC_ST3))] "TARGET_SIMD" "st1\\t{%S1.1d - %U1.1d}, %0" - [(set_attr "simd_type" "simd_store3") - (set_attr "type" "neon_store1_3reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_store1_3reg")] +) (define_insn "aarch64_st4_dreg" [(set (match_operand:OI 0 "aarch64_simd_struct_operand" "=Utv") @@ -4453,9 +3906,8 @@ UNSPEC_ST4))] "TARGET_SIMD" "st4\\t{%S1. - %V1.}, %0" - [(set_attr "simd_type" "simd_store4") - (set_attr "type" "neon_store4_4reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_store4_4reg")] +) (define_insn "aarch64_st4_dreg" [(set (match_operand:OI 0 "aarch64_simd_struct_operand" "=Utv") @@ -4464,9 +3916,8 @@ UNSPEC_ST4))] "TARGET_SIMD" "st1\\t{%S1.1d - %V1.1d}, %0" - [(set_attr "simd_type" "simd_store4") - (set_attr "type" "neon_store1_4reg") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_store1_4reg")] +) (define_expand "aarch64_st" [(match_operand:DI 0 "register_operand" "r") @@ -4544,9 +3995,8 @@ (match_operand: 1 "aarch64_simd_struct_operand" "Utv")))] "TARGET_SIMD" "ld1r\\t{%0.}, %1" - [(set_attr "simd_type" "simd_load1r") - (set_attr "type" "neon_load1_all_lanes") - (set_attr "simd_mode" "")]) + [(set_attr "type" "neon_load1_all_lanes")] +) (define_insn "aarch64_frecpe" [(set (match_operand:VDQF 0 "register_operand" "=w") @@ -4554,9 +4004,7 @@ UNSPEC_FRECPE))] "TARGET_SIMD" "frecpe\\t%0., %1." - [(set_attr "simd_type" "simd_frecpe") - (set_attr "type" "neon_fp_recpe_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_recpe_")] ) (define_insn "aarch64_frecp" @@ -4565,9 +4013,7 @@ FRECP))] "TARGET_SIMD" "frecp\\t%0, %1" - [(set_attr "simd_type" "simd_frecp") - (set_attr "type" "neon_fp_recp_") - (set_attr "mode" "")] + [(set_attr "type" "neon_fp_recp_")] ) (define_insn "aarch64_frecps" @@ -4577,9 +4023,7 @@ UNSPEC_FRECPS))] "TARGET_SIMD" "frecps\\t%0, %1, %2" - [(set_attr "simd_type" "simd_frecps") - (set_attr "type" "neon_fp_recps_") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_fp_recps_")] ) ;; Standard pattern name vec_extract. @@ -4594,7 +4038,6 @@ umov\\t%0, %1.[%2] dup\\t%0, %1.[%2] st1\\t{%1.}[%2], %0" - [(set_attr "simd_type" "simd_movgp, simd_dup, simd_store1s") - (set_attr "type" "neon_to_gp, neon_dup, neon_store1_one_lane") - (set_attr "simd_mode" "")] + [(set_attr "type" "neon_to_gp, neon_dup, neon_store1_one_lane")] ) + diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 5f35344..47f3eb3 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -793,11 +793,10 @@ } } [(set_attr "v8type" "move,alu,alu,load1,load1,store1,store1,*,*,*") - (set_attr "type" "mov_reg,mov_imm,mov_imm,load1,load1,store1,store1,*,*,*") - (set_attr "simd_type" "*,*,simd_move_imm,*,*,*,*,simd_movgp,simd_dupgp,simd_dup") + (set_attr "type" "mov_reg,mov_imm,mov_imm,load1,load1,store1,store1,\ + neon_from_gp,neon_from_gp, neon_dup") (set_attr "simd" "*,*,yes,*,*,*,*,yes,yes,yes") - (set_attr "mode" "") - (set_attr "simd_mode" "")] + (set_attr "mode" "")] ) (define_expand "mov" @@ -912,13 +911,13 @@ str\\t%q1, %0" [(set_attr "v8type" "move2,fmovi2f,fmovf2i,*, \ load2,store2,store2,fpsimd_load,fpsimd_store") - (set_attr "type" "multiple,f_mcr,f_mrc,*, \ + (set_attr "type" "multiple,f_mcr,f_mrc,neon_logic_q, \ load2,store2,store2,f_loadd,f_stored") - (set_attr "simd_type" "*,*,*,simd_move,*,*,*,*,*") (set_attr "mode" "DI,DI,DI,TI,DI,DI,DI,TI,TI") (set_attr "length" "8,8,8,4,4,4,4,4,4") - (set_attr "fp" "*,*,*,*,*,*,*,yes,yes") - (set_attr "simd" "*,*,*,yes,*,*,*,*,*")]) + (set_attr "simd" "*,*,*,yes,*,*,*,*,*") + (set_attr "fp" "*,*,*,*,*,*,*,yes,yes")] +) ;; Split a TImode register-register or register-immediate move into ;; its component DImode pieces, taking care to handle overlapping @@ -2119,11 +2118,9 @@ neg\\t%0, %1 neg\\t%0, %1" [(set_attr "v8type" "alu") - (set_attr "type" "alu_reg") - (set_attr "simd_type" "*,simd_negabs") + (set_attr "type" "alu_reg, neon_neg") (set_attr "simd" "*,yes") - (set_attr "mode" "") - (set_attr "simd_mode" "")] + (set_attr "mode" "")] ) ;; zero_extend version of above @@ -3203,10 +3200,8 @@ ushl\t%0, %1, %2 lsl\t%0, %1, %2" [(set_attr "simd" "yes,yes,no") - (set_attr "simd_type" "simd_shift_imm,simd_shift,*") - (set_attr "simd_mode" ",,*") (set_attr "v8type" "*,*,shift") - (set_attr "type" "*,*,shift_reg") + (set_attr "type" "neon_shift_imm, neon_shift_reg,shift_reg") (set_attr "mode" "*,*,")] ) @@ -3222,10 +3217,8 @@ # lsr\t%0, %1, %2" [(set_attr "simd" "yes,yes,no") - (set_attr "simd_type" "simd_shift_imm,simd_shift,*") - (set_attr "simd_mode" ",,*") (set_attr "v8type" "*,*,shift") - (set_attr "type" "*,*,shift_reg") + (set_attr "type" "neon_shift_imm,neon_shift_reg,shift_reg") (set_attr "mode" "*,*,")] ) @@ -3267,10 +3260,8 @@ # asr\t%0, %1, %2" [(set_attr "simd" "yes,yes,no") - (set_attr "simd_type" "simd_shift_imm,simd_shift,*") - (set_attr "simd_mode" ",,*") (set_attr "v8type" "*,*,shift") - (set_attr "type" "*,*,shift_reg") + (set_attr "type" "neon_shift_imm,neon_shift_reg,shift_reg") (set_attr "mode" "*,*,")] ) @@ -3308,8 +3299,7 @@ "TARGET_SIMD" "ushl\t%d0, %d1, %d2" [(set_attr "simd" "yes") - (set_attr "simd_type" "simd_shift") - (set_attr "simd_mode" "DI")] + (set_attr "type" "neon_shift_reg")] ) (define_insn "*aarch64_ushl_2s" @@ -3320,8 +3310,7 @@ "TARGET_SIMD" "ushl\t%0.2s, %1.2s, %2.2s" [(set_attr "simd" "yes") - (set_attr "simd_type" "simd_shift") - (set_attr "simd_mode" "DI")] + (set_attr "type" "neon_shift_reg")] ) (define_insn "*aarch64_sisd_sshl" @@ -3332,8 +3321,7 @@ "TARGET_SIMD" "sshl\t%d0, %d1, %d2" [(set_attr "simd" "yes") - (set_attr "simd_type" "simd_shift") - (set_attr "simd_mode" "DI")] + (set_attr "type" "neon_shift_reg")] ) (define_insn "*aarch64_sshl_2s" @@ -3344,8 +3332,7 @@ "TARGET_SIMD" "sshl\t%0.2s, %1.2s, %2.2s" [(set_attr "simd" "yes") - (set_attr "simd_type" "simd_shift") - (set_attr "simd_mode" "DI")] + (set_attr "type" "neon_shift_reg")] ) (define_insn "*aarch64_sisd_neg_qi" @@ -3355,8 +3342,7 @@ "TARGET_SIMD" "neg\t%d0, %d1" [(set_attr "simd" "yes") - (set_attr "simd_type" "simd_negabs") - (set_attr "simd_mode" "QI")] + (set_attr "type" "neon_neg")] ) ;; Rotate right -- 2.7.4