[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/6] tcg: Constant fold neg, andc, orc, eqv, nand, n
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 3/6] tcg: Constant fold neg, andc, orc, eqv, nand, nor. |
Date: |
Wed, 17 Aug 2011 14:11:47 -0700 |
Signed-off-by: Richard Henderson <address@hidden>
---
tcg/optimize.c | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index 32f928f..7e7f2b2 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -215,6 +215,24 @@ static TCGArg do_constant_folding_2(int op, TCGArg x,
TCGArg y)
CASE_OP_32_64(not):
return ~x;
+ CASE_OP_32_64(neg):
+ return -x;
+
+ CASE_OP_32_64(andc):
+ return x & ~y;
+
+ CASE_OP_32_64(orc):
+ return x | ~y;
+
+ CASE_OP_32_64(eqv):
+ return ~(x ^ y);
+
+ CASE_OP_32_64(nand):
+ return ~(x & y);
+
+ CASE_OP_32_64(nor):
+ return ~(x | y);
+
CASE_OP_32_64(ext8s):
return (int8_t)x;
@@ -290,6 +308,9 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t
*tcg_opc_ptr,
CASE_OP_32_64(and):
CASE_OP_32_64(or):
CASE_OP_32_64(xor):
+ CASE_OP_32_64(eqv):
+ CASE_OP_32_64(nand):
+ CASE_OP_32_64(nor):
if (temps[args[1]].state == TCG_TEMP_CONST) {
tmp = args[1];
args[1] = args[2];
@@ -389,6 +410,7 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t
*tcg_opc_ptr,
args += 2;
break;
CASE_OP_32_64(not):
+ CASE_OP_32_64(neg):
CASE_OP_32_64(ext8s):
CASE_OP_32_64(ext8u):
CASE_OP_32_64(ext16s):
@@ -421,6 +443,11 @@ static TCGArg *tcg_constant_folding(TCGContext *s,
uint16_t *tcg_opc_ptr,
CASE_OP_32_64(sar):
CASE_OP_32_64(rotl):
CASE_OP_32_64(rotr):
+ CASE_OP_32_64(andc):
+ CASE_OP_32_64(orc):
+ CASE_OP_32_64(eqv):
+ CASE_OP_32_64(nand):
+ CASE_OP_32_64(nor):
if (temps[args[1]].state == TCG_TEMP_CONST
&& temps[args[2]].state == TCG_TEMP_CONST) {
gen_opc_buf[op_index] = op_to_movi(op);
--
1.7.4.4
- [Qemu-devel] [PATCH 0/6] TCG compile fixes and optimize cleanup, Richard Henderson, 2011/08/17
- [Qemu-devel] [PATCH 1/6] tcg: Add and use TCG_OPF_64BIT., Richard Henderson, 2011/08/17
- [Qemu-devel] [PATCH 3/6] tcg: Constant fold neg, andc, orc, eqv, nand, nor.,
Richard Henderson <=
- [Qemu-devel] [PATCH 4/6] tcg-hppa: Fix CPU_TEMP_BUF_NLONGS oversight., Richard Henderson, 2011/08/17
- [Qemu-devel] [PATCH 6/6] tcg-arm: Make tcg_out_addi inline, Richard Henderson, 2011/08/17
- [Qemu-devel] [PATCH 5/6] tcg-ia64: Fix typos in AREG0 setup in prologue., Richard Henderson, 2011/08/17
- [Qemu-devel] [PATCH 2/6] tcg: Always define all of the TCGOpcode enum members., Richard Henderson, 2011/08/17