extern int mcore_expand_insv PARAMS ((rtx *));
extern int mcore_modify_comparison PARAMS ((RTX_CODE));
extern void mcore_expand_block_move PARAMS ((rtx, rtx, rtx *));
-extern rtx mcore_dependent_simplify_rtx PARAMS ((rtx, int, int, int, int *));
extern void mcore_dependent_reorg PARAMS ((rtx));
extern int mcore_const_costs PARAMS ((rtx, RTX_CODE));
extern int mcore_and_cost PARAMS ((rtx));
return "";
}
-#if 0 /* XXX temporarily suppressed until I have time to look at what this code does. */
-
-/* We need these below. They use information stored in tables to figure out
- what values are in what registers, etc. This is okay, since these tables
- are valid at the time mcore_dependent_simplify_rtx() is invoked. Don't
- use them anywhere else. BRC */
-
-extern unsigned HOST_WIDE_INT nonzero_bits PARAMS ((rtx, enum machine_mode));
-extern int num_sign_bit_copies PARAMS ((Rtx, enum machine_mode));
-
-/* Do machine dependent simplifications: see simplify_rtx() in combine.c.
- GENERAL_SIMPLIFY controls whether general machine independent
- simplifications should be tried after machine dependent ones. Thus,
- we can filter out certain simplifications and keep the simplify_rtx()
- from changing things that we just simplified in a machine dependent
- fashion. This is experimental. BRC */
-rtx
-mcore_dependent_simplify_rtx (x, int_op0_mode, last, in_dest, general_simplify)
- rtx x;
- int int_op0_mode;
- int last;
- int in_dest;
- int * general_simplify;
-{
- enum machine_mode mode = GET_MODE (x);
- enum rtx_code code = GET_CODE (x);
-
- /* Always simplify unless explicitly asked not to. */
- * general_simplify = 1;
-
- if (code == IF_THEN_ELSE)
- {
- int i;
- rtx cond = XEXP(x, 0);
- rtx true_rtx = XEXP(x, 1);
- rtx false_rtx = XEXP(x, 2);
- enum rtx_code true_code = GET_CODE (cond);
-
- /* On the mcore, when doing -mcmov-one, we don't want to simplify:
-
- (if_then_else (ne A 0) C1 0)
-
- if it would be turned into a shift by simplify_if_then_else().
- instead, leave it alone so that it will collapse into a conditional
- move. besides, at least for the mcore, doing this simplification does
- not typically help. see combine.c, line 4217. BRC */
-
- if (true_code == NE && XEXP (cond, 1) == const0_rtx
- && false_rtx == const0_rtx && GET_CODE (true_rtx) == CONST_INT
- && ((1 == nonzero_bits (XEXP (cond, 0), mode)
- && (i = exact_log2 (INTVAL (true_rtx))) >= 0)
- || ((num_sign_bit_copies (XEXP (cond, 0), mode)
- == GET_MODE_BITSIZE (mode))
- && (i = exact_log2 (- INTVAL (true_rtx))) >= 0)))
- {
- *general_simplify = 0;
- return x;
- }
- }
-
- return x;
-}
-#endif
-
/* Check whether insn is a candidate for a conditional. */
static cond_type
/* This is to handle loads from the constant pool. */
#define MACHINE_DEPENDENT_REORG(X) mcore_dependent_reorg (X)
-/* This handles MCore dependent rtl simplifications. */
-#define MACHINE_DEPENDENT_SIMPLIFY(X,M,L,I,S) \
- mcore_dependent_simplify_rtx (X, M, L, I, S)
-
#define PREDICATE_CODES \
{ "mcore_arith_reg_operand", { REG, SUBREG }}, \
{ "mcore_general_movsrc_operand", { MEM, CONST_INT, REG, SUBREG }},\