[Patch 4/7 sh] Deprecate *_BY_PIECES_P, move to hookized version
authorJames Greenhalgh <james.greenhalgh@arm.com>
Sat, 1 Nov 2014 10:12:24 +0000 (10:12 +0000)
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>
Sat, 1 Nov 2014 10:12:24 +0000 (10:12 +0000)
gcc/

* config/sh/sh.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New.
(sh_use_by_pieces_infrastructure_p): Likewise.
* config/sh/sh.h (MOVE_BY_PIECES_P): Remove.
(STORE_BY_PIECES_P): Likewise.
(SET_BY_PIECES_P): Likewise.

From-SVN: r217001

gcc/ChangeLog
gcc/config/sh/sh.c
gcc/config/sh/sh.h

index daebba906bda314d88df2243071f98d3ae3438a0..f193459a08c1d274974811f61ee4bce7a8523a09 100644 (file)
@@ -1,3 +1,11 @@
+2014-11-01  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * config/sh/sh.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New.
+       (sh_use_by_pieces_infrastructure_p): Likewise.
+       * config/sh/sh.h (MOVE_BY_PIECES_P): Remove.
+       (STORE_BY_PIECES_P): Likewise.
+       (SET_BY_PIECES_P): Likewise.
+
 2014-11-01  James Greenhalgh  <james.greenhalgh@arm.com>
 
        * config/arc/arc.c (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): New.
index 1dc1bf43bcba535cc927af98ebee366b6196a87a..3bbbd230406dfa6f14fc54f071808aa566fd9a35 100644 (file)
@@ -338,6 +338,10 @@ static void sh_conditional_register_usage (void);
 static bool sh_legitimate_constant_p (machine_mode, rtx);
 static int mov_insn_size (machine_mode, bool);
 static int mov_insn_alignment_mask (machine_mode, bool);
+static bool sh_use_by_pieces_infrastructure_p (unsigned int,
+                                              unsigned int,
+                                              enum by_pieces_operation,
+                                              bool);
 static bool sequence_insn_p (rtx_insn *);
 static void sh_canonicalize_comparison (int *, rtx *, rtx *, bool);
 static void sh_canonicalize_comparison (enum rtx_code&, rtx&, rtx&,
@@ -640,6 +644,10 @@ static const struct attribute_spec sh_attribute_table[] =
 #undef TARGET_FIXED_CONDITION_CODE_REGS
 #define TARGET_FIXED_CONDITION_CODE_REGS sh_fixed_condition_code_regs
 
+#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P
+#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \
+  sh_use_by_pieces_infrastructure_p
+
 /* Machine-specific symbol_ref flags.  */
 #define SYMBOL_FLAG_FUNCVEC_FUNCTION   (SYMBOL_FLAG_MACH_DEP << 0)
 
@@ -13674,4 +13682,27 @@ sh_mode_priority (int entity ATTRIBUTE_UNUSED, int n)
   return ((TARGET_FPU_SINGLE != 0) ^ (n) ? FP_MODE_SINGLE : FP_MODE_DOUBLE);
 }
 
+/* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P.  */
+
+static bool
+sh_use_by_pieces_infrastructure_p (unsigned int size,
+                                  unsigned int align,
+                                  enum by_pieces_operation op,
+                                  bool speed_p)
+{
+  switch (op)
+    {
+      case MOVE_BY_PIECES:
+       return move_by_pieces_ninsns (size, align, MOVE_MAX_PIECES + 1)
+         < (!speed_p ? 2 : (align >= 32) ? 16 : 2);
+      case STORE_BY_PIECES:
+      case SET_BY_PIECES:
+       return move_by_pieces_ninsns (size, align, STORE_MAX_PIECES + 1)
+         < (!speed_p ? 2 : (align >= 32) ? 16 : 2);
+      default:
+       return default_use_by_pieces_infrastructure_p (size, align,
+                                                      op, speed_p);
+    }
+}
+
 #include "gt-sh.h"
index 5b8b4a1939cbbdce386d9954a85a33613d272a7c..92835d7d8e0fd09d7a48abb8f9d36b595b37201a 100644 (file)
@@ -1591,16 +1591,6 @@ struct sh_args {
 #define USE_STORE_PRE_DECREMENT(mode)    ((mode == SImode || mode == DImode) \
                                          ? 0 : TARGET_SH1)
 
-#define MOVE_BY_PIECES_P(SIZE, ALIGN) \
-  (move_by_pieces_ninsns (SIZE, ALIGN, MOVE_MAX_PIECES + 1) \
-   < (optimize_size ? 2 : ((ALIGN >= 32) ? 16 : 2)))
-
-#define STORE_BY_PIECES_P(SIZE, ALIGN) \
-  (move_by_pieces_ninsns (SIZE, ALIGN, STORE_MAX_PIECES + 1) \
-   < (optimize_size ? 2 : ((ALIGN >= 32) ? 16 : 2)))
-
-#define SET_BY_PIECES_P(SIZE, ALIGN) STORE_BY_PIECES_P(SIZE, ALIGN)
-
 /* If a memory clear move would take CLEAR_RATIO or more simple
    move-instruction pairs, we will do a setmem instead.  */