Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(775)

Unified Diff: gcc/gcc/config/sh/predicates.md

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gcc/gcc/config/sh/linux-unwind.h ('k') | gcc/gcc/config/sh/sh.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcc/gcc/config/sh/predicates.md
diff --git a/gcc/gcc/config/sh/predicates.md b/gcc/gcc/config/sh/predicates.md
index da9962c9984c0f6512680d74feabfe655bdea487..909b4a457689e4c445aca057779800122f34bbe0 100644
--- a/gcc/gcc/config/sh/predicates.md
+++ b/gcc/gcc/config/sh/predicates.md
@@ -22,14 +22,14 @@
(define_predicate "trapping_target_operand"
(match_code "if_then_else")
{
- rtx cond, mem, res, tar, and;
+ rtx cond, mem, res, tar, and_expr;
if (GET_MODE (op) != PDImode)
return 0;
cond = XEXP (op, 0);
mem = XEXP (op, 1);
res = XEXP (op, 2);
- if (GET_CODE (mem) != MEM
+ if (!MEM_P (mem)
|| (GET_CODE (res) != SIGN_EXTEND && GET_CODE (res) != TRUNCATE))
return 0;
tar = XEXP (res, 0);
@@ -49,12 +49,12 @@
return 0;
if (GET_CODE (cond) != EQ)
return 0;
- and = XEXP (cond, 0);
- return (GET_CODE (and) == AND
- && rtx_equal_p (XEXP (and, 0), tar)
- && GET_CODE (XEXP (and, 1)) == CONST_INT
- && GET_CODE (XEXP (cond, 1)) == CONST_INT
- && INTVAL (XEXP (and, 1)) == 3
+ and_expr = XEXP (cond, 0);
+ return (GET_CODE (and_expr) == AND
+ && rtx_equal_p (XEXP (and_expr, 0), tar)
+ && CONST_INT_P (XEXP (and_expr, 1))
+ && CONST_INT_P (XEXP (cond, 1))
+ && INTVAL (XEXP (and_expr, 1)) == 3
&& INTVAL (XEXP (cond, 1)) == 3);
})
@@ -108,11 +108,11 @@
attempting to transform a sequence of two 64-bit sets of the
same register from literal constants into a set and an add,
when the difference is too wide for an add. */
- if (GET_CODE (op) == CONST_INT
+ if (CONST_INT_P (op)
|| satisfies_constraint_Css (op))
return 1;
else if (GET_CODE (op) == TRUNCATE
- && GET_CODE (XEXP (op, 0)) == REG
+ && REG_P (XEXP (op, 0))
&& ! system_reg_operand (XEXP (op, 0), VOIDmode)
&& (mode == VOIDmode || mode == GET_MODE (op))
&& (GET_MODE_SIZE (GET_MODE (op))
@@ -152,9 +152,9 @@
{
int regno;
- if (GET_CODE (op) == REG)
+ if (REG_P (op))
regno = REGNO (op);
- else if (GET_CODE (op) == SUBREG && GET_CODE (SUBREG_REG (op)) == REG)
+ else if (GET_CODE (op) == SUBREG && REG_P (SUBREG_REG (op)))
regno = REGNO (SUBREG_REG (op));
else
return 1;
@@ -175,7 +175,7 @@
#if 0 /* Can't do this because of PROMOTE_MODE for unsigned vars. */
if (GET_MODE (op) == SImode && GET_CODE (op) == SIGN_EXTEND
&& GET_MODE (XEXP (op, 0)) == HImode
- && GET_CODE (XEXP (op, 0)) == REG
+ && REG_P (XEXP (op, 0))
&& REGNO (XEXP (op, 0)) <= LAST_GENERAL_REG)
return register_operand (XEXP (op, 0), VOIDmode);
#endif
@@ -223,13 +223,13 @@
{
if (GET_CODE (op) == PLUS)
{
- if (GET_CODE (XEXP (op, 0)) != REG)
+ if (!REG_P (XEXP (op, 0)))
return 0;
- if (GET_CODE (XEXP (op, 1)) != CONST_INT
+ if (!CONST_INT_P (XEXP (op, 1))
|| (INTVAL (XEXP (op, 1)) & 31))
return 0;
}
- else if (GET_CODE (op) != REG)
+ else if (!REG_P (op))
return 0;
return address_operand (op, mode);
})
@@ -253,7 +253,7 @@
(define_predicate "cmpsi_operand"
(match_code "subreg,reg,const_int")
{
- if (GET_CODE (op) == REG && REGNO (op) == T_REG
+ if (REG_P (op) && REGNO (op) == T_REG
&& GET_MODE (op) == SImode
&& TARGET_SH1)
return 1;
@@ -319,9 +319,9 @@
{
int regno;
- if (GET_CODE (op) == REG)
+ if (REG_P (op))
regno = REGNO (op);
- else if (GET_CODE (op) == SUBREG && GET_CODE (SUBREG_REG (op)) == REG)
+ else if (GET_CODE (op) == SUBREG && REG_P (SUBREG_REG (op)))
regno = REGNO (SUBREG_REG (op));
else
return 1;
@@ -337,7 +337,7 @@
(define_predicate "fpscr_operand"
(match_code "reg")
{
- return (GET_CODE (op) == REG
+ return (REG_P (op)
&& (REGNO (op) == FPSCR_REG
|| (REGNO (op) >= FIRST_PSEUDO_REGISTER
&& !(reload_in_progress || reload_completed)))
@@ -352,7 +352,7 @@
if (TARGET_SHMEDIA)
return fp_arith_reg_operand (op, mode);
- return (GET_CODE (op) == REG
+ return (REG_P (op)
&& (REGNO (op) == FPUL_REG || REGNO (op) >= FIRST_PSEUDO_REGISTER)
&& GET_MODE (op) == mode);
})
@@ -374,7 +374,7 @@
(define_predicate "general_movsrc_operand"
(match_code "subreg,reg,const_int,const_double,mem,symbol_ref,label_ref,const,const_vector")
{
- if (GET_CODE (op) == MEM)
+ if (MEM_P (op))
{
rtx inside = XEXP (op, 0);
if (GET_CODE (inside) == CONST)
@@ -385,7 +385,7 @@
if (GET_CODE (inside) == PLUS
&& GET_CODE (XEXP (inside, 0)) == LABEL_REF
- && GET_CODE (XEXP (inside, 1)) == CONST_INT)
+ && CONST_INT_P (XEXP (inside, 1)))
return 1;
/* Only post inc allowed. */
@@ -411,7 +411,7 @@
(match_code "subreg,reg,mem")
{
/* Only pre dec allowed. */
- if (GET_CODE (op) == MEM && GET_CODE (XEXP (op, 0)) == POST_INC)
+ if (MEM_P (op) && GET_CODE (XEXP (op, 0)) == POST_INC)
return 0;
if (mode == DImode && TARGET_SHMEDIA && GET_CODE (op) == SUBREG
&& GET_MODE_SIZE (GET_MODE (SUBREG_REG (op))) < 8
@@ -428,7 +428,7 @@
{
rtx inside;
- if (GET_CODE (op) != MEM || GET_MODE (op) != mode)
+ if (!MEM_P (op) || GET_MODE (op) != mode)
return 0;
inside = XEXP (op, 0);
@@ -436,7 +436,7 @@
if (GET_CODE (inside) == POST_INC)
inside = XEXP (inside, 0);
- if (GET_CODE (inside) == REG)
+ if (REG_P (inside))
return 1;
return 0;
@@ -457,7 +457,7 @@
op = XEXP (op, 0);
/* Can't use true_regnum here because copy_cost wants to know about
SECONDARY_INPUT_RELOAD_CLASS. */
- return GET_CODE (op) == REG && FP_REGISTER_P (REGNO (op));
+ return REG_P (op) && FP_REGISTER_P (REGNO (op));
})
;; TODO: Add a comment here.
@@ -532,7 +532,7 @@
{
HOST_WIDE_INT i;
- if (GET_CODE (op) != CONST_INT)
+ if (!CONST_INT_P (op))
return 0;
i = INTVAL (op);
return i >= 1 * 8 && i <= 7 * 8 && (i & 7) == 0;
@@ -552,6 +552,17 @@
(and (match_code "minus,div")
(match_test "GET_MODE (op) == mode")))
+;; UNORDERED is only supported on SHMEDIA.
+
+(define_predicate "sh_float_comparison_operator"
+ (ior (match_operand 0 "ordered_comparison_operator")
+ (and (match_test "TARGET_SHMEDIA")
+ (match_code "unordered"))))
+
+(define_predicate "shmedia_cbranch_comparison_operator"
+ (ior (match_operand 0 "equality_comparison_operator")
+ (match_operand 0 "greater_comparison_operator")))
+
;; TODO: Add a comment here.
(define_predicate "sh_const_vec"
@@ -564,7 +575,7 @@
return 0;
i = XVECLEN (op, 0) - 1;
for (; i >= 0; i--)
- if (GET_CODE (XVECEXP (op, 0, i)) != CONST_INT)
+ if (!CONST_INT_P (XVECEXP (op, 0, i)))
return 0;
return 1;
})
@@ -586,12 +597,12 @@
/* Determine numbers of last and of least significant elements. */
last = XVECLEN (op, 0) - 1;
least = TARGET_LITTLE_ENDIAN ? 0 : last;
- if (GET_CODE (XVECEXP (op, 0, least)) != CONST_INT)
+ if (!CONST_INT_P (XVECEXP (op, 0, least)))
return 0;
sign_ix = least;
if (GET_MODE_UNIT_SIZE (mode) == 1)
sign_ix = TARGET_LITTLE_ENDIAN ? 1 : last - 1;
- if (GET_CODE (XVECEXP (op, 0, sign_ix)) != CONST_INT)
+ if (!CONST_INT_P (XVECEXP (op, 0, sign_ix)))
return 0;
unit_size = GET_MODE_UNIT_SIZE (GET_MODE (op));
sign = (INTVAL (XVECEXP (op, 0, sign_ix)) >> (unit_size * BITS_PER_UNIT - 1)
@@ -649,7 +660,7 @@
(match_code "const_int,const_double,const,symbol_ref,label_ref,subreg,reg,zero_extend,sign_extend")
{
return (CONSTANT_P (op)
- ? (GET_CODE (op) == CONST_INT
+ ? (CONST_INT_P (op)
? (unsigned) INTVAL (op) < GET_MODE_BITSIZE (mode)
: nonmemory_operand (op, mode))
: shift_count_reg_operand (op, mode));
@@ -717,7 +728,7 @@
if (GET_CODE (op) == SUBREG)
op = XEXP (op, 0);
- if (GET_CODE (op) != REG)
+ if (!REG_P (op))
return 0;
/* We must protect ourselves from matching pseudos that are virtual
@@ -773,7 +784,7 @@
(define_predicate "xor_operand"
(match_code "subreg,reg,const_int")
{
- if (GET_CODE (op) == CONST_INT)
+ if (CONST_INT_P (op))
return (TARGET_SHMEDIA
? (satisfies_constraint_I06 (op)
|| (!can_create_pseudo_p () && INTVAL (op) == 0xff))
@@ -788,13 +799,13 @@
(define_predicate "bitwise_memory_operand"
(match_code "mem")
{
- if (GET_CODE (op) == MEM)
+ if (MEM_P (op))
{
if (REG_P (XEXP (op, 0)))
return 1;
if (GET_CODE (XEXP (op, 0)) == PLUS
- && GET_CODE (XEXP (XEXP (op, 0), 0)) == REG
+ && REG_P (XEXP (XEXP (op, 0), 0))
&& satisfies_constraint_K12 (XEXP (XEXP (op, 0), 1)))
return 1;
}
« no previous file with comments | « gcc/gcc/config/sh/linux-unwind.h ('k') | gcc/gcc/config/sh/sh.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698