https://bugs.kde.org/show_bug.cgi?id=516223

Mark Wielaard <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #2 from Mark Wielaard <[email protected]> ---
(In reply to Alexandra Hajkova from comment #1)
> Created attachment 191063 [details]
> patch
> 
> Add decoding of PBLENDVB (0x66 0F 38 10), BLENDVPS (0x66 0F 38 14)
> and BLENDVPD (0x66 0F 38 15) for x86 32-bit in guest_x86_toIR.c.
>     
>  Copy do_SseAssistedVectorAndScalar from VEX/priv/host_amd64_isel.c
>  to VEX/priv/host_x86_isel.c and modify it for x86 32 bit.
>     
>  Also fix h_generic_calc_SarN64x2 and h_generic_calc_SarN8x16 to use
> VEX_REGPARM(3), required for the x86 helper call convention.
>     
> Move PBLENDVB, BLENDVPS and BLENDVPD tests from sse4-64.c into
> the shared sse4-common.h so they are also exercised on x86.

- NEWS updated.
- (New) tests pass locally on both amd64 and x86.
- decode_sse4_blend looks correct.
  You could add a gen_SEGV_if_not_16_aligned( addr ); to be more like the amd64
variant.
- The VEX_REGPARM(3) on h_generic_calc_SarN64x2 and h_generic_calc_SarN8x16
should be noops for other arches, so is good.
- The do_SseAssistedVectorAndScalar code depends on the regparm(3) calling
convention. Good.
- The test vectors aren't aligned in memory (the 16 aligned check above) and so
don't run
  correctly, under gdb none/tests/x86/sse4-x86 gives:
  Program received signal SIGSEGV, Segmentation fault.
0x0806af06 in do_PBLENDVB (mem=1 '\001', xmm0=0xffffc99c, src=0xffffc98c, 
    dst=0xffffc97c) at ../sse4-common.h:664
664           __asm__ __volatile__(
(gdb) disassemble 
Dump of assembler code for function do_PBLENDVB:
   0x0806aefe <+27>:    movupd (%ecx),%xmm0
   0x0806af02 <+31>:    movupd (%edx),%xmm7
=> 0x0806af06 <+35>:    pblendvb %xmm0,(%eax),%xmm7
   0x0806af0b <+40>:    movupd %xmm7,(%edx)
   0x0806af0f <+44>:    jmp    0x806af2f <do_PBLENDVB+76>
Probably needs some variables marked with __attribute__ ( (aligned (16)))

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to