mirror of https://github.com/xemu-project/xemu.git
target/ppc: Use tcg_constant_tl() instead of tcg_gen_movi_tl()
Directly use tcg_constant_tl() for constant integer, this save a call to tcg_gen_movi_tl() and a temp register. Inspired-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20241004202621.4321-4-philmd@linaro.org>
This commit is contained in:
parent
96ce24da68
commit
cebf9b0da2
|
@ -1588,16 +1588,13 @@ static opc_handler_t invalid_handler = {
|
|||
static inline void gen_op_cmp(TCGv arg0, TCGv arg1, int s, int crf)
|
||||
{
|
||||
TCGv t0 = tcg_temp_new();
|
||||
TCGv t1 = tcg_temp_new();
|
||||
TCGv_i32 t = tcg_temp_new_i32();
|
||||
|
||||
tcg_gen_movi_tl(t0, CRF_EQ);
|
||||
tcg_gen_movi_tl(t1, CRF_LT);
|
||||
tcg_gen_movcond_tl((s ? TCG_COND_LT : TCG_COND_LTU),
|
||||
t0, arg0, arg1, t1, t0);
|
||||
tcg_gen_movi_tl(t1, CRF_GT);
|
||||
t0, arg0, arg1,
|
||||
tcg_constant_tl(CRF_LT), tcg_constant_tl(CRF_EQ));
|
||||
tcg_gen_movcond_tl((s ? TCG_COND_GT : TCG_COND_GTU),
|
||||
t0, arg0, arg1, t1, t0);
|
||||
t0, arg0, arg1, tcg_constant_tl(CRF_GT), t0);
|
||||
|
||||
tcg_gen_trunc_tl_i32(t, t0);
|
||||
tcg_gen_trunc_tl_i32(cpu_crf[crf], cpu_so);
|
||||
|
@ -2974,8 +2971,8 @@ static void gen_fetch_inc_conditional(DisasContext *ctx, MemOp memop,
|
|||
tcg_gen_qemu_st_tl(u, EA, ctx->mem_idx, memop);
|
||||
|
||||
/* RT = (t != t2 ? t : u = 1<<(s*8-1)) */
|
||||
tcg_gen_movi_tl(u, 1 << (memop_size(memop) * 8 - 1));
|
||||
tcg_gen_movcond_tl(cond, cpu_gpr[rD(ctx->opcode)], t, t2, t, u);
|
||||
tcg_gen_movcond_tl(cond, cpu_gpr[rD(ctx->opcode)], t, t2, t,
|
||||
tcg_constant_tl(1 << (memop_size(memop) * 8 - 1)));
|
||||
}
|
||||
|
||||
static void gen_ld_atomic(DisasContext *ctx, MemOp memop)
|
||||
|
|
Loading…
Reference in New Issue