x86emul: support most memory accessing MMX/SSE{,2,3} insns
authorJan Beulich <jbeulich@suse.com>
Tue, 7 Mar 2017 16:02:53 +0000 (17:02 +0100)
committerJan Beulich <jbeulich@suse.com>
Tue, 7 Mar 2017 16:02:53 +0000 (17:02 +0100)
commit272e928f498705064bd6cf17d12158645ee7819e
tree85d9d755b0dac12b9d680c478918643f253e2392
parentcaf053fb545329e58ac891d197f96503e3121049
x86emul: support most memory accessing MMX/SSE{,2,3} insns

This aims at covering most MMX/SSEn/AVX instructions in the 0x0f-escape
space with memory operands. Not covered here are irregular moves,
converts, and {,U}COMIS{S,D} (modifying EFLAGS).

Note that the distinction between simd_*_fp isn't strictly needed, but
I've kept them as separate entries since in an earlier version I needed
them to be separate, and we may well find it useful down the road to
have that distinction.

Also take the opportunity and adjust the vmovdqu test case the new
LDDQU one here has been cloned from: To zero a ymm register we don't
need to go through hoops, as 128-bit AVX insns zero the upper portion
of the destination register, and in the disabled AVX2 code there was a
wrong YMM register used.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
tools/tests/x86_emulator/test_x86_emulator.c
tools/tests/x86_emulator/x86_emulate.h
xen/arch/x86/x86_emulate/x86_emulate.c
xen/include/asm-x86/cpufeature.h