mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-07-07 14:00:40 +00:00
tcg: Add preferred_reg argument to tcg_reg_alloc_do_movi
Pass this through to temp_sync. Backports commit ba87719cd267e6f07b17f6cda08246bf483146d4 from qemu
This commit is contained in:
parent
c3aa567b03
commit
19bde1a9cf
|
@ -2613,7 +2613,8 @@ static void tcg_reg_alloc_bb_end(TCGContext *s, TCGRegSet allocated_regs)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tcg_reg_alloc_do_movi(TCGContext *s, TCGTemp *ots,
|
static void tcg_reg_alloc_do_movi(TCGContext *s, TCGTemp *ots,
|
||||||
tcg_target_ulong val, TCGLifeData arg_life)
|
tcg_target_ulong val, TCGLifeData arg_life,
|
||||||
|
TCGRegSet preferred_regs)
|
||||||
{
|
{
|
||||||
if (ots->fixed_reg) {
|
if (ots->fixed_reg) {
|
||||||
/* For fixed registers, we do not do any constant propagation. */
|
/* For fixed registers, we do not do any constant propagation. */
|
||||||
|
@ -2629,7 +2630,7 @@ static void tcg_reg_alloc_do_movi(TCGContext *s, TCGTemp *ots,
|
||||||
ots->val = val;
|
ots->val = val;
|
||||||
ots->mem_coherent = 0;
|
ots->mem_coherent = 0;
|
||||||
if (NEED_SYNC_ARG(0)) {
|
if (NEED_SYNC_ARG(0)) {
|
||||||
temp_sync(s, ots, s->reserved_regs, 0, IS_DEAD_ARG(0));
|
temp_sync(s, ots, s->reserved_regs, preferred_regs, IS_DEAD_ARG(0));
|
||||||
} else if (IS_DEAD_ARG(0)) {
|
} else if (IS_DEAD_ARG(0)) {
|
||||||
temp_dead(s, ots);
|
temp_dead(s, ots);
|
||||||
}
|
}
|
||||||
|
@ -2640,7 +2641,7 @@ static void tcg_reg_alloc_movi(TCGContext *s, const TCGOp *op)
|
||||||
TCGTemp *ots = arg_temp(op->args[0]);
|
TCGTemp *ots = arg_temp(op->args[0]);
|
||||||
tcg_target_ulong val = op->args[1];
|
tcg_target_ulong val = op->args[1];
|
||||||
|
|
||||||
tcg_reg_alloc_do_movi(s, ots, val, op->life);
|
tcg_reg_alloc_do_movi(s, ots, val, op->life, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tcg_reg_alloc_mov(TCGContext *s, const TCGOp *op)
|
static void tcg_reg_alloc_mov(TCGContext *s, const TCGOp *op)
|
||||||
|
@ -2664,7 +2665,7 @@ static void tcg_reg_alloc_mov(TCGContext *s, const TCGOp *op)
|
||||||
if (IS_DEAD_ARG(1)) {
|
if (IS_DEAD_ARG(1)) {
|
||||||
temp_dead(s, ts);
|
temp_dead(s, ts);
|
||||||
}
|
}
|
||||||
tcg_reg_alloc_do_movi(s, ots, val, arg_life);
|
tcg_reg_alloc_do_movi(s, ots, val, arg_life, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue