On 12/18/18 6:51 AM, Mark Cave-Ayland wrote: > On 18/12/2018 09:49, Mark Cave-Ayland wrote: > >> A quick bisection suggests that there could be 2 separate issues related to >> the >> implementation of splat: >> >> Patch "target/ppc: convert vspltis[bhw] to use vector operations" causes a >> black >> border to appear around the OS X splash screen >> (https://www.ilande.co.uk/tmp/qemu/badapple1.png) which may suggest an >> overflow/alignment issue. > > This one appears to be a sign extension issue - if I make use of the same > technique > used by the previous helper then this problem goes away. Below is my > experimental > diff to be squashed into "target/ppc: convert vspltis[bhw] to use vector > operations": > > diff --git a/target/ppc/translate/vmx-impl.inc.c > b/target/ppc/translate/vmx-impl.inc.c > index be638cdb1a..6cd25c8dc6 100644 > --- a/target/ppc/translate/vmx-impl.inc.c > +++ b/target/ppc/translate/vmx-impl.inc.c > @@ -723,12 +723,12 @@ GEN_VXRFORM_DUAL(vcmpgtfp, PPC_ALTIVEC, PPC_NONE, \ > #define GEN_VXFORM_DUPI(name, tcg_op, opc2, opc3) \ > static void glue(gen_, name)(DisasContext *ctx) \ > { \ > - int simm; \ > + int8_t simm;
This shouldn't matter. \ > if (unlikely(!ctx->altivec_enabled)) { \ > gen_exception(ctx, POWERPC_EXCP_VPU); \ > return; \ > } \ > - simm = SIMM5(ctx->opcode); \ > + simm = (int8_t)(SIMM5(ctx->opcode) << 3) >> 3; \ This suggests that SIMM5 should be using sextract32. r~