On 10/24/21 19:26, Richard Henderson wrote: > On 10/24/21 9:44 AM, Philippe Mathieu-Daudé wrote: >> On 10/24/21 07:04, Richard Henderson wrote: >>> On 10/23/21 2:47 PM, Philippe Mathieu-Daudé wrote: >>>> Convert the FILL opcode (Vector Fill from GPR) to decodetree. >>>> >>>> Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> >>>> --- >>>> target/mips/tcg/msa.decode | 2 ++ >>>> target/mips/tcg/msa_translate.c | 40 >>>> +++++++++++++++++++++++---------- >>>> 2 files changed, 30 insertions(+), 12 deletions(-) >> >>>> +static bool trans_FILL(DisasContext *ctx, arg_msa_r *a) >>>> +{ >>>> + TCGv_i32 twd; >>>> + TCGv_i32 tws; >>>> + TCGv_i32 tdf; >>>> + >>>> + if (!check_msa_access(ctx)) { >>>> + return false; >>>> + } >>>> + >>>> + if (TARGET_LONG_BITS != 64 && a->df == DF_DOUBLE) { >>>> + /* Double format valid only for MIPS64 */ >>>> + gen_reserved_instruction(ctx); >>>> + return true; >>>> + } >>> >>> I expect this reserved check should be above the MSA is disabled check, >>> within check_msa_access. >>> >>>> + twd = tcg_const_i32(a->wd); >>>> + tws = tcg_const_i32(a->ws); >>> >>> tcg_constant_i32. >> >> Hmm I am confused here, only 'df' is constant, 'ws' is GPR[$rs]. >> Since it is limited in [0,32[ and used read-only by the helper, >> we can also pass it as constant? > > What? You're passing the constant ws to the helper, not the contents of > the gpr -- that's what the helper is expecting.
OK got it now, thanks :)