qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 00/34] tcg, target/ppc vector improvements


From: Mark Cave-Ayland
Subject: Re: [Qemu-devel] [PATCH 00/34] tcg, target/ppc vector improvements
Date: Tue, 18 Dec 2018 14:51:01 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0

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;                                                    \
         if (unlikely(!ctx->altivec_enabled)) {                          \
             gen_exception(ctx, POWERPC_EXCP_VPU);                       \
             return;                                                     \
         }                                                               \
-        simm = SIMM5(ctx->opcode);                                      \
+        simm = (int8_t)(SIMM5(ctx->opcode) << 3) >> 3;                  \
         tcg_op(avr64_offset(rD(ctx->opcode), true), 16, 16, simm);      \
     }


ATB,

Mark.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]