mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-22 01:21:53 -06:00
target/hexagon: Drop tcg_temp_free from gen_tcg_funcs.py
Translators are no longer required to free tcg temporaries. Reviewed-by: Taylor Simpson <tsimpson@quicinc.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
09538b08c4
commit
6bf4bbc1c8
1 changed files with 1 additions and 78 deletions
|
@ -26,10 +26,7 @@ import hex_common
|
||||||
## Helpers for gen_tcg_func
|
## Helpers for gen_tcg_func
|
||||||
##
|
##
|
||||||
def gen_decl_ea_tcg(f, tag):
|
def gen_decl_ea_tcg(f, tag):
|
||||||
f.write(" TCGv EA = tcg_temp_new();\n")
|
f.write(" TCGv EA G_GNUC_UNUSED = tcg_temp_new();\n")
|
||||||
|
|
||||||
def gen_free_ea_tcg(f):
|
|
||||||
f.write(" tcg_temp_free(EA);\n")
|
|
||||||
|
|
||||||
def genptr_decl_pair_writable(f, tag, regtype, regid, regno):
|
def genptr_decl_pair_writable(f, tag, regtype, regid, regno):
|
||||||
regN="%s%sN" % (regtype,regid)
|
regN="%s%sN" % (regtype,regid)
|
||||||
|
@ -269,73 +266,6 @@ def genptr_decl_imm(f,immlett):
|
||||||
f.write(" int %s = insn->immed[%d];\n" % \
|
f.write(" int %s = insn->immed[%d];\n" % \
|
||||||
(hex_common.imm_name(immlett), i))
|
(hex_common.imm_name(immlett), i))
|
||||||
|
|
||||||
def genptr_free(f, tag, regtype, regid, regno):
|
|
||||||
if (regtype == "R"):
|
|
||||||
if (regid in {"dd", "ss", "tt", "xx", "yy"}):
|
|
||||||
f.write(" tcg_temp_free_i64(%s%sV);\n" % (regtype, regid))
|
|
||||||
elif (regid in {"d", "e", "x", "y"}):
|
|
||||||
f.write(" tcg_temp_free(%s%sV);\n" % (regtype, regid))
|
|
||||||
elif (regid not in {"s", "t", "u", "v"}):
|
|
||||||
print("Bad register parse: ",regtype,regid)
|
|
||||||
elif (regtype == "P"):
|
|
||||||
if (regid in {"d", "e", "x"}):
|
|
||||||
f.write(" tcg_temp_free(%s%sV);\n" % (regtype, regid))
|
|
||||||
elif (regid not in {"s", "t", "u", "v"}):
|
|
||||||
print("Bad register parse: ",regtype,regid)
|
|
||||||
elif (regtype == "C"):
|
|
||||||
if (regid in {"dd", "ss"}):
|
|
||||||
f.write(" tcg_temp_free_i64(%s%sV);\n" % (regtype, regid))
|
|
||||||
elif (regid in {"d", "s"}):
|
|
||||||
f.write(" tcg_temp_free(%s%sV);\n" % (regtype, regid))
|
|
||||||
else:
|
|
||||||
print("Bad register parse: ",regtype,regid)
|
|
||||||
elif (regtype == "M"):
|
|
||||||
if (regid != "u"):
|
|
||||||
print("Bad register parse: ", regtype, regid)
|
|
||||||
elif (regtype == "V"):
|
|
||||||
if (regid in {"dd", "uu", "vv", "xx", \
|
|
||||||
"d", "s", "u", "v", "w", "x", "y"}):
|
|
||||||
if (not hex_common.skip_qemu_helper(tag)):
|
|
||||||
f.write(" tcg_temp_free_ptr(%s%sV);\n" % \
|
|
||||||
(regtype, regid))
|
|
||||||
else:
|
|
||||||
print("Bad register parse: ", regtype, regid)
|
|
||||||
elif (regtype == "Q"):
|
|
||||||
if (regid in {"d", "e", "s", "t", "u", "v", "x"}):
|
|
||||||
if (not hex_common.skip_qemu_helper(tag)):
|
|
||||||
f.write(" tcg_temp_free_ptr(%s%sV);\n" % \
|
|
||||||
(regtype, regid))
|
|
||||||
else:
|
|
||||||
print("Bad register parse: ", regtype, regid)
|
|
||||||
else:
|
|
||||||
print("Bad register parse: ", regtype, regid)
|
|
||||||
|
|
||||||
def genptr_free_new(f, tag, regtype, regid, regno):
|
|
||||||
if (regtype == "N"):
|
|
||||||
if (regid not in {"s", "t"}):
|
|
||||||
print("Bad register parse: ", regtype, regid)
|
|
||||||
elif (regtype == "P"):
|
|
||||||
if (regid not in {"t", "u", "v"}):
|
|
||||||
print("Bad register parse: ", regtype, regid)
|
|
||||||
elif (regtype == "O"):
|
|
||||||
if (regid != "s"):
|
|
||||||
print("Bad register parse: ", regtype, regid)
|
|
||||||
else:
|
|
||||||
print("Bad register parse: ", regtype, regid)
|
|
||||||
|
|
||||||
def genptr_free_opn(f,regtype,regid,i,tag):
|
|
||||||
if (hex_common.is_pair(regid)):
|
|
||||||
genptr_free(f, tag, regtype, regid, i)
|
|
||||||
elif (hex_common.is_single(regid)):
|
|
||||||
if hex_common.is_old_val(regtype, regid, tag):
|
|
||||||
genptr_free(f, tag, regtype, regid, i)
|
|
||||||
elif hex_common.is_new_val(regtype, regid, tag):
|
|
||||||
genptr_free_new(f, tag, regtype, regid, i)
|
|
||||||
else:
|
|
||||||
print("Bad register parse: ",regtype,regid,toss,numregs)
|
|
||||||
else:
|
|
||||||
print("Bad register parse: ",regtype,regid,toss,numregs)
|
|
||||||
|
|
||||||
def genptr_src_read(f, tag, regtype, regid):
|
def genptr_src_read(f, tag, regtype, regid):
|
||||||
if (regtype == "R"):
|
if (regtype == "R"):
|
||||||
if (regid in {"ss", "tt", "xx", "yy"}):
|
if (regid in {"ss", "tt", "xx", "yy"}):
|
||||||
|
@ -578,7 +508,6 @@ def genptr_dst_write_opn(f,regtype, regid, tag):
|
||||||
## <GEN>
|
## <GEN>
|
||||||
## gen_log_reg_write(RdN, RdV);
|
## gen_log_reg_write(RdN, RdV);
|
||||||
## ctx_log_reg_write(ctx, RdN);
|
## ctx_log_reg_write(ctx, RdN);
|
||||||
## tcg_temp_free(RdV);
|
|
||||||
## }
|
## }
|
||||||
##
|
##
|
||||||
## where <GEN> depends on hex_common.skip_qemu_helper(tag)
|
## where <GEN> depends on hex_common.skip_qemu_helper(tag)
|
||||||
|
@ -692,12 +621,6 @@ def gen_tcg_func(f, tag, regs, imms):
|
||||||
if (hex_common.is_written(regid)):
|
if (hex_common.is_written(regid)):
|
||||||
genptr_dst_write_opn(f,regtype, regid, tag)
|
genptr_dst_write_opn(f,regtype, regid, tag)
|
||||||
|
|
||||||
## Free all the operands (regs and immediates)
|
|
||||||
if hex_common.need_ea(tag): gen_free_ea_tcg(f)
|
|
||||||
for regtype,regid,toss,numregs in regs:
|
|
||||||
genptr_free_opn(f,regtype,regid,i,tag)
|
|
||||||
i += 1
|
|
||||||
|
|
||||||
f.write("}\n\n")
|
f.write("}\n\n")
|
||||||
|
|
||||||
def gen_def_tcg_func(f, tag, tagregs, tagimms):
|
def gen_def_tcg_func(f, tag, tagregs, tagimms):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue