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:
Richard Henderson 2021-08-24 10:57:56 -07:00
parent 8d57bf1e82
commit 6b99d5bf38

View file

@ -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)