aboutsummaryrefslogtreecommitdiff
path: root/gcc/recog.c
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2009-04-08 15:18:49 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2009-04-08 15:18:49 +0000
commitc6963675ebad4a3396521df8e49d558a04cf12b3 (patch)
treec22913f141a234b21391cc1fee6f3ed3aa5a1a7e /gcc/recog.c
parent6d07ad98760362cd9615c673cf8302908ce60980 (diff)
downloadgcc-c6963675ebad4a3396521df8e49d558a04cf12b3.zip
gcc-c6963675ebad4a3396521df8e49d558a04cf12b3.tar.gz
gcc-c6963675ebad4a3396521df8e49d558a04cf12b3.tar.bz2
recog.c (ordered_comparison_operator): New.
2009-04-08 Paolo Bonzini <bonzini@gnu.org> * recog.c (ordered_comparison_operator): New. * gensupport.c (std_preds): Add it. * doc/md.texi (Machine-Independent Predicates): Document it. From-SVN: r145748
Diffstat (limited to 'gcc/recog.c')
-rw-r--r--gcc/recog.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/recog.c b/gcc/recog.c
index 70370e3..95f6e9a 100644
--- a/gcc/recog.c
+++ b/gcc/recog.c
@@ -1319,6 +1319,32 @@ indirect_operand (rtx op, enum machine_mode mode)
&& general_operand (XEXP (op, 0), Pmode));
}
+/* Return 1 if this is an ordered comparison operator (not including
+ ORDERED and UNORDERED). */
+
+int
+ordered_comparison_operator (rtx op, enum machine_mode mode)
+{
+ if (mode != VOIDmode && GET_MODE (op) != mode)
+ return false;
+ switch (GET_CODE (op))
+ {
+ case EQ:
+ case NE:
+ case LT:
+ case LTU:
+ case LE:
+ case LEU:
+ case GT:
+ case GTU:
+ case GE:
+ case GEU:
+ return true;
+ default:
+ return false;
+ }
+}
+
/* Return 1 if this is a comparison operator. This allows the use of
MATCH_OPERATOR to recognize all the branch insns. */