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.
