diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2024-12-09 08:53:20 -0600 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2024-12-24 08:32:15 -0800 |
commit | d33e0f01db0f75c890a8ed1f1116d45080ca1c3c (patch) | |
tree | 7038b1de9cdd238c7e55fa2e78801f823a41882c /tcg | |
parent | fe1d0074b5cc64e0a548dfba8ab322bd8710c7e5 (diff) | |
download | qemu-d33e0f01db0f75c890a8ed1f1116d45080ca1c3c.zip qemu-d33e0f01db0f75c890a8ed1f1116d45080ca1c3c.tar.gz qemu-d33e0f01db0f75c890a8ed1f1116d45080ca1c3c.tar.bz2 |
tcg/optimize: Use fold_masks_zs in fold_tcg_ld
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.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/tcg/optimize.c b/tcg/optimize.c index cd052a2..7141b18 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -2650,30 +2650,32 @@ static bool fold_sub2(OptContext *ctx, TCGOp *op) static bool fold_tcg_ld(OptContext *ctx, TCGOp *op) { + uint64_t z_mask = -1, s_mask = 0; + /* We can't do any folding with a load, but we can record bits. */ switch (op->opc) { CASE_OP_32_64(ld8s): - ctx->s_mask = MAKE_64BIT_MASK(8, 56); + s_mask = INT8_MIN; break; CASE_OP_32_64(ld8u): - ctx->z_mask = MAKE_64BIT_MASK(0, 8); + z_mask = MAKE_64BIT_MASK(0, 8); break; CASE_OP_32_64(ld16s): - ctx->s_mask = MAKE_64BIT_MASK(16, 48); + s_mask = INT16_MIN; break; CASE_OP_32_64(ld16u): - ctx->z_mask = MAKE_64BIT_MASK(0, 16); + z_mask = MAKE_64BIT_MASK(0, 16); break; case INDEX_op_ld32s_i64: - ctx->s_mask = MAKE_64BIT_MASK(32, 32); + s_mask = INT32_MIN; break; case INDEX_op_ld32u_i64: - ctx->z_mask = MAKE_64BIT_MASK(0, 32); + z_mask = MAKE_64BIT_MASK(0, 32); break; default: g_assert_not_reached(); } - return false; + return fold_masks_zs(ctx, op, z_mask, s_mask); } static bool fold_tcg_ld_memcopy(OptContext *ctx, TCGOp *op) |