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:
Richard Henderson 2019-01-05 06:51:53 -05:00 committed by Lioncash
parent c3aa567b03
commit 19bde1a9cf
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -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;
} }