[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 68/76] target/sparc: Drop free_compare
From: |
Richard Henderson |
Subject: |
[PATCH v2 68/76] target/sparc: Drop free_compare |
Date: |
Sun, 26 Feb 2023 19:24:57 -1000 |
Translators are no longer required to free tcg temporaries.
Remove the g1 and g2 members of DisasCompare, as they were
used to track which temps needed to be freed.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/sparc/translate.c | 32 --------------------------------
1 file changed, 32 deletions(-)
diff --git a/target/sparc/translate.c b/target/sparc/translate.c
index 560fb32e28..f32f237051 100644
--- a/target/sparc/translate.c
+++ b/target/sparc/translate.c
@@ -93,7 +93,6 @@ typedef struct DisasContext {
typedef struct {
TCGCond cond;
bool is_bool;
- bool g1, g2;
TCGv c1, c2;
} DisasCompare;
@@ -1066,16 +1065,6 @@ static inline void gen_op_next_insn(void)
tcg_gen_addi_tl(cpu_npc, cpu_npc, 4);
}
-static void free_compare(DisasCompare *cmp)
-{
- if (!cmp->g1) {
- tcg_temp_free(cmp->c1);
- }
- if (!cmp->g2) {
- tcg_temp_free(cmp->c2);
- }
-}
-
static void gen_compare(DisasCompare *cmp, bool xcc, unsigned int cond,
DisasContext *dc)
{
@@ -1135,17 +1124,14 @@ static void gen_compare(DisasCompare *cmp, bool xcc,
unsigned int cond,
cmp->cond = logic_cond[cond];
do_compare_dst_0:
cmp->is_bool = false;
- cmp->g2 = false;
cmp->c2 = tcg_const_tl(0);
#ifdef TARGET_SPARC64
if (!xcc) {
- cmp->g1 = false;
cmp->c1 = tcg_temp_new();
tcg_gen_ext32s_tl(cmp->c1, cpu_cc_dst);
break;
}
#endif
- cmp->g1 = true;
cmp->c1 = cpu_cc_dst;
break;
@@ -1167,7 +1153,6 @@ static void gen_compare(DisasCompare *cmp, bool xcc,
unsigned int cond,
if (!xcc) {
/* Note that sign-extension works for unsigned compares as
long as both operands are sign-extended. */
- cmp->g1 = cmp->g2 = false;
cmp->c1 = tcg_temp_new();
cmp->c2 = tcg_temp_new();
tcg_gen_ext32s_tl(cmp->c1, cpu_cc_src);
@@ -1175,7 +1160,6 @@ static void gen_compare(DisasCompare *cmp, bool xcc,
unsigned int cond,
break;
}
#endif
- cmp->g1 = cmp->g2 = true;
cmp->c1 = cpu_cc_src;
cmp->c2 = cpu_cc_src2;
break;
@@ -1192,7 +1176,6 @@ static void gen_compare(DisasCompare *cmp, bool xcc,
unsigned int cond,
/* We're going to generate a boolean result. */
cmp->cond = TCG_COND_NE;
cmp->is_bool = true;
- cmp->g1 = cmp->g2 = false;
cmp->c1 = r_dst = tcg_temp_new();
cmp->c2 = tcg_const_tl(0);
@@ -1258,7 +1241,6 @@ static void gen_fcompare(DisasCompare *cmp, unsigned int
cc, unsigned int cond)
/* For now we still generate a straight boolean result. */
cmp->cond = TCG_COND_NE;
cmp->is_bool = true;
- cmp->g1 = cmp->g2 = false;
cmp->c1 = r_dst = tcg_temp_new();
cmp->c2 = tcg_const_tl(0);
@@ -1342,8 +1324,6 @@ static void gen_cond(TCGv r_dst, unsigned int cc,
unsigned int cond,
} else {
tcg_gen_setcond_tl(cmp.cond, r_dst, cmp.c1, cmp.c2);
}
-
- free_compare(&cmp);
}
static void gen_fcond(TCGv r_dst, unsigned int cc, unsigned int cond)
@@ -1357,8 +1337,6 @@ static void gen_fcond(TCGv r_dst, unsigned int cc,
unsigned int cond)
} else {
tcg_gen_setcond_tl(cmp.cond, r_dst, cmp.c1, cmp.c2);
}
-
- free_compare(&cmp);
}
#ifdef TARGET_SPARC64
@@ -1378,8 +1356,6 @@ static void gen_compare_reg(DisasCompare *cmp, int cond,
TCGv r_src)
{
cmp->cond = tcg_invert_cond(gen_tcg_cond_reg[cond]);
cmp->is_bool = false;
- cmp->g1 = true;
- cmp->g2 = false;
cmp->c1 = r_src;
cmp->c2 = tcg_const_tl(0);
}
@@ -1391,8 +1367,6 @@ static inline void gen_cond_reg(TCGv r_dst, int cond,
TCGv r_src)
/* The interface is to return a boolean in r_dst. */
tcg_gen_setcond_tl(cmp.cond, r_dst, cmp.c1, cmp.c2);
-
- free_compare(&cmp);
}
#endif
@@ -3268,7 +3242,6 @@ static void disas_sparc_insn(DisasContext * dc, unsigned
int insn)
l1 = gen_new_label();
tcg_gen_brcond_tl(tcg_invert_cond(cmp.cond),
cmp.c1, cmp.c2, l1);
- free_compare(&cmp);
}
mask = ((dc->def->features & CPU_FEATURE_HYPV) &&
supervisor(dc)
@@ -3827,7 +3800,6 @@ static void disas_sparc_insn(DisasContext * dc, unsigned
int insn)
cpu_src1 = get_src1(dc, insn); \
gen_compare_reg(&cmp, cond, cpu_src1); \
gen_fmov##sz(dc, &cmp, rd, rs2); \
- free_compare(&cmp); \
} while (0)
if ((xop & 0x11f) == 0x005) { /* V9 fmovsr */
@@ -3851,7 +3823,6 @@ static void disas_sparc_insn(DisasContext * dc, unsigned
int insn)
cond = GET_FIELD_SP(insn, 14, 17); \
gen_fcompare(&cmp, fcc, cond); \
gen_fmov##sz(dc, &cmp, rd, rs2); \
- free_compare(&cmp); \
} while (0)
case 0x001: /* V9 fmovscc %fcc0 */
@@ -3901,7 +3872,6 @@ static void disas_sparc_insn(DisasContext * dc, unsigned
int insn)
cond = GET_FIELD_SP(insn, 14, 17); \
gen_compare(&cmp, xcc, cond, dc); \
gen_fmov##sz(dc, &cmp, rd, rs2); \
- free_compare(&cmp); \
} while (0)
case 0x101: /* V9 fmovscc %icc */
@@ -4713,7 +4683,6 @@ static void disas_sparc_insn(DisasContext * dc, unsigned
int insn)
tcg_gen_movcond_tl(cmp.cond, dst,
cmp.c1, cmp.c2,
cpu_src2, dst);
- free_compare(&cmp);
gen_store_gpr(dc, rd, dst);
break;
}
@@ -4745,7 +4714,6 @@ static void disas_sparc_insn(DisasContext * dc, unsigned
int insn)
tcg_gen_movcond_tl(cmp.cond, dst,
cmp.c1, cmp.c2,
cpu_src2, dst);
- free_compare(&cmp);
gen_store_gpr(dc, rd, dst);
break;
}
--
2.34.1
- [PATCH v2 54/76] target/rx: Drop tcg_temp_free, (continued)
- [PATCH v2 54/76] target/rx: Drop tcg_temp_free, Richard Henderson, 2023/02/27
- [PATCH v2 55/76] target/s390x: Use tcg_constant_* in local contexts, Richard Henderson, 2023/02/27
- [PATCH v2 57/76] target/s390x: Use tcg_constant_i32 for fpinst_extract_m34, Richard Henderson, 2023/02/27
- [PATCH v2 59/76] target/s390x: Drop free_compare, Richard Henderson, 2023/02/27
- [PATCH v2 58/76] target/s390x: Use tcg_constant_* in translate_vx.c.inc, Richard Henderson, 2023/02/27
- [PATCH v2 60/76] target/s390x: Drop tcg_temp_free from translate_vx.c.inc, Richard Henderson, 2023/02/27
- [PATCH v2 61/76] target/s390x: Drop tcg_temp_free from translate.c, Richard Henderson, 2023/02/27
- [PATCH v2 62/76] target/s390x: Remove assert vs g_in2, Richard Henderson, 2023/02/27
- [PATCH v2 64/76] target/sh4: Drop tcg_temp_free, Richard Henderson, 2023/02/27
- [PATCH v2 65/76] target/sparc: Drop get_temp_tl, Richard Henderson, 2023/02/27
- [PATCH v2 68/76] target/sparc: Drop free_compare,
Richard Henderson <=
- [PATCH v2 69/76] target/sparc: Drop tcg_temp_free, Richard Henderson, 2023/02/27
- [PATCH v2 63/76] target/s390x: Remove g_out, g_out2, g_in1, g_in2 from DisasContext, Richard Henderson, 2023/02/27
- [PATCH v2 71/76] target/xtensa: Drop reset_sar_tracker, Richard Henderson, 2023/02/27
- [PATCH v2 73/76] include/exec/gen-icount: Drop tcg_temp_free in gen_tb_start, Richard Henderson, 2023/02/27
- [PATCH v2 75/76] tcg: Create tcg/tcg-temp-internal.h, Richard Henderson, 2023/02/27
- [PATCH v2 66/76] target/sparc: Drop get_temp_i32, Richard Henderson, 2023/02/27
- [PATCH v2 67/76] target/sparc: Remove egress label in disas_sparc_context, Richard Henderson, 2023/02/27
- [PATCH v2 70/76] target/tricore: Drop tcg_temp_free, Richard Henderson, 2023/02/27
- [PATCH v2 72/76] target/xtensa: Drop tcg_temp_free, Richard Henderson, 2023/02/27
- [PATCH v2 74/76] tracing: remove transform.py, Richard Henderson, 2023/02/27