Hexagon (target/hexagon) Add DisasContext arg to gen_log_reg_write
Add DisasContext arg to gen_log_reg_write_pair also Signed-off-by: Taylor Simpson <tsimpson@quicinc.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20230427230012.3800327-3-tsimpson@quicinc.com>
This commit is contained in:
parent
63efb6ab56
commit
07540a28c7
@ -87,7 +87,7 @@ tcg_funcs_generated.c.inc
|
|||||||
TCGv RsV = hex_gpr[insn->regno[1]];
|
TCGv RsV = hex_gpr[insn->regno[1]];
|
||||||
TCGv RtV = hex_gpr[insn->regno[2]];
|
TCGv RtV = hex_gpr[insn->regno[2]];
|
||||||
gen_helper_A2_add(RdV, cpu_env, RsV, RtV);
|
gen_helper_A2_add(RdV, cpu_env, RsV, RtV);
|
||||||
gen_log_reg_write(RdN, RdV);
|
gen_log_reg_write(ctx, RdN, RdV);
|
||||||
}
|
}
|
||||||
|
|
||||||
helper_funcs_generated.c.inc
|
helper_funcs_generated.c.inc
|
||||||
|
@ -515,7 +515,7 @@
|
|||||||
do { \
|
do { \
|
||||||
TCGv_i64 RddV = get_result_gpr_pair(ctx, HEX_REG_FP); \
|
TCGv_i64 RddV = get_result_gpr_pair(ctx, HEX_REG_FP); \
|
||||||
gen_return(ctx, RddV, hex_gpr[HEX_REG_FP]); \
|
gen_return(ctx, RddV, hex_gpr[HEX_REG_FP]); \
|
||||||
gen_log_reg_write_pair(HEX_REG_FP, RddV); \
|
gen_log_reg_write_pair(ctx, HEX_REG_FP, RddV); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -387,7 +387,8 @@ def gen_helper_call_imm(f, immlett):
|
|||||||
|
|
||||||
|
|
||||||
def genptr_dst_write_pair(f, tag, regtype, regid):
|
def genptr_dst_write_pair(f, tag, regtype, regid):
|
||||||
f.write(f" gen_log_reg_write_pair({regtype}{regid}N, " f"{regtype}{regid}V);\n")
|
f.write(f" gen_log_reg_write_pair(ctx, {regtype}{regid}N, "
|
||||||
|
f"{regtype}{regid}V);\n")
|
||||||
|
|
||||||
|
|
||||||
def genptr_dst_write(f, tag, regtype, regid):
|
def genptr_dst_write(f, tag, regtype, regid):
|
||||||
@ -396,7 +397,8 @@ def genptr_dst_write(f, tag, regtype, regid):
|
|||||||
genptr_dst_write_pair(f, tag, regtype, regid)
|
genptr_dst_write_pair(f, tag, regtype, regid)
|
||||||
elif regid in {"d", "e", "x", "y"}:
|
elif regid in {"d", "e", "x", "y"}:
|
||||||
f.write(
|
f.write(
|
||||||
f" gen_log_reg_write({regtype}{regid}N, " f"{regtype}{regid}V);\n"
|
f" gen_log_reg_write(ctx, {regtype}{regid}N, "
|
||||||
|
f"{regtype}{regid}V);\n"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
print("Bad register parse: ", regtype, regid)
|
print("Bad register parse: ", regtype, regid)
|
||||||
@ -481,7 +483,7 @@ def genptr_dst_write_opn(f, regtype, regid, tag):
|
|||||||
## TCGv RsV = hex_gpr[insn->regno[1]];
|
## TCGv RsV = hex_gpr[insn->regno[1]];
|
||||||
## TCGv RtV = hex_gpr[insn->regno[2]];
|
## TCGv RtV = hex_gpr[insn->regno[2]];
|
||||||
## <GEN>
|
## <GEN>
|
||||||
## gen_log_reg_write(RdN, RdV);
|
## gen_log_reg_write(ctx, RdN, RdV);
|
||||||
## }
|
## }
|
||||||
##
|
##
|
||||||
## where <GEN> depends on hex_common.skip_qemu_helper(tag)
|
## where <GEN> depends on hex_common.skip_qemu_helper(tag)
|
||||||
|
@ -81,7 +81,7 @@ static TCGv_i64 get_result_gpr_pair(DisasContext *ctx, int rnum)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void gen_log_reg_write(int rnum, TCGv val)
|
void gen_log_reg_write(DisasContext *ctx, int rnum, TCGv val)
|
||||||
{
|
{
|
||||||
const target_ulong reg_mask = reg_immut_masks[rnum];
|
const target_ulong reg_mask = reg_immut_masks[rnum];
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ void gen_log_reg_write(int rnum, TCGv val)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gen_log_reg_write_pair(int rnum, TCGv_i64 val)
|
static void gen_log_reg_write_pair(DisasContext *ctx, int rnum, TCGv_i64 val)
|
||||||
{
|
{
|
||||||
const target_ulong reg_mask_low = reg_immut_masks[rnum];
|
const target_ulong reg_mask_low = reg_immut_masks[rnum];
|
||||||
const target_ulong reg_mask_high = reg_immut_masks[rnum + 1];
|
const target_ulong reg_mask_high = reg_immut_masks[rnum + 1];
|
||||||
@ -231,7 +231,7 @@ static inline void gen_write_ctrl_reg(DisasContext *ctx, int reg_num,
|
|||||||
if (reg_num == HEX_REG_P3_0_ALIASED) {
|
if (reg_num == HEX_REG_P3_0_ALIASED) {
|
||||||
gen_write_p3_0(ctx, val);
|
gen_write_p3_0(ctx, val);
|
||||||
} else {
|
} else {
|
||||||
gen_log_reg_write(reg_num, val);
|
gen_log_reg_write(ctx, reg_num, val);
|
||||||
if (reg_num == HEX_REG_QEMU_PKT_CNT) {
|
if (reg_num == HEX_REG_QEMU_PKT_CNT) {
|
||||||
ctx->num_packets = 0;
|
ctx->num_packets = 0;
|
||||||
}
|
}
|
||||||
@ -255,7 +255,7 @@ static inline void gen_write_ctrl_reg_pair(DisasContext *ctx, int reg_num,
|
|||||||
tcg_gen_extrh_i64_i32(val32, val);
|
tcg_gen_extrh_i64_i32(val32, val);
|
||||||
tcg_gen_mov_tl(result, val32);
|
tcg_gen_mov_tl(result, val32);
|
||||||
} else {
|
} else {
|
||||||
gen_log_reg_write_pair(reg_num, val);
|
gen_log_reg_write_pair(ctx, reg_num, val);
|
||||||
if (reg_num == HEX_REG_QEMU_PKT_CNT) {
|
if (reg_num == HEX_REG_QEMU_PKT_CNT) {
|
||||||
ctx->num_packets = 0;
|
ctx->num_packets = 0;
|
||||||
ctx->num_insns = 0;
|
ctx->num_insns = 0;
|
||||||
@ -719,7 +719,7 @@ static void gen_cond_return_subinsn(DisasContext *ctx, TCGCond cond, TCGv pred)
|
|||||||
{
|
{
|
||||||
TCGv_i64 RddV = get_result_gpr_pair(ctx, HEX_REG_FP);
|
TCGv_i64 RddV = get_result_gpr_pair(ctx, HEX_REG_FP);
|
||||||
gen_cond_return(ctx, RddV, hex_gpr[HEX_REG_FP], pred, cond);
|
gen_cond_return(ctx, RddV, hex_gpr[HEX_REG_FP], pred, cond);
|
||||||
gen_log_reg_write_pair(HEX_REG_FP, RddV);
|
gen_log_reg_write_pair(ctx, HEX_REG_FP, RddV);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gen_endloop0(DisasContext *ctx)
|
static void gen_endloop0(DisasContext *ctx)
|
||||||
|
@ -35,7 +35,7 @@ void gen_store4i(TCGv_env cpu_env, TCGv vaddr, int32_t src, uint32_t slot);
|
|||||||
void gen_store8i(TCGv_env cpu_env, TCGv vaddr, int64_t src, uint32_t slot);
|
void gen_store8i(TCGv_env cpu_env, TCGv vaddr, int64_t src, uint32_t slot);
|
||||||
TCGv gen_read_reg(TCGv result, int num);
|
TCGv gen_read_reg(TCGv result, int num);
|
||||||
TCGv gen_read_preg(TCGv pred, uint8_t num);
|
TCGv gen_read_preg(TCGv pred, uint8_t num);
|
||||||
void gen_log_reg_write(int rnum, TCGv val);
|
void gen_log_reg_write(DisasContext *ctx, int rnum, TCGv val);
|
||||||
void gen_log_pred_write(DisasContext *ctx, int pnum, TCGv val);
|
void gen_log_pred_write(DisasContext *ctx, int pnum, TCGv val);
|
||||||
void gen_set_usr_field(DisasContext *ctx, int field, TCGv val);
|
void gen_set_usr_field(DisasContext *ctx, int field, TCGv val);
|
||||||
void gen_set_usr_fieldi(DisasContext *ctx, int field, int x);
|
void gen_set_usr_fieldi(DisasContext *ctx, int field, int x);
|
||||||
|
@ -1318,7 +1318,7 @@ void gen_write_reg(Context *c, YYLTYPE *locp, HexValue *reg, HexValue *value)
|
|||||||
value_m = rvalue_materialize(c, locp, &value_m);
|
value_m = rvalue_materialize(c, locp, &value_m);
|
||||||
OUT(c,
|
OUT(c,
|
||||||
locp,
|
locp,
|
||||||
"gen_log_reg_write(", ®->reg.id, ", ",
|
"gen_log_reg_write(ctx, ", ®->reg.id, ", ",
|
||||||
&value_m, ");\n");
|
&value_m, ");\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user