KVM: x86 emulator: Specialize decoding for insns with 66/f2/f3 prefixes
commit0d7cdee83ad1582eecbf3b4a220e82dcb5ad561c
authorAvi Kivity <avi@redhat.com>
Tue, 29 Mar 2011 09:34:38 +0000 (29 11:34 +0200)
committerAvi Kivity <avi@redhat.com>
Wed, 11 May 2011 11:56:59 +0000 (11 07:56 -0400)
tree928983175d0e149e9957884524218ffc257a98ed
parent5037f6f324cdcc6c9071dc774aba992f96c7e5ff
KVM: x86 emulator: Specialize decoding for insns with 66/f2/f3 prefixes

Most SIMD instructions use the 66/f2/f3 prefixes to distinguish between
different variants of the same instruction.  Usually the encoding is quite
regular, but in some cases (including non-SIMD instructions) the prefixes
generate very different instructions.  Examples include XCHG/PAUSE,
MOVQ/MOVDQA/MOVDQU, and MOVBE/CRC32.

Allow the emulator to handle these special cases by splitting such opcodes
into groups, with different decode flags and execution functions for different
prefixes.

Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/emulate.c