[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 03/10] tcg: Swap commutative double-word comparisons
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 03/10] tcg: Swap commutative double-word comparisons |
Date: |
Tue, 2 Oct 2012 11:32:23 -0700 |
Signed-off-by: Richard Henderson <address@hidden>
---
tcg/optimize.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index 3539826..a713513 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -399,6 +399,22 @@ static bool swap_commutative(TCGArg dest, TCGArg *p1,
TCGArg *p2)
return false;
}
+static bool swap_commutative2(TCGArg *p1, TCGArg *p2)
+{
+ int sum = 0;
+ sum += temps[p1[0]].state == TCG_TEMP_CONST;
+ sum += temps[p1[1]].state == TCG_TEMP_CONST;
+ sum -= temps[p2[0]].state == TCG_TEMP_CONST;
+ sum -= temps[p2[1]].state == TCG_TEMP_CONST;
+ if (sum > 0) {
+ TCGArg t;
+ t = p1[0], p1[0] = p2[0], p2[0] = t;
+ t = p1[1], p1[1] = p2[1], p2[1] = t;
+ return true;
+ }
+ return false;
+}
+
/* Propagate constants and copies, fold constant expressions. */
static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr,
TCGArg *args, TCGOpDef *tcg_op_defs)
@@ -477,6 +493,16 @@ static TCGArg *tcg_constant_folding(TCGContext *s,
uint16_t *tcg_opc_ptr,
swap_commutative(args[0], &args[2], &args[4]);
swap_commutative(args[1], &args[3], &args[5]);
break;
+ case INDEX_op_brcond2_i32:
+ if (swap_commutative2(&args[0], &args[2])) {
+ args[4] = tcg_swap_cond(args[4]);
+ }
+ break;
+ case INDEX_op_setcond2_i32:
+ if (swap_commutative2(&args[1], &args[3])) {
+ args[5] = tcg_swap_cond(args[5]);
+ }
+ break;
default:
break;
}
--
1.7.11.4
[Qemu-devel] [PATCH 03/10] tcg: Swap commutative double-word comparisons,
Richard Henderson <=
[Qemu-devel] [PATCH 02/10] tcg: Canonicalize add2 operand ordering, Richard Henderson, 2012/10/02
[Qemu-devel] [PATCH 04/10] tcg: Use common code when failing to optimize, Richard Henderson, 2012/10/02
[Qemu-devel] [PATCH 05/10] tcg: Optimize double-word comparisons against zero, Richard Henderson, 2012/10/02