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

Reply via email to