Commit 991c42ac by Jan-Benedict Glaw Committed by Hans-Peter Nilsson

* config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)

	(cris_print_index, cris_print_operand, cris_print_operand_address)
	(cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
	(cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
	(cris_expand_pic_call_address): Use xxx_P predicate macros instead of
	GET_CODE () == xxx.
	* config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
	EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
	GO_IF_LEGITIMATE_ADDRESS): Ditto.
	* config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
	(*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
	(*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
	(*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
	(*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
	(*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
	(uminsi3, call, call_value): Ditto.
	(define_split: indir_to_reg_split, unnamed): Ditto.

From-SVN: r122128
parent 602fea7c
2007-02-19 Jan-Benedict Glaw <jbglaw@lug-owl.de>
* config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
(cris_print_index, cris_print_operand, cris_print_operand_address)
(cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
(cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
(cris_expand_pic_call_address): Use xxx_P predicate macros instead of
GET_CODE () == xxx.
* config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
GO_IF_LEGITIMATE_ADDRESS): Ditto.
* config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
(*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
(*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
(*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
(*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
(*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
(uminsi3, call, call_value): Ditto.
(define_split: indir_to_reg_split, unnamed): Ditto.
2007-02-19 Dorit Nuzman <dorit@il.ibm.com>
PR tree-optimization/30975
......
......@@ -577,7 +577,7 @@ enum reg_class
#define SECONDARY_RELOAD_CLASS(CLASS, MODE, X) \
(((CLASS) != SPECIAL_REGS && (CLASS) != MOF_REGS) \
|| GET_MODE_SIZE (MODE) == 4 \
|| GET_CODE (X) != MEM \
|| !MEM_P (X) \
? NO_REGS : GENERAL_REGS)
/* For CRIS, this is always the size of MODE in words,
......@@ -643,7 +643,7 @@ enum reg_class
/* Just an indirect register (happens to also be \
"all" slottable memory addressing modes not \
covered by other constraints, i.e. '>'). */ \
GET_CODE (X) == MEM && BASE_P (XEXP (X, 0)) \
MEM_P (X) && BASE_P (XEXP (X, 0)) \
)
#define EXTRA_CONSTRAINT_R(X) \
......@@ -659,8 +659,8 @@ enum reg_class
#define EXTRA_CONSTRAINT_T(X) \
( \
/* Memory three-address operand. All are indirect-memory: */ \
GET_CODE (X) == MEM \
&& ((GET_CODE (XEXP (X, 0)) == MEM \
MEM_P (X) \
&& ((MEM_P (XEXP (X, 0)) \
/* Double indirect: [[reg]] or [[reg+]]? */ \
&& (BASE_OR_AUTOINCR_P (XEXP (XEXP (X, 0), 0)))) \
/* Just an explicit indirect reference: [const]? */ \
......@@ -959,10 +959,10 @@ struct cum_args {int regs;};
/* True if X is a valid (register) index for BDAP, i.e. [Rs].S or [Rs+].S. */
#define BDAP_INDEX_P(X) \
((GET_CODE (X) == MEM && GET_MODE (X) == SImode \
((MEM_P (X) && GET_MODE (X) == SImode \
&& BASE_OR_AUTOINCR_P (XEXP (X, 0))) \
|| (GET_CODE (X) == SIGN_EXTEND \
&& GET_CODE (XEXP (X, 0)) == MEM \
&& MEM_P (XEXP (X, 0)) \
&& (GET_MODE (XEXP (X, 0)) == HImode \
|| GET_MODE (XEXP (X, 0)) == QImode) \
&& BASE_OR_AUTOINCR_P (XEXP (XEXP (X, 0), 0))))
......@@ -973,14 +973,14 @@ struct cum_args {int regs;};
|| (GET_CODE (X) == MULT \
&& BASE_P (XEXP (X, 0)) \
&& REG_OK_FOR_INDEX_P (XEXP (X, 0)) \
&& GET_CODE (XEXP (X, 1)) == CONST_INT \
&& CONST_INT_P (XEXP (X, 1)) \
&& (INTVAL (XEXP (X, 1)) == 2 \
|| INTVAL (XEXP (X, 1)) == 4)))
/* True if X is an address that doesn't need a prefix i.e. [Rs] or [Rs+]. */
#define SIMPLE_ADDRESS_P(X) \
(BASE_P (X) \
|| (GET_CODE (X) == POST_INC \
#define SIMPLE_ADDRESS_P(X) \
(BASE_P (X) \
|| (GET_CODE (X) == POST_INC \
&& BASE_P (XEXP (X, 0))))
/* A PIC operand looks like a normal symbol here. At output we dress it
......@@ -1013,7 +1013,7 @@ struct cum_args {int regs;};
|| (BASE_P (x2) && BIAP_INDEX_P (x1))))) \
goto ADDR; \
} \
else if (GET_CODE (X) == MEM) \
else if (MEM_P (X)) \
{ \
/* DIP (Rs). Reject [[reg+]] and [[reg]] for \
DImode (long long). */ \
......
......@@ -337,12 +337,12 @@
(match_operand:SI 1 "const_int_operand" "K,n,K,n,K,n,n")
(match_operand:SI 2 "nonmemory_operand" "M,M,K,n,r,r,r")))]
;; Either it is a single bit, or consecutive ones starting at 0.
"GET_CODE (operands[1]) == CONST_INT
"CONST_INT_P (operands[1])
&& (operands[1] == const1_rtx || operands[2] == const0_rtx)
&& (REG_S_P (operands[0])
|| (operands[1] == const1_rtx
&& REG_S_P (operands[2])
&& GET_CODE (operands[0]) == CONST_INT
&& CONST_INT_P (operands[0])
&& exact_log2 (INTVAL (operands[0])) >= 0))"
;; The last "&&" condition above should be caught by some kind of
......@@ -409,7 +409,7 @@
(match_operand:DI 1 "general_operand" ""))]
""
{
if (GET_CODE (operands[0]) == MEM && operands[1] != const0_rtx)
if (MEM_P (operands[0]) && operands[1] != const0_rtx)
operands[1] = copy_to_mode_reg (DImode, operands[1]);
/* Some other ports (as of 2001-09-10 for example mcore and romp) also
......@@ -420,8 +420,7 @@
emitted) is the final value. This construct from romp seems more
robust, especially considering the head comments from
emit_no_conflict_block. */
if ((GET_CODE (operands[1]) == CONST_INT
|| GET_CODE (operands[1]) == CONST_DOUBLE)
if ((CONST_INT_P (operands[1]) || GET_CODE (operands[1]) == CONST_DOUBLE)
&& ! reload_completed
&& ! reload_in_progress)
{
......@@ -513,7 +512,7 @@
"cris_side_effect_mode_ok (PLUS, operands, 3, 1, 2, -1, 0)"
{
if ((which_alternative == 0 || which_alternative == 3)
&& (GET_CODE (operands[2]) != CONST_INT
&& (!CONST_INT_P (operands[2])
|| INTVAL (operands[2]) > 127
|| INTVAL (operands[2]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[2]), 'N')
......@@ -540,7 +539,7 @@
|| which_alternative == 3
|| which_alternative == 6
|| which_alternative == 8)
&& (GET_CODE (operands[2]) != CONST_INT
&& (!CONST_INT_P (operands[2])
|| INTVAL (operands[2]) > 127
|| INTVAL (operands[2]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[2]), 'N')
......@@ -659,7 +658,7 @@
"cris_side_effect_mode_ok (PLUS, operands, 3, 0, 1, -1, 2)"
{
if ((which_alternative == 0 || which_alternative == 4)
&& (GET_CODE (operands[1]) != CONST_INT
&& (!CONST_INT_P (operands[1])
|| INTVAL (operands[1]) > 127
|| INTVAL (operands[1]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[1]), 'N')
......@@ -693,7 +692,7 @@
&& cris_side_effect_mode_ok (PLUS, operands, 3, 0, 1, -1, 2)"
{
if ((which_alternative == 0 || which_alternative == 4)
&& (GET_CODE (operands[1]) != CONST_INT
&& (!CONST_INT_P (operands[1])
|| INTVAL (operands[1]) > 127
|| INTVAL (operands[1]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[1]), 'N')
......@@ -766,7 +765,7 @@
"cris_side_effect_mode_ok (PLUS, operands, 2, 0, 1, -1, -1)"
{
if ((which_alternative == 0 || which_alternative == 3)
&& (GET_CODE (operands[1]) != CONST_INT
&& (!CONST_INT_P (operands[1])
|| INTVAL (operands[1]) > 127
|| INTVAL (operands[1]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[1]), 'N')
......@@ -787,7 +786,7 @@
{
/* If the output goes to a MEM, make sure we have zero or a register as
input. */
if (GET_CODE (operands[0]) == MEM
if (MEM_P (operands[0])
&& ! REG_S_P (operands[1])
&& operands[1] != const0_rtx
&& ! no_new_pseudos)
......@@ -960,7 +959,7 @@
if (GET_CODE (tem) == PLUS
&& GET_CODE (XEXP (tem, 0)) == UNSPEC
&& XINT (XEXP (tem, 0), 1) == CRIS_UNSPEC_GOTREL
&& GET_CODE (XEXP (tem, 1)) == CONST_INT)
&& CONST_INT_P (XEXP (tem, 1)))
tem = XEXP (tem, 0);
gcc_assert (GET_CODE (tem) == UNSPEC);
switch (XINT (tem, 1))
......@@ -1047,7 +1046,7 @@
"cris_side_effect_mode_ok (PLUS, operands, 3, 1, 2, -1, 0)"
{
if ((which_alternative == 0 || which_alternative == 3)
&& (GET_CODE (operands[2]) != CONST_INT
&& (!CONST_INT_P (operands[2])
|| INTVAL (operands[2]) > 127
|| INTVAL (operands[2]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[2]), 'N')
......@@ -1071,7 +1070,7 @@
"cris_side_effect_mode_ok (PLUS, operands, 3, 1, 2, -1, 0)"
{
if ((which_alternative == 0 || which_alternative == 3)
&& (GET_CODE (operands[2]) != CONST_INT
&& (!CONST_INT_P (operands[2])
|| INTVAL (operands[2]) > 127
|| INTVAL (operands[2]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[2]), 'N')
......@@ -1348,7 +1347,7 @@
"cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
{
if ((which_alternative == 0 || which_alternative == 3)
&& (GET_CODE (operands[3]) != CONST_INT
&& (!CONST_INT_P (operands[3])
|| INTVAL (operands[3]) > 127
|| INTVAL (operands[3]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'N')
......@@ -1406,7 +1405,7 @@
"cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
{
if ((which_alternative == 0 || which_alternative == 3)
&& (GET_CODE (operands[3]) != CONST_INT
&& (!CONST_INT_P (operands[3])
|| INTVAL (operands[3]) > 127
|| INTVAL (operands[3]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'N')
......@@ -1482,7 +1481,7 @@
if (GET_CODE (tem) == PLUS
&& GET_CODE (XEXP (tem, 0)) == UNSPEC
&& XINT (XEXP (tem, 0), 1) == CRIS_UNSPEC_GOTREL
&& GET_CODE (XEXP (tem, 1)) == CONST_INT)
&& CONST_INT_P (XEXP (tem, 1)))
tem = XEXP (tem, 0);
gcc_assert (GET_CODE (tem) == UNSPEC);
switch (XINT (tem, 1))
......@@ -1679,7 +1678,7 @@
"cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
{
if ((which_alternative == 0 || which_alternative == 3)
&& (GET_CODE (operands[3]) != CONST_INT
&& (!CONST_INT_P (operands[3])
|| INTVAL (operands[3]) > 127
|| INTVAL (operands[3]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'N')
......@@ -1708,7 +1707,7 @@
&& cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
{
if ((which_alternative == 0 || which_alternative == 3)
&& (GET_CODE (operands[3]) != CONST_INT
&& (!CONST_INT_P (operands[3])
|| INTVAL (operands[3]) > 127
|| INTVAL (operands[3]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'N')
......@@ -1788,7 +1787,7 @@
"cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
{
if ((which_alternative == 0 || which_alternative == 3)
&& (GET_CODE (operands[3]) != CONST_INT
&& (!CONST_INT_P (operands[3])
|| INTVAL (operands[3]) > 127
|| INTVAL (operands[3]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'N')
......@@ -1816,7 +1815,7 @@
&& cris_side_effect_mode_ok (PLUS, operands, 4, 2, 3, -1, 0)"
{
if ((which_alternative == 0 || which_alternative == 3)
&& (GET_CODE (operands[3]) != CONST_INT
&& (!CONST_INT_P (operands[3])
|| INTVAL (operands[3]) > 127
|| INTVAL (operands[3]) < -128
|| CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'N')
......@@ -1963,7 +1962,7 @@
(match_operand:SI 2 "const_int_operand" "n")))]
"operands[0] != frame_pointer_rtx
&& operands[1] != frame_pointer_rtx
&& GET_CODE (operands[2]) == CONST_INT
&& CONST_INT_P (operands[2])
&& (INTVAL (operands[2]) == 2
|| INTVAL (operands[2]) == 4 || INTVAL (operands[2]) == 3
|| INTVAL (operands[2]) == 5)"
......@@ -1993,7 +1992,7 @@
(match_operand:SI 1 "register_operand" "0")))]
"operands[0] != frame_pointer_rtx
&& operands[1] != frame_pointer_rtx
&& GET_CODE (operands[3]) == CONST_INT
&& CONST_INT_P (operands[3])
&& (INTVAL (operands[3]) == 1
|| INTVAL (operands[3]) == 2 || INTVAL (operands[3]) == 4)"
"addi %2%T3,%0"
......@@ -2185,7 +2184,7 @@
(match_operand:SI 2 "general_operand" "")))]
""
{
if (! (GET_CODE (operands[2]) == CONST_INT
if (! (CONST_INT_P (operands[2])
&& (((INTVAL (operands[2]) == -256
|| INTVAL (operands[2]) == -65536)
&& rtx_equal_p (operands[1], operands[0]))
......@@ -2283,7 +2282,7 @@
(match_operand:HI 2 "general_operand" "")))]
""
{
if (! (GET_CODE (operands[2]) == CONST_INT
if (! (CONST_INT_P (operands[2])
&& (((INTVAL (operands[2]) == -256
|| INTVAL (operands[2]) == 65280)
&& rtx_equal_p (operands[1], operands[0]))
......@@ -2619,8 +2618,7 @@
""
{
return
(GET_CODE (operands[2]) == CONST_INT
&& INTVAL (operands[2]) > <nbitsm1>)
(CONST_INT_P (operands[2]) && INTVAL (operands[2]) > <nbitsm1>)
? "moveq 0,%0"
: (CONSTANT_P (operands[2])
? "lslq %2,%0" : "lsl<m> %2,%0");
......@@ -2677,7 +2675,7 @@
(match_operand:SI 2 "general_operand" "r,Q>,g,!To")))]
""
{
if (GET_CODE (operands[2]) == CONST_INT)
if (CONST_INT_P (operands[2]))
{
/* Constant operands are zero-extended, so only 32-bit operands
may be negative. */
......@@ -2890,7 +2888,7 @@
(clobber (reg:SI CRIS_SRP_REGNUM))])]
""
{
gcc_assert (GET_CODE (operands[0]) == MEM);
gcc_assert (MEM_P (operands[0]));
if (flag_pic)
cris_expand_pic_call_address (&operands[0]);
})
......@@ -2931,7 +2929,7 @@
(clobber (reg:SI CRIS_SRP_REGNUM))])]
""
{
gcc_assert (GET_CODE (operands[1]) == MEM);
gcc_assert (MEM_P (operands[1]));
if (flag_pic)
cris_expand_pic_call_address (&operands[1]);
})
......@@ -3640,8 +3638,7 @@
"reload_completed
&& REG_P (operands[0])
&& GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
&& (GET_CODE (XEXP (operands[1], 0)) == MEM
|| CONSTANT_P (XEXP (operands[1], 0)))
&& (MEM_P (XEXP (operands[1], 0)) || CONSTANT_P (XEXP (operands[1], 0)))
&& REGNO (operands[0]) < CRIS_LAST_GENERAL_REGISTER"
[(set (match_dup 2) (match_dup 4))
(set (match_dup 0) (match_dup 3))]
......@@ -3659,7 +3656,7 @@
"reload_completed
&& REG_P (operands[0])
&& GET_MODE_SIZE (GET_MODE (operands[0])) <= UNITS_PER_WORD
&& (GET_CODE (XEXP (operands[1], 0)) == MEM
&& (MEM_P (XEXP (operands[1], 0))
|| CONSTANT_P (XEXP (operands[1], 0)))"
[(set (match_dup 2) (match_dup 5))
(set (match_dup 0) (match_op_dup 4 [(match_dup 3)]))]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment