"And support mov_i64 on 32-bit host"? On 3/11/21 3:39 PM, Richard Henderson wrote: > Signed-off-by: Richard Henderson <[email protected]> > --- > tcg/tci/tcg-target.c.inc | 50 ++++++++++++++++++++++++++++------------ > 1 file changed, 35 insertions(+), 15 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <[email protected]> > static void tcg_out_movi(TCGContext *s, TCGType type, > - TCGReg t0, tcg_target_long arg) > + TCGReg ret, tcg_target_long arg) > { > - uint8_t *old_code_ptr = s->code_ptr; > - uint32_t arg32 = arg; > - if (type == TCG_TYPE_I32 || arg == arg32) { > - tcg_out_op_t(s, INDEX_op_tci_movi_i32); > - tcg_out_r(s, t0); > - tcg_out32(s, arg32); > - } else { > - tcg_debug_assert(type == TCG_TYPE_I64); > + switch (type) { > + case TCG_TYPE_I32: > + tcg_out_op_ri(s, INDEX_op_tci_movi_i32, ret, arg); > + break; > #if TCG_TARGET_REG_BITS == 64 > - tcg_out_op_t(s, INDEX_op_tci_movi_i64); > - tcg_out_r(s, t0); > - tcg_out64(s, arg); > -#else > - TODO(); > + case TCG_TYPE_I64: > + tcg_out_op_rI(s, INDEX_op_tci_movi_i64, ret, arg); > + break; > #endif > + default: > + g_assert_not_reached(); > } > - old_code_ptr[1] = s->code_ptr - old_code_ptr; > } > > static void tcg_out_call(TCGContext *s, const tcg_insn_unit *arg) >
