aboutsummaryrefslogtreecommitdiff
path: root/tcg
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2010-02-09 12:33:09 -0800
committerBlue Swirl <blauwirbel@gmail.com>2010-02-16 17:52:12 +0000
commit1c086220a6679948c9e9084829e302568548e3a2 (patch)
tree958dede5c76ae8c64f874e94b90c165d01df12a9 /tcg
parentbf76bafa5ade434ef2747ceeeeaa95510ecb7946 (diff)
tcg: Add tcg_swap_cond.
Returns the condition as if with swapped comparison operands. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'tcg')
-rw-r--r--tcg/tcg.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/tcg/tcg.h b/tcg/tcg.h
index b218abeaf2..563eccd390 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -205,11 +205,19 @@ typedef enum {
TCG_COND_GTU,
} TCGCond;
+/* Invert the sense of the comparison. */
static inline TCGCond tcg_invert_cond(TCGCond c)
{
return (TCGCond)(c ^ 1);
}
+/* Swap the operands in a comparison. */
+static inline TCGCond tcg_swap_cond(TCGCond c)
+{
+ int mask = (c < TCG_COND_LT ? 0 : c < TCG_COND_LTU ? 7 : 15);
+ return (TCGCond)(c ^ mask);
+}
+
static inline TCGCond tcg_unsigned_cond(TCGCond c)
{
return (c >= TCG_COND_LT && c <= TCG_COND_GT ? c + 4 : c);