[AArch64] Remove aarch64_simd_attr_length_move
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Tue, 31 May 2016 11:04:41 +0000 (11:04 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Tue, 31 May 2016 11:04:41 +0000 (11:04 +0000)
* config/aarch64/aarch64.c (aarch64_simd_attr_length_move): Delete.
* config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_move):
Delete prototype.
* config/aarch64/iterators.md (insn_count): Add descriptive comment.
* config/aarch64/aarch64-simd.md (*aarch64_mov<mode>, VSTRUCT modes):
Remove use of aarch64_simd_attr_length_move, set length attribute
directly.
(*aarch64_be_movoi): Likewise.
(*aarch64_be_movci): Likewise.
(*aarch64_be_movxi): Likewise.

From-SVN: r236916

gcc/ChangeLog
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64-simd.md
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/iterators.md

index bb5b0c67462f61c0a4534e04c22ccc636b69807b..ae81bbfb1a995b24b9ae731bd731637547f9240e 100644 (file)
@@ -1,3 +1,16 @@
+2016-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * config/aarch64/aarch64.c (aarch64_simd_attr_length_move): Delete.
+       * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_move):
+       Delete prototype.
+       * config/aarch64/iterators.md (insn_count): Add descriptive comment.
+       * config/aarch64/aarch64-simd.md (*aarch64_mov<mode>, VSTRUCT modes):
+       Remove use of aarch64_simd_attr_length_move, set length attribute
+       directly.
+       (*aarch64_be_movoi): Likewise.
+       (*aarch64_be_movci): Likewise.
+       (*aarch64_be_movxi): Likewise.
+
 2016-05-31  Jan Hubicka  <hubicka@ucw.cz>
 
        * loop-init.c (gate): Do not enale RTL loop unroller with -fpeel-loops.
index dcf1748d82f8672fd9100f48f66cf590228b88c1..ab9b37a771f97de547d46cefd8e91099b8120136 100644 (file)
@@ -333,7 +333,6 @@ machine_mode aarch64_hard_regno_caller_save_mode (unsigned, unsigned,
                                                       machine_mode);
 int aarch64_hard_regno_mode_ok (unsigned, machine_mode);
 int aarch64_hard_regno_nregs (unsigned, machine_mode);
-int aarch64_simd_attr_length_move (rtx_insn *);
 int aarch64_uxt_size (int, HOST_WIDE_INT);
 int aarch64_vec_fpconst_pow_of_2 (rtx);
 rtx aarch64_final_eh_return_addr (void);
index fe1c22bfdf7e90fda391a91dea610b39b653bfa8..6ea35bf487eaa47dd78742e3eae7507b6875ba1a 100644 (file)
    ld1\\t{%S0.16b - %<Vendreg>0.16b}, %1"
   [(set_attr "type" "multiple,neon_store<nregs>_<nregs>reg_q,\
                     neon_load<nregs>_<nregs>reg_q")
-   (set (attr "length") (symbol_ref "aarch64_simd_attr_length_move (insn)"))]
+   (set_attr "length" "<insn_count>,4,4")]
 )
 
 (define_insn "aarch64_be_ld1<mode>"
    stp\\t%q1, %R1, %0
    ldp\\t%q0, %R0, %1"
   [(set_attr "type" "multiple,neon_stp_q,neon_ldp_q")
-   (set (attr "length") (symbol_ref "aarch64_simd_attr_length_move (insn)"))]
+   (set_attr "length" "8,4,4")]
 )
 
 (define_insn "*aarch64_be_movci"
        || register_operand (operands[1], CImode))"
   "#"
   [(set_attr "type" "multiple")
-   (set (attr "length") (symbol_ref "aarch64_simd_attr_length_move (insn)"))]
+   (set_attr "length" "12,4,4")]
 )
 
 (define_insn "*aarch64_be_movxi"
        || register_operand (operands[1], XImode))"
   "#"
   [(set_attr "type" "multiple")
-   (set (attr "length") (symbol_ref "aarch64_simd_attr_length_move (insn)"))]
+   (set_attr "length" "16,4,4")]
 )
 
 (define_split
index d2ac25ce339dbfb061260b8148e42a35f2d441e3..3ec5c9fb635b70337fa49293b07ffc6ad9b6e9f4 100644 (file)
@@ -10734,33 +10734,6 @@ aarch64_simd_emit_reg_reg_move (rtx *operands, enum machine_mode mode,
                      gen_rtx_REG (mode, rsrc + count - i - 1));
 }
 
-/* Compute and return the length of aarch64_simd_mov<mode>, where <mode> is
-   one of VSTRUCT modes: OI, CI or XI.  */
-int
-aarch64_simd_attr_length_move (rtx_insn *insn)
-{
-  machine_mode mode;
-
-  extract_insn_cached (insn);
-
-  if (REG_P (recog_data.operand[0]) && REG_P (recog_data.operand[1]))
-    {
-      mode = GET_MODE (recog_data.operand[0]);
-      switch (mode)
-       {
-       case OImode:
-         return 8;
-       case CImode:
-         return 12;
-       case XImode:
-         return 16;
-       default:
-         gcc_unreachable ();
-       }
-    }
-  return 4;
-}
-
 /* Compute and return the length of aarch64_simd_reglist<mode>, where <mode> is
    one of VSTRUCT modes: OI, CI, or XI.  */
 int
index d9bd39112c3f4af19781290778babdf919f1c514..43b22d81cda30398564af2f2fcaefceb215ec04c 100644 (file)
 (define_mode_attr vsi2qi [(V2SI "v8qi") (V4SI "v16qi")])
 (define_mode_attr VSI2QI [(V2SI "V8QI") (V4SI "V16QI")])
 
+;; Sum of lengths of instructions needed to move vector registers of a mode.
 (define_mode_attr insn_count [(OI "8") (CI "12") (XI "16")])
 
 ;; -fpic small model GOT reloc modifers: gotpage_lo15/lo14 for ILP64/32.