correctly decode PINSRQ instruction

This commit is contained in:
Stanislav Shwartsman 2017-12-13 20:59:41 +00:00
parent 69b29c3e15
commit f362f34ed6
3 changed files with 10 additions and 4 deletions

View File

@ -937,7 +937,7 @@ static BxOpcodeDecodeDescriptor64 decode64_descriptor[] =
/* 0F 3A 1F */ { &decoder_ud64, NULL },
/* 0F 3A 20 */ { &decoder64_sse, BxOpcodeGroupSSE_0F3A20 },
/* 0F 3A 21 */ { &decoder64_sse, BxOpcodeGroupSSE_0F3A21 },
/* 0F 3A 22 */ { &decoder64_sse, BxOpcodeGroupSSE_0F3A22 },
/* 0F 3A 22 */ { &decoder64_sseq, BxOpcodeGroupSSE_0F3A22 },
/* 0F 3A 23 */ { &decoder_ud64, NULL },
/* 0F 3A 24 */ { &decoder_ud64, NULL },
/* 0F 3A 25 */ { &decoder_ud64, NULL },

View File

@ -148,11 +148,17 @@ static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3A21[4] = {
};
// opcode 0F 3A 22
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3A22[4] = {
static const BxOpcodeInfo_t BxOpcodeGroupSSE_0F3A22[] = {
/* -- */ { 0, BX_IA_ERROR },
/* 66 */ { BxImmediate_Ib, BX_IA_PINSRD_VdqEdIb },
/* F3 */ { 0, BX_IA_ERROR },
/* F2 */ { 0, BX_IA_ERROR },
#if BX_SUPPORT_X86_64
/* -- */ { 0, BX_IA_ERROR },
/* 66 */ { BxImmediate_Ib, BX_IA_PINSRQ_VdqEqIb },
/* F3 */ { 0, BX_IA_ERROR },
/* F2 */ { 0, BX_IA_ERROR },
#endif
};
// opcode 0F 3A 40

View File

@ -2092,7 +2092,7 @@ bx_define_opcode(BX_IA_V128_VPEXTRW_EwdVdqIb, &BX_CPU_C::PEXTRW_EwdVdqIbM, &BX_C
// VexW64 aliased
bx_define_opcode(BX_IA_V128_VPINSRD_VdqEdIb, &BX_CPU_C::PINSRD_VdqHdqEdIbM, &BX_CPU_C::PINSRD_VdqHdqEdIbR, BX_ISA_AVX, OP_Vdq, OP_Hdq, OP_Ed, OP_Ib, BX_PREPARE_AVX)
bx_define_opcode(BX_IA_V128_VPINSRQ_VdqEqIb, &BX_CPU_C::PINSRD_VdqHdqEdIbM, &BX_CPU_C::PINSRD_VdqHdqEdIbR, BX_ISA_AVX, OP_Vdq, OP_Hdq, OP_Eq, OP_Ib, BX_PREPARE_AVX)
bx_define_opcode(BX_IA_V128_VPINSRQ_VdqEqIb, &BX_CPU_C::PINSRQ_VdqHdqEdIbM, &BX_CPU_C::PINSRQ_VdqHdqEdIbR, BX_ISA_AVX, OP_Vdq, OP_Hdq, OP_Eq, OP_Ib, BX_PREPARE_AVX)
bx_define_opcode(BX_IA_V128_VPEXTRD_EdVdqIb, &BX_CPU_C::PEXTRD_EdVdqIbM, &BX_CPU_C::PEXTRD_EdVdqIbR, BX_ISA_AVX, OP_Ed, OP_Vdq, OP_Ib, OP_NONE, BX_PREPARE_AVX)
bx_define_opcode(BX_IA_V128_VPEXTRQ_EqVdqIb, &BX_CPU_C::PEXTRQ_EqVdqIbM, &BX_CPU_C::PEXTRQ_EqVdqIbR, BX_ISA_AVX, OP_Eq, OP_Vdq, OP_Ib, OP_NONE, BX_PREPARE_AVX)
// VexW64 aliased
@ -3699,7 +3699,7 @@ bx_define_opcode(BX_IA_V512_VPEXTRW_EwdVdqIb, &BX_CPU_C::PEXTRW_EwdVdqIbM, &BX_C
// VexW64 aliased
bx_define_opcode(BX_IA_V512_VPINSRD_VdqEdIb, &BX_CPU_C::PINSRD_VdqHdqEdIbM, &BX_CPU_C::PINSRD_VdqHdqEdIbR, BX_ISA_AVX512_DQ, OP_Vdq, OP_Hdq, OP_Ed, OP_Ib, BX_PREPARE_EVEX_NO_SAE | BX_PREPARE_EVEX_NO_BROADCAST)
bx_define_opcode(BX_IA_V512_VPINSRQ_VdqEqIb, &BX_CPU_C::PINSRD_VdqHdqEdIbM, &BX_CPU_C::PINSRD_VdqHdqEdIbR, BX_ISA_AVX512_DQ, OP_Vdq, OP_Hdq, OP_Eq, OP_Ib, BX_PREPARE_EVEX_NO_SAE | BX_PREPARE_EVEX_NO_BROADCAST)
bx_define_opcode(BX_IA_V512_VPINSRQ_VdqEqIb, &BX_CPU_C::PINSRQ_VdqHdqEdIbM, &BX_CPU_C::PINSRQ_VdqHdqEdIbR, BX_ISA_AVX512_DQ, OP_Vdq, OP_Hdq, OP_Eq, OP_Ib, BX_PREPARE_EVEX_NO_SAE | BX_PREPARE_EVEX_NO_BROADCAST)
bx_define_opcode(BX_IA_V512_VPEXTRD_EdVdqIb, &BX_CPU_C::PEXTRD_EdVdqIbM, &BX_CPU_C::PEXTRD_EdVdqIbR, BX_ISA_AVX512_DQ, OP_Ed, OP_Vdq, OP_Ib, OP_NONE, BX_PREPARE_EVEX_NO_SAE | BX_PREPARE_EVEX_NO_BROADCAST)
bx_define_opcode(BX_IA_V512_VPEXTRQ_EqVdqIb, &BX_CPU_C::PEXTRQ_EqVdqIbM, &BX_CPU_C::PEXTRQ_EqVdqIbR, BX_ISA_AVX512_DQ, OP_Eq, OP_Vdq, OP_Ib, OP_NONE, BX_PREPARE_EVEX_NO_SAE | BX_PREPARE_EVEX_NO_BROADCAST)
// VexW64 aliased