+2014-11-01 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * config/s390/s390.c (s390_use_by_pieces_infrastructure_p): New.
+ (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Likewise.
+ * config/s390/s390.h (MOVE_BY_PIECES_P): Remove.
+ (CLEAR_BY_PIECES): Likewise.
+ (SET_BY_PIECES): Likewise.
+ (STORE_BY_PIECES): Likewise.
+
2014-11-01 James Greenhalgh <james.greenhalgh@arm.com>
* target.def (use_by_pieces_infrastructure_p): New.
register_pass (&insert_pass_s390_early_mach);
}
+/* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */
+
+static bool
+s390_use_by_pieces_infrastructure_p (unsigned int size,
+ unsigned int align ATTRIBUTE_UNUSED,
+ enum by_pieces_operation op ATTRIBUTE_UNUSED,
+ bool speed_p ATTRIBUTE_UNUSED)
+{
+ return (size == 1 || size == 2
+ || size == 4 || (TARGET_ZARCH && size == 8));
+}
+
/* Initialize GCC target structure. */
#undef TARGET_ASM_ALIGNED_HI_OP
#undef TARGET_SET_UP_BY_PROLOGUE
#define TARGET_SET_UP_BY_PROLOGUE s300_set_up_by_prologue
+#undef TARGET_USE_BY_PIECES_INFRASTRUCTURE_P
+#define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P \
+ s390_use_by_pieces_infrastructure_p
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-s390.h"
#define MOVE_MAX_PIECES (TARGET_ZARCH ? 8 : 4)
#define MAX_MOVE_MAX 16
-/* Determine whether to use move_by_pieces or block move insn. */
-#define MOVE_BY_PIECES_P(SIZE, ALIGN) \
- ( (SIZE) == 1 || (SIZE) == 2 || (SIZE) == 4 \
- || (TARGET_ZARCH && (SIZE) == 8) )
-
-/* Determine whether to use clear_by_pieces or block clear insn. */
-#define CLEAR_BY_PIECES_P(SIZE, ALIGN) \
- ( (SIZE) == 1 || (SIZE) == 2 || (SIZE) == 4 \
- || (TARGET_ZARCH && (SIZE) == 8) )
-
-/* This macro is used to determine whether store_by_pieces should be
- called to "memcpy" storage when the source is a constant string. */
-#define STORE_BY_PIECES_P(SIZE, ALIGN) MOVE_BY_PIECES_P (SIZE, ALIGN)
-
-/* Likewise to decide whether to "memset" storage with byte values
- other than zero. */
-#define SET_BY_PIECES_P(SIZE, ALIGN) STORE_BY_PIECES_P (SIZE, ALIGN)
-
/* Don't perform CSE on function addresses. */
#define NO_FUNCTION_CSE