[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 06/27] tcg/optimize: Build and use z_bits and o_bits in fold_e
From: |
Richard Henderson |
Subject: |
[PATCH v2 06/27] tcg/optimize: Build and use z_bits and o_bits in fold_eqv |
Date: |
Tue, 3 Jun 2025 09:08:47 +0100 |
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/optimize.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index 123734b167..6d35a2e58b 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -1093,6 +1093,12 @@ static bool fold_masks_zosa(OptContext *ctx, TCGOp *op,
uint64_t z_mask,
return true;
}
+static bool fold_masks_zos(OptContext *ctx, TCGOp *op,
+ uint64_t z_mask, uint64_t o_mask, uint64_t s_mask)
+{
+ return fold_masks_zosa(ctx, op, z_mask, o_mask, s_mask, -1);
+}
+
static bool fold_masks_zs(OptContext *ctx, TCGOp *op,
uint64_t z_mask, uint64_t s_mask)
{
@@ -1916,7 +1922,7 @@ static bool fold_dup2(OptContext *ctx, TCGOp *op)
static bool fold_eqv(OptContext *ctx, TCGOp *op)
{
- uint64_t s_mask;
+ uint64_t z_mask, o_mask, s_mask;
TempOptInfo *t1, *t2;
if (fold_const2_commutative(ctx, op) ||
@@ -1946,8 +1952,12 @@ static bool fold_eqv(OptContext *ctx, TCGOp *op)
}
t1 = arg_info(op->args[1]);
+
+ z_mask = (t1->z_mask | ~t2->o_mask) & (t2->z_mask | ~t1->o_mask);
+ o_mask = ~(t1->z_mask | t2->z_mask) | (t1->o_mask & t2->o_mask);
s_mask = t1->s_mask & t2->s_mask;
- return fold_masks_s(ctx, op, s_mask);
+
+ return fold_masks_zos(ctx, op, z_mask, o_mask, s_mask);
}
static bool fold_extract(OptContext *ctx, TCGOp *op)
--
2.43.0
- [PATCH v2 01/27] tcg/optimize: Introduce arg_const_val, (continued)
- [PATCH v2 01/27] tcg/optimize: Introduce arg_const_val, Richard Henderson, 2025/06/03
- [PATCH v2 02/27] tcg/optimize: Add one's mask to TempOptInfo, Richard Henderson, 2025/06/03
- [PATCH v2 03/27] tcg/optimize: Introduce fold_masks_zosa, Richard Henderson, 2025/06/03
- [PATCH v2 04/27] tcg/optimize: Build and use o_bits in fold_and, Richard Henderson, 2025/06/03
- [PATCH v2 05/27] tcg/optimize: Build and use o_bits in fold_andc, Richard Henderson, 2025/06/03
- [PATCH v2 06/27] tcg/optimize: Build and use z_bits and o_bits in fold_eqv,
Richard Henderson <=
- [PATCH v2 07/27] tcg/optimize: Build and use z_bits and o_bits in fold_nand, Richard Henderson, 2025/06/03
- [PATCH v2 08/27] tcg/optimize: Build and use z_bits and o_bits in fold_nor, Richard Henderson, 2025/06/03
- [PATCH v2 09/27] tcg/optimize: Build and use z_bits and o_bits in fold_not, Richard Henderson, 2025/06/03
- [PATCH v2 10/27] tcg/optimize: Build and use one and affected bits in fold_or, Richard Henderson, 2025/06/03
- [PATCH v2 12/27] tcg/optimize: Build and use o_bits in fold_xor, Richard Henderson, 2025/06/03