From aca1ad14148bd9e1cae87a962a199d0fe8ddd8f8 Mon Sep 17 00:00:00 2001 From: flobernd Date: Thu, 29 Jun 2017 20:52:35 +0200 Subject: [PATCH] Minor bugfixes --- .../Zydis/Internal/InstructionDefinitions.inc | 58 +++++++++---------- include/Zydis/Internal/InstructionTable.h | 7 +++ src/Decoder.c | 6 +- 3 files changed, 40 insertions(+), 31 deletions(-) diff --git a/include/Zydis/Internal/InstructionDefinitions.inc b/include/Zydis/Internal/InstructionDefinitions.inc index cb37ab6..6dbd27a 100644 --- a/include/Zydis/Internal/InstructionDefinitions.inc +++ b/include/Zydis/Internal/InstructionDefinitions.inc @@ -6583,7 +6583,7 @@ const ZydisInstructionDefinitionMVEX instructionDefinitionsMVEX[] = /*0024*/ { ZYDIS_MNEMONIC_VCMPPS, 5, 0x03AF, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SAE, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0025*/ { ZYDIS_MNEMONIC_VCVTDQ2PD, 3, 0x08C0, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32_BCST, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0026*/ { ZYDIS_MNEMONIC_VCVTDQ2PD, 3, 0x08C4, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0027*/ { ZYDIS_MNEMONIC_VCVTDQ2PD, 3, 0x08C4, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0027*/ { ZYDIS_MNEMONIC_VCVTDQ2PD, 3, 0x08C4, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0028*/ { ZYDIS_MNEMONIC_VCVTFXPNTDQ2PS, 4, 0x089C, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0029*/ { ZYDIS_MNEMONIC_VCVTFXPNTDQ2PS, 4, 0x08A0, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*002A*/ { ZYDIS_MNEMONIC_VCVTFXPNTDQ2PS, 4, 0x08A0, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SAE, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, @@ -6610,7 +6610,7 @@ const ZydisInstructionDefinitionMVEX instructionDefinitionsMVEX[] = /*003F*/ { ZYDIS_MNEMONIC_VCVTPS2PD, 3, 0x11CE, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SAE, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0040*/ { ZYDIS_MNEMONIC_VCVTUDQ2PD, 3, 0x08C0, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32_BCST, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0041*/ { ZYDIS_MNEMONIC_VCVTUDQ2PD, 3, 0x08C4, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0042*/ { ZYDIS_MNEMONIC_VCVTUDQ2PD, 3, 0x08C4, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0042*/ { ZYDIS_MNEMONIC_VCVTUDQ2PD, 3, 0x08C4, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0043*/ { ZYDIS_MNEMONIC_VEXP223PS, 3, 0x08D4, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_F_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0044*/ { ZYDIS_MNEMONIC_VEXP223PS, 3, 0x08D8, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SAE, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0045*/ { ZYDIS_MNEMONIC_VEXP223PS, 3, 0x08D8, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, @@ -6778,31 +6778,31 @@ const ZydisInstructionDefinitionMVEX instructionDefinitionsMVEX[] = /*00E7*/ { ZYDIS_MNEMONIC_VPADCD, 4, 0x08D0, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00E8*/ { ZYDIS_MNEMONIC_VPADDD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00E9*/ { ZYDIS_MNEMONIC_VPADDD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*00EA*/ { ZYDIS_MNEMONIC_VPADDD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*00EA*/ { ZYDIS_MNEMONIC_VPADDD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00EB*/ { ZYDIS_MNEMONIC_VPADDSETCD, 4, 0x08CC, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00EC*/ { ZYDIS_MNEMONIC_VPADDSETCD, 4, 0x08D0, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00ED*/ { ZYDIS_MNEMONIC_VPADDSETCD, 4, 0x08D0, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00EE*/ { ZYDIS_MNEMONIC_VPADDSETSD, 4, 0x0898, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00EF*/ { ZYDIS_MNEMONIC_VPADDSETSD, 4, 0x0894, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*00F0*/ { ZYDIS_MNEMONIC_VPADDSETSD, 4, 0x0894, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*00F0*/ { ZYDIS_MNEMONIC_VPADDSETSD, 4, 0x0894, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00F1*/ { ZYDIS_MNEMONIC_VPANDD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00F2*/ { ZYDIS_MNEMONIC_VPANDD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*00F3*/ { ZYDIS_MNEMONIC_VPANDD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*00F3*/ { ZYDIS_MNEMONIC_VPANDD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00F4*/ { ZYDIS_MNEMONIC_VPANDND, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00F5*/ { ZYDIS_MNEMONIC_VPANDND, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*00F6*/ { ZYDIS_MNEMONIC_VPANDND, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*00F6*/ { ZYDIS_MNEMONIC_VPANDND, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00F7*/ { ZYDIS_MNEMONIC_VPANDNQ, 4, 0x0888, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00F8*/ { ZYDIS_MNEMONIC_VPANDNQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*00F9*/ { ZYDIS_MNEMONIC_VPANDNQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*00F9*/ { ZYDIS_MNEMONIC_VPANDNQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00FA*/ { ZYDIS_MNEMONIC_VPANDQ, 4, 0x0888, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00FB*/ { ZYDIS_MNEMONIC_VPANDQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*00FC*/ { ZYDIS_MNEMONIC_VPANDQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*00FC*/ { ZYDIS_MNEMONIC_VPANDQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00FD*/ { ZYDIS_MNEMONIC_VPBLENDMD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*00FE*/ { ZYDIS_MNEMONIC_VPBLENDMD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*00FF*/ { ZYDIS_MNEMONIC_VPBLENDMD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*00FF*/ { ZYDIS_MNEMONIC_VPBLENDMD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0100*/ { ZYDIS_MNEMONIC_VPBLENDMQ, 4, 0x0888, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0101*/ { ZYDIS_MNEMONIC_VPBLENDMQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0102*/ { ZYDIS_MNEMONIC_VPBLENDMQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0102*/ { ZYDIS_MNEMONIC_VPBLENDMQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0103*/ { ZYDIS_MNEMONIC_VPBROADCASTD, 3, 0x08A4, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_UI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16 }, /*0104*/ { ZYDIS_MNEMONIC_VPBROADCASTQ, 3, 0x11C8, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_UF_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_1_TO_8 }, /*0105*/ { ZYDIS_MNEMONIC_VPCMPD, 5, 0x03B4, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, @@ -6829,37 +6829,37 @@ const ZydisInstructionDefinitionMVEX instructionDefinitionsMVEX[] = /*011A*/ { ZYDIS_MNEMONIC_VPGATHERDQ, 3, 0x11F5, 0x00, ZYDIS_FALSE, ZYDIS_TRUE, ZYDIS_MVEX_FUNC_UI_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16 }, /*011B*/ { ZYDIS_MNEMONIC_VPMADD231D, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*011C*/ { ZYDIS_MNEMONIC_VPMADD231D, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*011D*/ { ZYDIS_MNEMONIC_VPMADD231D, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*011D*/ { ZYDIS_MNEMONIC_VPMADD231D, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*011E*/ { ZYDIS_MNEMONIC_VPMADD233D, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32_BCST_4TO16, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*011F*/ { ZYDIS_MNEMONIC_VPMADD233D, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0120*/ { ZYDIS_MNEMONIC_VPMADD233D, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0120*/ { ZYDIS_MNEMONIC_VPMADD233D, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0121*/ { ZYDIS_MNEMONIC_VPMAXSD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0122*/ { ZYDIS_MNEMONIC_VPMAXSD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0123*/ { ZYDIS_MNEMONIC_VPMAXSD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0123*/ { ZYDIS_MNEMONIC_VPMAXSD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0124*/ { ZYDIS_MNEMONIC_VPMAXUD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0125*/ { ZYDIS_MNEMONIC_VPMAXUD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0126*/ { ZYDIS_MNEMONIC_VPMAXUD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0126*/ { ZYDIS_MNEMONIC_VPMAXUD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0127*/ { ZYDIS_MNEMONIC_VPMINSD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0128*/ { ZYDIS_MNEMONIC_VPMINSD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0129*/ { ZYDIS_MNEMONIC_VPMINSD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0129*/ { ZYDIS_MNEMONIC_VPMINSD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*012A*/ { ZYDIS_MNEMONIC_VPMINUD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*012B*/ { ZYDIS_MNEMONIC_VPMINUD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*012C*/ { ZYDIS_MNEMONIC_VPMINUD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*012C*/ { ZYDIS_MNEMONIC_VPMINUD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*012D*/ { ZYDIS_MNEMONIC_VPMULHD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*012E*/ { ZYDIS_MNEMONIC_VPMULHD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*012F*/ { ZYDIS_MNEMONIC_VPMULHD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*012F*/ { ZYDIS_MNEMONIC_VPMULHD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0130*/ { ZYDIS_MNEMONIC_VPMULHUD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0131*/ { ZYDIS_MNEMONIC_VPMULHUD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0132*/ { ZYDIS_MNEMONIC_VPMULHUD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0132*/ { ZYDIS_MNEMONIC_VPMULHUD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0133*/ { ZYDIS_MNEMONIC_VPMULLD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0134*/ { ZYDIS_MNEMONIC_VPMULLD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0135*/ { ZYDIS_MNEMONIC_VPMULLD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0135*/ { ZYDIS_MNEMONIC_VPMULLD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0136*/ { ZYDIS_MNEMONIC_VPORD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0137*/ { ZYDIS_MNEMONIC_VPORD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0138*/ { ZYDIS_MNEMONIC_VPORD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0138*/ { ZYDIS_MNEMONIC_VPORD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0139*/ { ZYDIS_MNEMONIC_VPORQ, 4, 0x0888, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*013A*/ { ZYDIS_MNEMONIC_VPORQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*013B*/ { ZYDIS_MNEMONIC_VPORQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*013B*/ { ZYDIS_MNEMONIC_VPORQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*013C*/ { ZYDIS_MNEMONIC_VPREFETCH0, 1, 0x16E6, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_F_64, ZYDIS_MASK_POLICY_INVALID, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*013D*/ { ZYDIS_MNEMONIC_VPREFETCH1, 1, 0x16E6, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_F_64, ZYDIS_MASK_POLICY_INVALID, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*013E*/ { ZYDIS_MNEMONIC_VPREFETCH2, 1, 0x16E6, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_F_64, ZYDIS_MASK_POLICY_INVALID, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, @@ -6883,26 +6883,26 @@ const ZydisInstructionDefinitionMVEX instructionDefinitionsMVEX[] = /*0150*/ { ZYDIS_MNEMONIC_VPSLLD, 4, 0x08DC, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0151*/ { ZYDIS_MNEMONIC_VPSLLD, 4, 0x08E0, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0152*/ { ZYDIS_MNEMONIC_VPSLLVD, 4, 0x08E4, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0153*/ { ZYDIS_MNEMONIC_VPSLLVD, 4, 0x08E8, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0153*/ { ZYDIS_MNEMONIC_VPSLLVD, 4, 0x08E8, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0154*/ { ZYDIS_MNEMONIC_VPSLLVD, 4, 0x08E8, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0155*/ { ZYDIS_MNEMONIC_VPSRAD, 4, 0x08DC, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0156*/ { ZYDIS_MNEMONIC_VPSRAD, 4, 0x08DC, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0157*/ { ZYDIS_MNEMONIC_VPSRAD, 4, 0x08E0, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0158*/ { ZYDIS_MNEMONIC_VPSRAVD, 4, 0x08E4, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0159*/ { ZYDIS_MNEMONIC_VPSRAVD, 4, 0x08E8, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0159*/ { ZYDIS_MNEMONIC_VPSRAVD, 4, 0x08E8, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*015A*/ { ZYDIS_MNEMONIC_VPSRAVD, 4, 0x08E8, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*015B*/ { ZYDIS_MNEMONIC_VPSRLD, 4, 0x08DC, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*015C*/ { ZYDIS_MNEMONIC_VPSRLD, 4, 0x08DC, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*015D*/ { ZYDIS_MNEMONIC_VPSRLD, 4, 0x08E0, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*015E*/ { ZYDIS_MNEMONIC_VPSRLVD, 4, 0x08E4, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*015F*/ { ZYDIS_MNEMONIC_VPSRLVD, 4, 0x08E8, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*015F*/ { ZYDIS_MNEMONIC_VPSRLVD, 4, 0x08E8, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0160*/ { ZYDIS_MNEMONIC_VPSRLVD, 4, 0x08E8, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0161*/ { ZYDIS_MNEMONIC_VPSUBD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0162*/ { ZYDIS_MNEMONIC_VPSUBD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0163*/ { ZYDIS_MNEMONIC_VPSUBD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0163*/ { ZYDIS_MNEMONIC_VPSUBD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0164*/ { ZYDIS_MNEMONIC_VPSUBRD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0165*/ { ZYDIS_MNEMONIC_VPSUBRD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0166*/ { ZYDIS_MNEMONIC_VPSUBRD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0166*/ { ZYDIS_MNEMONIC_VPSUBRD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0167*/ { ZYDIS_MNEMONIC_VPSUBRSETBD, 4, 0x08CC, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0168*/ { ZYDIS_MNEMONIC_VPSUBRSETBD, 4, 0x08D0, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0169*/ { ZYDIS_MNEMONIC_VPSUBRSETBD, 4, 0x08D0, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, @@ -6914,10 +6914,10 @@ const ZydisInstructionDefinitionMVEX instructionDefinitionsMVEX[] = /*016F*/ { ZYDIS_MNEMONIC_VPTESTMD, 4, 0x03B9, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0170*/ { ZYDIS_MNEMONIC_VPXORD, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0171*/ { ZYDIS_MNEMONIC_VPXORD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0172*/ { ZYDIS_MNEMONIC_VPXORD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0172*/ { ZYDIS_MNEMONIC_VPXORD, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0173*/ { ZYDIS_MNEMONIC_VPXORQ, 4, 0x0888, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0174*/ { ZYDIS_MNEMONIC_VPXORQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0175*/ { ZYDIS_MNEMONIC_VPXORQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0175*/ { ZYDIS_MNEMONIC_VPXORQ, 4, 0x088C, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0176*/ { ZYDIS_MNEMONIC_VRCP23PS, 3, 0x08D4, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_F_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0177*/ { ZYDIS_MNEMONIC_VRCP23PS, 3, 0x08D8, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SAE, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0178*/ { ZYDIS_MNEMONIC_VRCP23PS, 3, 0x08D8, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, @@ -6932,7 +6932,7 @@ const ZydisInstructionDefinitionMVEX instructionDefinitionsMVEX[] = /*0181*/ { ZYDIS_MNEMONIC_VRSQRT23PS, 3, 0x08D8, 0x00, ZYDIS_FALSE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0182*/ { ZYDIS_MNEMONIC_VSCALEPS, 4, 0x0890, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SI_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0183*/ { ZYDIS_MNEMONIC_VSCALEPS, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_SWIZZLE_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, - /*0184*/ { ZYDIS_MNEMONIC_VSCALEPS, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, + /*0184*/ { ZYDIS_MNEMONIC_VSCALEPS, 4, 0x039B, 0x00, ZYDIS_TRUE, ZYDIS_FALSE, ZYDIS_MVEX_FUNC_IGNORED, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, /*0185*/ { ZYDIS_MNEMONIC_VSCATTERDPD, 3, 0x11FE, 0x00, ZYDIS_FALSE, ZYDIS_TRUE, ZYDIS_MVEX_FUNC_DF_64, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16 }, /*0186*/ { ZYDIS_MNEMONIC_VSCATTERDPS, 3, 0x1201, 0x00, ZYDIS_FALSE, ZYDIS_TRUE, ZYDIS_MVEX_FUNC_DF_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_1_TO_16 }, /*0187*/ { ZYDIS_MNEMONIC_VSCATTERPF0DPS, 2, 0x11F8, 0x00, ZYDIS_FALSE, ZYDIS_TRUE, ZYDIS_MVEX_FUNC_UF_32, ZYDIS_MASK_POLICY_ALLOWED, ZYDIS_FALSE, ZYDIS_MVEX_STATIC_BROADCAST_NONE }, diff --git a/include/Zydis/Internal/InstructionTable.h b/include/Zydis/Internal/InstructionTable.h index 312d2d9..e3715e1 100644 --- a/include/Zydis/Internal/InstructionTable.h +++ b/include/Zydis/Internal/InstructionTable.h @@ -442,6 +442,13 @@ typedef uint8_t ZydisMVEXFunctionality; */ enum ZydisMVEXFunctionalities { + /** + * @brief @c The MVEX.SSS value is ignored. + */ + ZYDIS_MVEX_FUNC_IGNORED, + /** + * @brief @c MVEX.SSS must be 000b. + */ ZYDIS_MVEX_FUNC_INVALID, /** * @brief @c MVEX.SSS controls embedded-rounding functionality. diff --git a/src/Decoder.c b/src/Decoder.c index 72e8af6..0f0ded0 100644 --- a/src/Decoder.c +++ b/src/Decoder.c @@ -4093,10 +4093,12 @@ static ZydisStatus ZydisDecodeInstruction(ZydisDecoderContext* context, ZydisIns maskPolicy = def->maskPolicy; // Check for invalid MVEX.SSS values - static const uint8_t lookup[25][8] = + static const uint8_t lookup[26][8] = { - // ZYDIS_MVEX_FUNC_INVALID + // ZYDIS_MVEX_FUNC_IGNORED { 1, 1, 1, 1, 1, 1, 1, 1 }, + // ZYDIS_MVEX_FUNC_INVALID + { 1, 0, 0, 0, 0, 0, 0, 0 }, // ZYDIS_MVEX_FUNC_RC { 1, 1, 1, 1, 1, 1, 1, 1 }, // ZYDIS_MVEX_FUNC_SAE