[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 08/39] target/alpha: Pass immediate value to gen_bcond_internal()
From: |
Richard Henderson |
Subject: |
[PULL 08/39] target/alpha: Pass immediate value to gen_bcond_internal() |
Date: |
Mon, 5 Feb 2024 07:40:21 +1000 |
Simplify gen_bcond() by passing an immediate value.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20231028194522.245170-33-richard.henderson@linaro.org>
[PMD: Split from bigger patch, part 1/2]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20231108205247.83234-1-philmd@linaro.org>
---
target/alpha/translate.c | 21 +++++++--------------
1 file changed, 7 insertions(+), 14 deletions(-)
diff --git a/target/alpha/translate.c b/target/alpha/translate.c
index 4b464f8651..e9cb623277 100644
--- a/target/alpha/translate.c
+++ b/target/alpha/translate.c
@@ -453,13 +453,13 @@ static DisasJumpType gen_bdirect(DisasContext *ctx, int
ra, int32_t disp)
}
static DisasJumpType gen_bcond_internal(DisasContext *ctx, TCGCond cond,
- TCGv cmp, int32_t disp)
+ TCGv cmp, uint64_t imm, int32_t disp)
{
uint64_t dest = ctx->base.pc_next + (disp << 2);
TCGLabel *lab_true = gen_new_label();
if (use_goto_tb(ctx, dest)) {
- tcg_gen_brcondi_i64(cond, cmp, 0, lab_true);
+ tcg_gen_brcondi_i64(cond, cmp, imm, lab_true);
tcg_gen_goto_tb(0);
tcg_gen_movi_i64(cpu_pc, ctx->base.pc_next);
@@ -472,11 +472,11 @@ static DisasJumpType gen_bcond_internal(DisasContext
*ctx, TCGCond cond,
return DISAS_NORETURN;
} else {
- TCGv_i64 z = load_zero(ctx);
+ TCGv_i64 i = tcg_constant_i64(imm);
TCGv_i64 d = tcg_constant_i64(dest);
TCGv_i64 p = tcg_constant_i64(ctx->base.pc_next);
- tcg_gen_movcond_i64(cond, cpu_pc, cmp, z, d, p);
+ tcg_gen_movcond_i64(cond, cpu_pc, cmp, i, d, p);
return DISAS_PC_UPDATED;
}
}
@@ -484,15 +484,8 @@ static DisasJumpType gen_bcond_internal(DisasContext *ctx,
TCGCond cond,
static DisasJumpType gen_bcond(DisasContext *ctx, TCGCond cond, int ra,
int32_t disp, int mask)
{
- if (mask) {
- TCGv tmp = tcg_temp_new();
- DisasJumpType ret;
-
- tcg_gen_andi_i64(tmp, load_gpr(ctx, ra), 1);
- ret = gen_bcond_internal(ctx, cond, tmp, disp);
- return ret;
- }
- return gen_bcond_internal(ctx, cond, load_gpr(ctx, ra), disp);
+ return gen_bcond_internal(ctx, cond, load_gpr(ctx, ra),
+ mask, disp);
}
/* Fold -0.0 for comparison with COND. */
@@ -533,7 +526,7 @@ static DisasJumpType gen_fbcond(DisasContext *ctx, TCGCond
cond, int ra,
DisasJumpType ret;
gen_fold_mzero(cond, cmp_tmp, load_fpr(ctx, ra));
- ret = gen_bcond_internal(ctx, cond, cmp_tmp, disp);
+ ret = gen_bcond_internal(ctx, cond, cmp_tmp, 0, disp);
return ret;
}
--
2.34.1
- [PULL 00/39] tcg patch queue, Richard Henderson, 2024/02/04
- [PULL 01/39] tcg: Introduce TCG_COND_TST{EQ,NE}, Richard Henderson, 2024/02/04
- [PULL 02/39] tcg: Introduce TCG_TARGET_HAS_tst, Richard Henderson, 2024/02/04
- [PULL 03/39] tcg/optimize: Split out arg_is_const_val, Richard Henderson, 2024/02/04
- [PULL 06/39] tcg/optimize: Handle TCG_COND_TST{EQ,NE}, Richard Henderson, 2024/02/04
- [PULL 05/39] tcg/optimize: Do swap_commutative2 in do_constant_folding_cond2, Richard Henderson, 2024/02/04
- [PULL 04/39] tcg/optimize: Split out do_constant_folding_cond1, Richard Henderson, 2024/02/04
- [PULL 07/39] tcg/optimize: Lower TCG_COND_TST{EQ,NE} if unsupported, Richard Henderson, 2024/02/04
- [PULL 08/39] target/alpha: Pass immediate value to gen_bcond_internal(),
Richard Henderson <=
- [PULL 09/39] target/alpha: Use TCG_COND_TST{EQ,NE} for BLB{C,S}, Richard Henderson, 2024/02/04
- [PULL 11/39] target/alpha: Use TCG_COND_TSTNE for gen_fold_mzero, Richard Henderson, 2024/02/04
- [PULL 10/39] target/alpha: Use TCG_COND_TST{EQ,NE} for CMOVLB{C,S}, Richard Henderson, 2024/02/04
- [PULL 12/39] target/m68k: Use TCG_COND_TST{EQ,NE} in gen_fcc_cond, Richard Henderson, 2024/02/04
- [PULL 13/39] target/sparc: Use TCG_COND_TSTEQ in gen_op_mulscc, Richard Henderson, 2024/02/04
- [PULL 14/39] target/s390x: Use TCG_COND_TSTNE for CC_OP_{TM,ICM}, Richard Henderson, 2024/02/04
- [PULL 16/39] tcg: Add TCGConst argument to tcg_target_const_match, Richard Henderson, 2024/02/04
- [PULL 17/39] tcg/aarch64: Support TCG_COND_TST{EQ,NE}, Richard Henderson, 2024/02/04
- [PULL 18/39] tcg/aarch64: Massage tcg_out_brcond(), Richard Henderson, 2024/02/04
- [PULL 19/39] tcg/aarch64: Generate TBZ, TBNZ, Richard Henderson, 2024/02/04