Richard Henderson <richard.hender...@linaro.org> writes:
> On 4/22/20 9:18 AM, Alex Bennée wrote: >>> void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1, int64_t arg2, >>> TCGLabel *l) >>> { >>> - if (cond == TCG_COND_ALWAYS) { >>> + if (TCG_TARGET_REG_BITS == 64) { >>> + tcg_gen_brcond_i64(cond, arg1, tcg_constant_i64(arg2), l); >>> + } else if (cond == TCG_COND_ALWAYS) { >>> tcg_gen_br(l); >>> } else if (cond != TCG_COND_NEVER) { >>> - TCGv_i64 t0 = tcg_const_i64(arg2); >>> - tcg_gen_brcond_i64(cond, arg1, t0, l); >>> - tcg_temp_free_i64(t0); >>> + l->refs++; >> >> Hmm is this a separate fix? > > No, it's expanding what tcg_gen_brcond_i64 would do for TCG_TARGET_REG_BITS > == 32. > >>> + tcg_gen_op6ii_i32(INDEX_op_brcond2_i32, >>> + TCGV_LOW(arg1), TCGV_HIGH(arg1), >>> + tcg_constant_i32(arg2), >>> + tcg_constant_i32(arg2 >> 32), >>> + cond, label_arg(l)); > > Because we have two separate TCGv_i32, from tcg_constant_i32(), which cannot > be > packaged up with TCGV_HIGH/LOW. > > > r~ OK I see that now - the r-b stands ;-) -- Alex Bennée