mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
tcg/optimize: Return true from tcg_opt_gen_{mov,movi}
This will allow callers to tail call to these functions and return true indicating processing complete. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Luis Pires <luis.pires@eldorado.org.br> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
8d57bf1e82
commit
6b99d5bf38
1 changed files with 5 additions and 4 deletions
|
@ -180,7 +180,7 @@ static bool args_are_copies(TCGArg arg1, TCGArg arg2)
|
||||||
return ts_are_copies(arg_temp(arg1), arg_temp(arg2));
|
return ts_are_copies(arg_temp(arg1), arg_temp(arg2));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tcg_opt_gen_mov(OptContext *ctx, TCGOp *op, TCGArg dst, TCGArg src)
|
static bool tcg_opt_gen_mov(OptContext *ctx, TCGOp *op, TCGArg dst, TCGArg src)
|
||||||
{
|
{
|
||||||
TCGTemp *dst_ts = arg_temp(dst);
|
TCGTemp *dst_ts = arg_temp(dst);
|
||||||
TCGTemp *src_ts = arg_temp(src);
|
TCGTemp *src_ts = arg_temp(src);
|
||||||
|
@ -192,7 +192,7 @@ static void tcg_opt_gen_mov(OptContext *ctx, TCGOp *op, TCGArg dst, TCGArg src)
|
||||||
|
|
||||||
if (ts_are_copies(dst_ts, src_ts)) {
|
if (ts_are_copies(dst_ts, src_ts)) {
|
||||||
tcg_op_remove(ctx->tcg, op);
|
tcg_op_remove(ctx->tcg, op);
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
reset_ts(dst_ts);
|
reset_ts(dst_ts);
|
||||||
|
@ -228,9 +228,10 @@ static void tcg_opt_gen_mov(OptContext *ctx, TCGOp *op, TCGArg dst, TCGArg src)
|
||||||
di->is_const = si->is_const;
|
di->is_const = si->is_const;
|
||||||
di->val = si->val;
|
di->val = si->val;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tcg_opt_gen_movi(OptContext *ctx, TCGOp *op,
|
static bool tcg_opt_gen_movi(OptContext *ctx, TCGOp *op,
|
||||||
TCGArg dst, uint64_t val)
|
TCGArg dst, uint64_t val)
|
||||||
{
|
{
|
||||||
const TCGOpDef *def = &tcg_op_defs[op->opc];
|
const TCGOpDef *def = &tcg_op_defs[op->opc];
|
||||||
|
@ -248,7 +249,7 @@ static void tcg_opt_gen_movi(OptContext *ctx, TCGOp *op,
|
||||||
/* Convert movi to mov with constant temp. */
|
/* Convert movi to mov with constant temp. */
|
||||||
tv = tcg_constant_internal(type, val);
|
tv = tcg_constant_internal(type, val);
|
||||||
init_ts_info(ctx, tv);
|
init_ts_info(ctx, tv);
|
||||||
tcg_opt_gen_mov(ctx, op, dst, temp_arg(tv));
|
return tcg_opt_gen_mov(ctx, op, dst, temp_arg(tv));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t do_constant_folding_2(TCGOpcode op, uint64_t x, uint64_t y)
|
static uint64_t do_constant_folding_2(TCGOpcode op, uint64_t x, uint64_t y)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue