Adding Ilya FYI. Ciao,
Claudio On 9/11/24 18:19, Claudio Fontana wrote: > On 9/11/24 16:16, Fabiano Rosas wrote: >> The XT check for the lxvx/stxvx instructions is currently >> inverted. This was introduced during the move to decodetree. >> >> From the ISA: >> Chapter 7. Vector-Scalar Extension Facility >> Load VSX Vector Indexed X-form >> >> lxvx XT,RA,RB >> if TX=0 & MSR.VSX=0 then VSX_Unavailable() >> if TX=1 & MSR.VEC=0 then Vector_Unavailable() >> ... >> Let XT be the value 32×TX + T. >> >> The code currently does the opposite: >> >> if (paired || a->rt >= 32) { >> REQUIRE_VSX(ctx); >> } else { >> REQUIRE_VECTOR(ctx); >> } >> >> This was already fixed for lxv/stxv at commit "2cc0e449d1 (target/ppc: >> Fix lxv/stxv MSR facility check)", but the indexed forms were missed. >> >> Cc: qemu-sta...@nongnu.org >> Fixes: 70426b5bb7 ("target/ppc: moved stxvx and lxvx from legacy to >> decodtree") >> Signed-off-by: Fabiano Rosas <faro...@suse.de> >> --- >> target/ppc/translate/vsx-impl.c.inc | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/target/ppc/translate/vsx-impl.c.inc >> b/target/ppc/translate/vsx-impl.c.inc >> index 40a87ddc4a..a869f30e86 100644 >> --- a/target/ppc/translate/vsx-impl.c.inc >> +++ b/target/ppc/translate/vsx-impl.c.inc >> @@ -2244,7 +2244,7 @@ static bool do_lstxv_PLS_D(DisasContext *ctx, >> arg_PLS_D *a, >> >> static bool do_lstxv_X(DisasContext *ctx, arg_X *a, bool store, bool paired) >> { >> - if (paired || a->rt >= 32) { >> + if (paired || a->rt < 32) { >> REQUIRE_VSX(ctx); >> } else { >> REQUIRE_VECTOR(ctx); > > Reviewed-by: Claudio Fontana <cfont...@suse.de> >