[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 6/8] tcg/optimize: swap brcond/setcond arguments whe
From: |
Aurelien Jarno |
Subject: |
[Qemu-devel] [PATCH 6/8] tcg/optimize: swap brcond/setcond arguments when possible |
Date: |
Thu, 6 Sep 2012 17:00:55 +0200 |
brcond and setcond ops are not commutative, but it's easy to compute the
new condition after swapping the arguments. Try to always put the constant
argument in second position like for commutative ops, to help backends to
generate better code.
Signed-off-by: Aurelien Jarno <address@hidden>
---
tcg/optimize.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index 1698ba3..7debc8a 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -318,6 +318,24 @@ static TCGArg *tcg_constant_folding(TCGContext *s,
uint16_t *tcg_opc_ptr,
args[2] = tmp;
}
break;
+ CASE_OP_32_64(brcond):
+ if (temps[args[0]].state == TCG_TEMP_CONST
+ && temps[args[1]].state != TCG_TEMP_CONST) {
+ tmp = args[0];
+ args[0] = args[1];
+ args[1] = tmp;
+ args[2] = tcg_swap_cond(args[2]);
+ }
+ break;
+ CASE_OP_32_64(setcond):
+ if (temps[args[1]].state == TCG_TEMP_CONST
+ && temps[args[2]].state != TCG_TEMP_CONST) {
+ tmp = args[1];
+ args[1] = args[2];
+ args[2] = tmp;
+ args[3] = tcg_swap_cond(args[3]);
+ }
+ break;
default:
break;
}
--
1.7.10.4
- [Qemu-devel] [PATCH 0/8] Improve TCG optimizer, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 1/8] tcg: improve profiler, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 4/8] tcg/optimize: simplify and r, a, 0 cases, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 2/8] tcg/optimize: split expression simplification, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 8/8] tcg/optimize: add constant folding for brcond, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 6/8] tcg/optimize: swap brcond/setcond arguments when possible,
Aurelien Jarno <=
- [Qemu-devel] [PATCH 7/8] tcg/optimize: add constant folding for setcond, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 5/8] tcg/optimize: simplify shift/rot r, 0, a => movi r, 0 cases, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 3/8] tcg/optimize: simplify or/xor r, a, 0 cases, Aurelien Jarno, 2012/09/06
- Re: [Qemu-devel] [PATCH 0/8] Improve TCG optimizer, Richard Henderson, 2012/09/06
- Re: [Qemu-devel] [PATCH 0/8] Improve TCG optimizer, Peter Maydell, 2012/09/07