Index: trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
===================================================================
--- trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm	(revision 102634)
+++ trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm	(revision 102656)
@@ -140,4 +140,5 @@
   %define A3_32     ecx
   %define A3_16     cx
+  %define A3_8      cl
  %endif
 
@@ -161,4 +162,5 @@
   %define A3_32     r9d
   %define A3_16     r9w
+  %define A3_8      r9b
  %endif
 
@@ -4020,4 +4022,5 @@
         IEMIMPL_MMX_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movq    mm1, [A1]
         movq    mm0, mm0                ; paranoia!
@@ -4052,4 +4055,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movdqu  xmm1, [A1]
         movdqu  xmm0, xmm1              ; paranoia!
@@ -4090,4 +4094,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         vmovdqu  ymm1, [A1]
         vmovdqu  ymm0, ymm1             ; paranoia!
@@ -4131,4 +4136,5 @@
         IEMIMPL_MMX_PROLOGUE
 
+        movzx   A1, A1_8                ; must clear top bits
         movq    mm0, [A0]
         lea     T1, [.imm0 xWrtRIP]
@@ -4172,4 +4178,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A1, A1_8                ; must clear top bits
         movdqu  xmm0, [A0]
         lea     T1, [.imm0 xWrtRIP]
@@ -5025,4 +5032,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movdqu  xmm0, [A0]
         movdqu  xmm1, [A1]
@@ -5064,4 +5072,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movdqu  xmm0, [A0]
         movdqu  xmm1, [A1]
@@ -5106,4 +5115,5 @@
         IEMIMPL_AVX_PROLOGUE
 
+        movzx   A3, A3_8                ; must clear top bits
         movdqu  xmm0, [A1]
         movdqu  xmm1, [A2]
@@ -5136,4 +5146,5 @@
         IEMIMPL_AVX_PROLOGUE
 
+        movzx   A3, A3_8                ; must clear top bits
         vmovdqu ymm0, [A1]
         vmovdqu ymm1, [A2]
@@ -5251,4 +5262,5 @@
         IEMIMPL_MMX_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movq    mm0, [A0]
         movq    mm1, A1
@@ -5294,4 +5306,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movdqu  xmm0, [A0]
         movdqu  xmm1, [A1]
@@ -5351,4 +5364,5 @@
         IEMIMPL_AVX_PROLOGUE
 
+        movzx   A3, A3_8                ; must clear top bits
         movdqu  xmm0, [A1]
         movdqu  xmm1, [A2]
@@ -5384,4 +5398,5 @@
         IEMIMPL_AVX_PROLOGUE
 
+        movzx   A3, A3_8                ; must clear top bits
         vmovdqu ymm0, [A1]
         vmovdqu ymm1, [A2]
@@ -5450,4 +5465,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A3, A3_8                ; must clear top bits
         movdqu  xmm0, [A2 + IEMPCMPISTRXSRC.uSrc1]
         movdqu  xmm1, [A2 + IEMPCMPISTRXSRC.uSrc2]
@@ -5492,4 +5508,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A3, A3_8                ; must clear top bits
         movdqu  xmm0, [A2 + IEMPCMPESTRXSRC.uSrc1]
         movdqu  xmm1, [A2 + IEMPCMPESTRXSRC.uSrc2]
@@ -5538,4 +5555,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A3, A3_8                ; must clear top bits
         movdqu  xmm1, [A2 + IEMPCMPISTRXSRC.uSrc1]
         movdqu  xmm2, [A2 + IEMPCMPISTRXSRC.uSrc2]
@@ -5579,4 +5597,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A3, A3_8                ; must clear top bits
         movdqu  xmm1, [A2 + IEMPCMPESTRXSRC.uSrc1]
         movdqu  xmm2, [A2 + IEMPCMPESTRXSRC.uSrc2]
@@ -5624,4 +5643,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movq    mm0,  [A0]
         lea     T1, [.imm0 xWrtRIP]
@@ -5653,4 +5673,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movdqu  xmm0, [A0]
         lea     T1, [.imm0 xWrtRIP]
@@ -5690,4 +5711,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A3, A3_8                ; must clear top bits
         movdqu  xmm0, [A1]
         lea     T1, [.imm0 xWrtRIP]
@@ -5728,4 +5750,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movq    mm0,  A1
         lea     T1, [.imm0 xWrtRIP]
@@ -5757,4 +5780,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movdqu  xmm0, [A1]
         lea     T1, [.imm0 xWrtRIP]
@@ -5793,4 +5817,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movdqu  xmm0, [A1]
         lea     T1, [.imm0 xWrtRIP]
@@ -6375,4 +6400,5 @@
         SSE_LD_FXSTATE_MXCSR_ONLY A0
 
+        movzx   A3, A3_8                ; must clear top bits
         movdqu  xmm0, [A2 + IEMMEDIAF2XMMSRC.uSrc1]
         movdqu  xmm1, [A2 + IEMMEDIAF2XMMSRC.uSrc2]
@@ -6421,4 +6447,5 @@
         SSE_LD_FXSTATE_MXCSR_ONLY A0
 
+        movzx   A3, A3_8                ; must clear top bits
         movdqu  xmm0, [A2 + IEMMEDIAF2XMMSRC.uSrc1]
         movdqu  xmm1, [A2 + IEMMEDIAF2XMMSRC.uSrc2]
@@ -6472,4 +6499,5 @@
         SSE_LD_FXSTATE_MXCSR_ONLY A0
 
+        movzx   A3, A3_8                ; must clear top bits
         movdqu  xmm0, [A2 + IEMMEDIAF2XMMSRC.uSrc1]
         movdqu  xmm1, [A2 + IEMMEDIAF2XMMSRC.uSrc2]
@@ -6639,4 +6667,5 @@
         IEMIMPL_SSE_PROLOGUE
 
+        movzx   A2, A2_8                ; must clear top bits
         movdqu  xmm0, [A0]
         movdqu  xmm1, [A1]
