aboutsummaryrefslogtreecommitdiff
path: root/tcg
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2024-12-08 19:49:17 -0600
committerRichard Henderson <richard.henderson@linaro.org>2024-12-24 08:32:14 -0800
commit81be07f905b187743b69adeb2877e5a9efc00d8e (patch)
treef0b8cd7c279cafd065346998c3cd799b2ea4514b /tcg
parentce1d663ff8a4535e4c72471cab3e52cb24fb7eb1 (diff)
downloadqemu-81be07f905b187743b69adeb2877e5a9efc00d8e.zip
qemu-81be07f905b187743b69adeb2877e5a9efc00d8e.tar.gz
qemu-81be07f905b187743b69adeb2877e5a9efc00d8e.tar.bz2
tcg/optimize: Use fold_masks_z in fold_ctpop
Add fold_masks_z as a trivial wrapper around fold_masks_zs. Avoid the use of the OptContext slots. Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'tcg')
-rw-r--r--tcg/optimize.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/tcg/optimize.c b/tcg/optimize.c
index 0766a45..2f5030c 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -1067,6 +1067,11 @@ static bool fold_masks_zs(OptContext *ctx, TCGOp *op,
return true;
}
+static bool fold_masks_z(OptContext *ctx, TCGOp *op, uint64_t z_mask)
+{
+ return fold_masks_zs(ctx, op, z_mask, 0);
+}
+
static bool fold_masks(OptContext *ctx, TCGOp *op)
{
return fold_masks_zs(ctx, op, ctx->z_mask, ctx->s_mask);
@@ -1599,21 +1604,23 @@ static bool fold_count_zeros(OptContext *ctx, TCGOp *op)
static bool fold_ctpop(OptContext *ctx, TCGOp *op)
{
+ uint64_t z_mask;
+
if (fold_const1(ctx, op)) {
return true;
}
switch (ctx->type) {
case TCG_TYPE_I32:
- ctx->z_mask = 32 | 31;
+ z_mask = 32 | 31;
break;
case TCG_TYPE_I64:
- ctx->z_mask = 64 | 63;
+ z_mask = 64 | 63;
break;
default:
g_assert_not_reached();
}
- return false;
+ return fold_masks_z(ctx, op, z_mask);
}
static bool fold_deposit(OptContext *ctx, TCGOp *op)