[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 19/64] tcg/optimize: Fold movcond 0/1 into setcon
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v4 19/64] tcg/optimize: Fold movcond 0/1 into setcond |
Date: |
Wed, 23 Nov 2016 14:01:16 +0100 |
Signed-off-by: Richard Henderson <address@hidden>
---
tcg/optimize.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index f41ed2c..9e26bb7 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -1105,6 +1105,21 @@ void tcg_optimize(TCGContext *s)
tcg_opt_gen_mov(s, op, args, args[0], args[4-tmp]);
break;
}
+ if (temp_is_const(args[3]) && temp_is_const(args[4])) {
+ tcg_target_ulong tv = temps[args[3]].val;
+ tcg_target_ulong fv = temps[args[4]].val;
+ TCGCond cond = args[5];
+ if (fv == 1 && tv == 0) {
+ cond = tcg_invert_cond(cond);
+ } else if (!(tv == 1 && fv == 0)) {
+ goto do_default;
+ }
+ args[3] = cond;
+ op->opc = opc = (opc == INDEX_op_movcond_i32
+ ? INDEX_op_setcond_i32
+ : INDEX_op_setcond_i64);
+ nb_iargs = 2;
+ }
goto do_default;
case INDEX_op_add2_i32:
--
2.7.4
- [Qemu-devel] [PATCH v4 07/64] tcg/i386: Implement field extraction opcodes, (continued)
- [Qemu-devel] [PATCH v4 07/64] tcg/i386: Implement field extraction opcodes, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 09/64] tcg/ppc: Implement field extraction opcodes, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 11/64] tcg/s390: Implement field extraction opcodes, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 10/64] tcg/s390: Expose host facilities to tcg-target.h, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 12/64] tcg/s390: Support deposit into zero, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 13/64] target-alpha: Use deposit and extract ops, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 14/64] target-arm: Use new deposit and extract ops, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 16/64] target-mips: Use the new extract op, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 15/64] target-i386: Use new deposit and extract ops, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 17/64] target-ppc: Use the new deposit and extract ops, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 19/64] tcg/optimize: Fold movcond 0/1 into setcond,
Richard Henderson <=
- [Qemu-devel] [PATCH v4 18/64] target-s390x: Use the new deposit and extract ops, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 20/64] tcg: Add markup for output requires new register, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 22/64] tcg: Pass the opcode width to target_parse_constraint, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 21/64] tcg: Transition flat op_defs array to a target callback, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 25/64] disas/i386.c: Handle tzcnt, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 23/64] tcg: Allow an operand to be matching or a constant, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 26/64] disas/ppc: Handle popcnt and cnttz, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 24/64] tcg: Add clz and ctz opcodes, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 27/64] target-alpha: Use the ctz and clz opcodes, Richard Henderson, 2016/11/23
- [Qemu-devel] [PATCH v4 29/64] target-microblaze: Use clz opcode, Richard Henderson, 2016/11/23