[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 57/81] tcg/optimize: Emit add r, r, -1 in fold_setcond_tst_pow
From: |
Richard Henderson |
Subject: |
[PATCH v2 57/81] tcg/optimize: Emit add r, r, -1 in fold_setcond_tst_pow2 |
Date: |
Tue, 7 Jan 2025 00:00:48 -0800 |
We canonicalize subtract with constant to add with constant.
Fix this missed instance.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/optimize.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index 1dd7b0e0bc..465e29494a 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -2286,7 +2286,7 @@ static int fold_setcond_zmask(OptContext *ctx, TCGOp *op,
bool neg)
static void fold_setcond_tst_pow2(OptContext *ctx, TCGOp *op, bool neg)
{
- TCGOpcode sub_opc, xor_opc, neg_opc, shr_opc;
+ TCGOpcode xor_opc, neg_opc, shr_opc;
TCGOpcode uext_opc = 0, sext_opc = 0;
TCGCond cond = op->args[3];
TCGArg ret, src1, src2;
@@ -2308,7 +2308,6 @@ static void fold_setcond_tst_pow2(OptContext *ctx, TCGOp
*op, bool neg)
switch (ctx->type) {
case TCG_TYPE_I32:
- sub_opc = INDEX_op_sub_i32;
xor_opc = INDEX_op_xor_i32;
shr_opc = INDEX_op_shr_i32;
neg_opc = INDEX_op_neg_i32;
@@ -2320,7 +2319,6 @@ static void fold_setcond_tst_pow2(OptContext *ctx, TCGOp
*op, bool neg)
}
break;
case TCG_TYPE_I64:
- sub_opc = INDEX_op_sub_i64;
xor_opc = INDEX_op_xor_i64;
shr_opc = INDEX_op_shr_i64;
neg_opc = INDEX_op_neg_i64;
@@ -2364,10 +2362,10 @@ static void fold_setcond_tst_pow2(OptContext *ctx,
TCGOp *op, bool neg)
}
if (neg && inv) {
- op2 = tcg_op_insert_after(ctx->tcg, op, sub_opc, 3);
+ op2 = tcg_op_insert_after(ctx->tcg, op, INDEX_op_add, 3);
op2->args[0] = ret;
op2->args[1] = ret;
- op2->args[2] = arg_new_constant(ctx, 1);
+ op2->args[2] = arg_new_constant(ctx, -1);
} else if (inv) {
op2 = tcg_op_insert_after(ctx->tcg, op, xor_opc, 3);
op2->args[0] = ret;
--
2.43.0
- [PATCH v2 67/81] tcg/optimize: Fold eqv with immediate to xor, (continued)
- [PATCH v2 67/81] tcg/optimize: Fold eqv with immediate to xor, Richard Henderson, 2025/01/07
- [PATCH v2 66/81] tcg: Merge INDEX_op_xor_{i32,i64}, Richard Henderson, 2025/01/07
- [PATCH v2 74/81] tcg: Merge INDEX_op_nor_{i32,i64}, Richard Henderson, 2025/01/07
- [PATCH v2 45/81] tcg/tci: Provide TCG_TARGET_{s}extract_valid, Richard Henderson, 2025/01/07
- [PATCH v2 46/81] tcg/tci: Remove assertions for deposit and extract, Richard Henderson, 2025/01/07
- [PATCH v2 57/81] tcg/optimize: Emit add r, r, -1 in fold_setcond_tst_pow2,
Richard Henderson <=
- [PATCH v2 53/81] tcg: Merge INDEX_op_add_{i32,i64}, Richard Henderson, 2025/01/07
- [PATCH v2 60/81] tcg: Convert or to TCGOutOpBinary, Richard Henderson, 2025/01/07
- [PATCH v2 65/81] tcg: Convert xor to TCGOutOpBinary, Richard Henderson, 2025/01/07
- [PATCH v2 68/81] tcg: Convert eqv to TCGOutOpBinary, Richard Henderson, 2025/01/07
- [PATCH v2 78/81] tcg: Convert neg to TCGOutOpUnary, Richard Henderson, 2025/01/07
- [PATCH v2 76/81] tcg: Convert sub to TCGOutOpSubtract, Richard Henderson, 2025/01/07
- [PATCH v2 79/81] tcg: Merge INDEX_op_neg_{i32,i64}, Richard Henderson, 2025/01/07