[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 25/31] target/i386: Don't use tcg_temp_local_new
From: |
Richard Henderson |
Subject: |
[PATCH v4 25/31] target/i386: Don't use tcg_temp_local_new |
Date: |
Sun, 26 Feb 2023 19:36:55 -1000 |
Since tcg_temp_new is now identical, use that.
In some cases we can avoid a copy from A0 or T0.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/i386/tcg/translate.c | 27 +++++++++------------------
1 file changed, 9 insertions(+), 18 deletions(-)
diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
index a47d60f057..baf1cfc2bc 100644
--- a/target/i386/tcg/translate.c
+++ b/target/i386/tcg/translate.c
@@ -3426,13 +3426,10 @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
if (mod == 3) {
goto illegal_op;
}
- a0 = tcg_temp_local_new();
- t0 = tcg_temp_local_new();
+ a0 = s->A0;
+ t0 = s->T0;
label1 = gen_new_label();
- tcg_gen_mov_tl(a0, s->A0);
- tcg_gen_mov_tl(t0, s->T0);
-
gen_set_label(label1);
t1 = tcg_temp_new();
t2 = tcg_temp_new();
@@ -3444,9 +3441,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
tcg_gen_brcond_tl(TCG_COND_NE, t0, t2, label1);
tcg_temp_free(t2);
- tcg_temp_free(a0);
tcg_gen_neg_tl(s->T0, t0);
- tcg_temp_free(t0);
} else {
tcg_gen_neg_tl(s->T0, s->T0);
if (mod != 3) {
@@ -6248,13 +6243,13 @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
#endif
{
TCGLabel *label1;
- TCGv t0, t1, t2, a0;
+ TCGv t0, t1, t2;
if (!PE(s) || VM86(s))
goto illegal_op;
- t0 = tcg_temp_local_new();
- t1 = tcg_temp_local_new();
- t2 = tcg_temp_local_new();
+ t0 = tcg_temp_new();
+ t1 = tcg_temp_new();
+ t2 = tcg_temp_new();
ot = MO_16;
modrm = x86_ldub_code(env, s);
reg = (modrm >> 3) & 7;
@@ -6263,11 +6258,8 @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
if (mod != 3) {
gen_lea_modrm(env, s, modrm);
gen_op_ld_v(s, ot, t0, s->A0);
- a0 = tcg_temp_local_new();
- tcg_gen_mov_tl(a0, s->A0);
} else {
gen_op_mov_v_reg(s, ot, t0, rm);
- a0 = NULL;
}
gen_op_mov_v_reg(s, ot, t1, reg);
tcg_gen_andi_tl(s->tmp0, t0, 3);
@@ -6280,8 +6272,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
tcg_gen_movi_tl(t2, CC_Z);
gen_set_label(label1);
if (mod != 3) {
- gen_op_st_v(s, ot, t0, a0);
- tcg_temp_free(a0);
+ gen_op_st_v(s, ot, t0, s->A0);
} else {
gen_op_mov_reg_v(s, ot, rm, t0);
}
@@ -6304,7 +6295,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu)
modrm = x86_ldub_code(env, s);
reg = ((modrm >> 3) & 7) | REX_R(s);
gen_ldst_modrm(env, s, modrm, MO_16, OR_TMP0, 0);
- t0 = tcg_temp_local_new();
+ t0 = tcg_temp_new();
gen_update_cc_op(s);
if (b == 0x102) {
gen_helper_lar(t0, cpu_env, s->T0);
@@ -7052,7 +7043,7 @@ static void i386_tr_init_disas_context(DisasContextBase
*dcbase, CPUState *cpu)
dc->tmp2_i32 = tcg_temp_new_i32();
dc->tmp3_i32 = tcg_temp_new_i32();
dc->tmp4 = tcg_temp_new();
- dc->cc_srcT = tcg_temp_local_new();
+ dc->cc_srcT = tcg_temp_new();
}
static void i386_tr_tb_start(DisasContextBase *db, CPUState *cpu)
--
2.34.1
- Re: [PATCH v4 07/31] tcg: Add liveness_pass_0, (continued)
- [PATCH v4 08/31] tcg: Remove TEMP_NORMAL, Richard Henderson, 2023/02/27
- [PATCH v4 09/31] tcg: Pass TCGTempKind to tcg_temp_new_internal, Richard Henderson, 2023/02/27
- [PATCH v4 10/31] tcg: Use tcg_constant_i32 in tcg_gen_io_start, Richard Henderson, 2023/02/27
- [PATCH v4 11/31] tcg: Add tcg_gen_movi_ptr, Richard Henderson, 2023/02/27
- [PATCH v4 15/31] accel/tcg/plugin: Use tcg_temp_ebb_*, Richard Henderson, 2023/02/27
- [PATCH v4 21/31] target/cris: Don't use tcg_temp_local_new, Richard Henderson, 2023/02/27
- [PATCH v4 22/31] target/hexagon: Don't use tcg_temp_local_new_*, Richard Henderson, 2023/02/27
- [PATCH v4 12/31] tcg: Add tcg_temp_ebb_new_{i32,i64,ptr}, Richard Henderson, 2023/02/27
- [PATCH v4 25/31] target/i386: Don't use tcg_temp_local_new,
Richard Henderson <=
- [PATCH v4 16/31] accel/tcg/plugin: Tidy plugin_gen_disable_mem_helpers, Richard Henderson, 2023/02/27
- [PATCH v4 13/31] tcg: Use tcg_temp_ebb_new_* in tcg/, Richard Henderson, 2023/02/27
- [PATCH v4 17/31] tcg: Don't re-use TEMP_TB temporaries, Richard Henderson, 2023/02/27
- [PATCH v4 18/31] tcg: Change default temp lifetime to TEMP_TB, Richard Henderson, 2023/02/27
- [PATCH v4 28/31] target/xtensa: Don't use tcg_temp_local_new_*, Richard Henderson, 2023/02/27
- [PATCH v4 19/31] target/arm: Drop copies in gen_sve_{ldr,str}, Richard Henderson, 2023/02/27
- [PATCH v4 20/31] target/arm: Don't use tcg_temp_local_new_*, Richard Henderson, 2023/02/27
- [PATCH v4 31/31] tcg: Update docs/devel/tcg-ops.rst for temporary changes, Richard Henderson, 2023/02/27
- [PATCH v4 27/31] target/ppc: Don't use tcg_temp_local_new, Richard Henderson, 2023/02/27