target/i386/tcg: fix a few instructions that do not support VEX.L=1
Match the contents of table 2-17 ("#UD Exception and VEX.L Field Encoding")
in the SDM, for instruction in exception class 5. They were incorrectly
accepting 256-bit versions that do not exist.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit 2eb8d9734355ed86e162dce2a3f265ffee4005ed)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
d0be1b581c
commit
f48aaf926e
1 changed files with 4 additions and 4 deletions
|
|
@ -504,7 +504,7 @@ static void decode_0F7E(DisasContext *s, CPUX86State *env, X86OpEntry *entry, ui
|
||||||
static const X86OpEntry opcodes_0F7E[4] = {
|
static const X86OpEntry opcodes_0F7E[4] = {
|
||||||
X86_OP_ENTRY3(MOVD_from, E,y, None,None, P,y, vex5 mmx),
|
X86_OP_ENTRY3(MOVD_from, E,y, None,None, P,y, vex5 mmx),
|
||||||
X86_OP_ENTRY3(MOVD_from, E,y, None,None, V,y, vex5),
|
X86_OP_ENTRY3(MOVD_from, E,y, None,None, V,y, vex5),
|
||||||
X86_OP_ENTRY3(MOVQ, V,x, None,None, W,q, vex5), /* wrong dest Vy on SDM! */
|
X86_OP_ENTRY3(MOVQ, V,dq,None,None, W,q, vex5), /* wrong dest Vq on SDM! */
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
*entry = *decode_by_prefix(s, opcodes_0F7E);
|
*entry = *decode_by_prefix(s, opcodes_0F7E);
|
||||||
|
|
@ -569,7 +569,7 @@ static void decode_0FD6(DisasContext *s, CPUX86State *env, X86OpEntry *entry, ui
|
||||||
{
|
{
|
||||||
static const X86OpEntry movq[4] = {
|
static const X86OpEntry movq[4] = {
|
||||||
{},
|
{},
|
||||||
X86_OP_ENTRY3(MOVQ, W,x, None, None, V,q, vex5),
|
X86_OP_ENTRY3(MOVQ, W,dq, None, None, V,q, vex5),
|
||||||
X86_OP_ENTRY3(MOVq_dq, V,dq, None, None, N,q),
|
X86_OP_ENTRY3(MOVq_dq, V,dq, None, None, N,q),
|
||||||
X86_OP_ENTRY3(MOVq_dq, P,q, None, None, U,q),
|
X86_OP_ENTRY3(MOVq_dq, P,q, None, None, U,q),
|
||||||
};
|
};
|
||||||
|
|
@ -978,7 +978,7 @@ static void decode_0F12(DisasContext *s, CPUX86State *env, X86OpEntry *entry, ui
|
||||||
};
|
};
|
||||||
static const X86OpEntry opcodes_0F12_reg[4] = {
|
static const X86OpEntry opcodes_0F12_reg[4] = {
|
||||||
X86_OP_ENTRY3(VMOVHLPS, V,dq, H,dq, U,dq, vex7),
|
X86_OP_ENTRY3(VMOVHLPS, V,dq, H,dq, U,dq, vex7),
|
||||||
X86_OP_ENTRY3(VMOVLPx, W,x, H,x, U,q, vex5), /* MOVLPD */
|
X86_OP_ENTRY3(VMOVLPx, W,dq, H,dq, U,q, vex5), /* MOVLPD */
|
||||||
X86_OP_ENTRY3(VMOVSLDUP, V,x, None,None, U,x, vex4 cpuid(SSE3)),
|
X86_OP_ENTRY3(VMOVSLDUP, V,x, None,None, U,x, vex4 cpuid(SSE3)),
|
||||||
X86_OP_ENTRY3(VMOVDDUP, V,x, None,None, U,x, vex5 cpuid(SSE3)),
|
X86_OP_ENTRY3(VMOVDDUP, V,x, None,None, U,x, vex5 cpuid(SSE3)),
|
||||||
};
|
};
|
||||||
|
|
@ -1341,7 +1341,7 @@ static const X86OpEntry opcodes_0F[256] = {
|
||||||
[0x6b] = X86_OP_ENTRY3(PACKSSDW, V,x, H,x, W,x, vex4 mmx avx2_256 p_00_66),
|
[0x6b] = X86_OP_ENTRY3(PACKSSDW, V,x, H,x, W,x, vex4 mmx avx2_256 p_00_66),
|
||||||
[0x6c] = X86_OP_ENTRY3(PUNPCKLQDQ, V,x, H,x, W,x, vex4 p_66 avx2_256),
|
[0x6c] = X86_OP_ENTRY3(PUNPCKLQDQ, V,x, H,x, W,x, vex4 p_66 avx2_256),
|
||||||
[0x6d] = X86_OP_ENTRY3(PUNPCKHQDQ, V,x, H,x, W,x, vex4 p_66 avx2_256),
|
[0x6d] = X86_OP_ENTRY3(PUNPCKHQDQ, V,x, H,x, W,x, vex4 p_66 avx2_256),
|
||||||
[0x6e] = X86_OP_ENTRY3(MOVD_to, V,x, None,None, E,y, vex5 mmx p_00_66), /* wrong dest Vy on SDM! */
|
[0x6e] = X86_OP_ENTRY3(MOVD_to, V,dq,None,None, E,y, vex5 mmx p_00_66), /* wrong dest Vy on SDM! */
|
||||||
[0x6f] = X86_OP_GROUP0(0F6F),
|
[0x6f] = X86_OP_GROUP0(0F6F),
|
||||||
|
|
||||||
[0x78] = X86_OP_GROUP0(0F78),
|
[0x78] = X86_OP_GROUP0(0F78),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue