From ee97ae753c63618cab2bf3752a5200c04e286efe Mon Sep 17 00:00:00 2001 From: flobernd Date: Mon, 19 Jun 2017 20:46:42 +0200 Subject: [PATCH] Fixed some EVEX tuple-types --- .../Zydis/Internal/InstructionDefinitions.inc | 60 +++++++++---------- src/Decoder.c | 8 ++- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/include/Zydis/Internal/InstructionDefinitions.inc b/include/Zydis/Internal/InstructionDefinitions.inc index 941ca3f..4515770 100644 --- a/include/Zydis/Internal/InstructionDefinitions.inc +++ b/include/Zydis/Internal/InstructionDefinitions.inc @@ -3975,45 +3975,45 @@ const ZydisInstructionDefinitionEVEX instructionDefinitionsEVEX[] = /*00FC*/ { ZYDIS_MNEMONIC_VCVTQQ2PS, 3, 0x0E1C, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_FV, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_BC, ZYDIS_MASK_POLICY_ALLOWED }, /*00FD*/ { ZYDIS_MNEMONIC_VCVTSD2SI, 2, 0x15AC, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*00FE*/ { ZYDIS_MNEMONIC_VCVTSD2SI, 2, 0x15AC, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*00FF*/ { ZYDIS_MNEMONIC_VCVTSD2SI, 2, 0x128E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*00FF*/ { ZYDIS_MNEMONIC_VCVTSD2SI, 2, 0x128E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0100*/ { ZYDIS_MNEMONIC_VCVTSD2SI, 2, 0x1640, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0101*/ { ZYDIS_MNEMONIC_VCVTSD2SI, 2, 0x1640, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0102*/ { ZYDIS_MNEMONIC_VCVTSD2SI, 2, 0x1292, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0102*/ { ZYDIS_MNEMONIC_VCVTSD2SI, 2, 0x1292, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0103*/ { ZYDIS_MNEMONIC_VCVTSD2SS, 4, 0x0587, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*0104*/ { ZYDIS_MNEMONIC_VCVTSD2SS, 4, 0x0587, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_ALLOWED }, /*0105*/ { ZYDIS_MNEMONIC_VCVTSD2SS, 4, 0x058B, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*0106*/ { ZYDIS_MNEMONIC_VCVTSD2USI, 2, 0x1642, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0107*/ { ZYDIS_MNEMONIC_VCVTSD2USI, 2, 0x1642, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0108*/ { ZYDIS_MNEMONIC_VCVTSD2USI, 2, 0x1644, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0108*/ { ZYDIS_MNEMONIC_VCVTSD2USI, 2, 0x1644, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0109*/ { ZYDIS_MNEMONIC_VCVTSD2USI, 2, 0x1646, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*010A*/ { ZYDIS_MNEMONIC_VCVTSD2USI, 2, 0x1646, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*010B*/ { ZYDIS_MNEMONIC_VCVTSD2USI, 2, 0x1648, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*010B*/ { ZYDIS_MNEMONIC_VCVTSD2USI, 2, 0x1648, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*010C*/ { ZYDIS_MNEMONIC_VCVTSI2SD, 3, 0x0AE0, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*010D*/ { ZYDIS_MNEMONIC_VCVTSI2SD, 3, 0x0ADD, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*010D*/ { ZYDIS_MNEMONIC_VCVTSI2SD, 3, 0x0ADD, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*010E*/ { ZYDIS_MNEMONIC_VCVTSI2SD, 3, 0x0AE6, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*010F*/ { ZYDIS_MNEMONIC_VCVTSI2SD, 3, 0x0AE6, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0110*/ { ZYDIS_MNEMONIC_VCVTSI2SD, 3, 0x0AE3, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0110*/ { ZYDIS_MNEMONIC_VCVTSI2SD, 3, 0x0AE3, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0111*/ { ZYDIS_MNEMONIC_VCVTSI2SS, 3, 0x0AEC, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0112*/ { ZYDIS_MNEMONIC_VCVTSI2SS, 3, 0x0AEC, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0113*/ { ZYDIS_MNEMONIC_VCVTSI2SS, 3, 0x0AE9, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0113*/ { ZYDIS_MNEMONIC_VCVTSI2SS, 3, 0x0AE9, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0114*/ { ZYDIS_MNEMONIC_VCVTSI2SS, 3, 0x0AF2, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0115*/ { ZYDIS_MNEMONIC_VCVTSI2SS, 3, 0x0AF2, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0116*/ { ZYDIS_MNEMONIC_VCVTSI2SS, 3, 0x0AEF, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0116*/ { ZYDIS_MNEMONIC_VCVTSI2SS, 3, 0x0AEF, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0117*/ { ZYDIS_MNEMONIC_VCVTSS2SD, 4, 0x058F, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*0118*/ { ZYDIS_MNEMONIC_VCVTSS2SD, 4, 0x058F, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_SAE, ZYDIS_MASK_POLICY_ALLOWED }, /*0119*/ { ZYDIS_MNEMONIC_VCVTSS2SD, 4, 0x0593, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*011A*/ { ZYDIS_MNEMONIC_VCVTSS2SI, 2, 0x15B0, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*011B*/ { ZYDIS_MNEMONIC_VCVTSS2SI, 2, 0x15B0, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*011C*/ { ZYDIS_MNEMONIC_VCVTSS2SI, 2, 0x12AE, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*011C*/ { ZYDIS_MNEMONIC_VCVTSS2SI, 2, 0x12AE, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*011D*/ { ZYDIS_MNEMONIC_VCVTSS2SI, 2, 0x164A, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*011E*/ { ZYDIS_MNEMONIC_VCVTSS2SI, 2, 0x164A, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*011F*/ { ZYDIS_MNEMONIC_VCVTSS2SI, 2, 0x12B2, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*011F*/ { ZYDIS_MNEMONIC_VCVTSS2SI, 2, 0x12B2, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0120*/ { ZYDIS_MNEMONIC_VCVTSS2USI, 2, 0x164C, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0121*/ { ZYDIS_MNEMONIC_VCVTSS2USI, 2, 0x164C, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0122*/ { ZYDIS_MNEMONIC_VCVTSS2USI, 2, 0x164E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0122*/ { ZYDIS_MNEMONIC_VCVTSS2USI, 2, 0x164E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0123*/ { ZYDIS_MNEMONIC_VCVTSS2USI, 2, 0x1650, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0124*/ { ZYDIS_MNEMONIC_VCVTSS2USI, 2, 0x1650, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0125*/ { ZYDIS_MNEMONIC_VCVTSS2USI, 2, 0x1652, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0125*/ { ZYDIS_MNEMONIC_VCVTSS2USI, 2, 0x1652, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0126*/ { ZYDIS_MNEMONIC_VCVTTPD2DQ, 3, 0x0D53, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*0127*/ { ZYDIS_MNEMONIC_VCVTTPD2DQ, 3, 0x0D56, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_FV, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_BC, ZYDIS_MASK_POLICY_ALLOWED }, /*0128*/ { ZYDIS_MNEMONIC_VCVTTPD2DQ, 3, 0x0D59, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, @@ -4072,28 +4072,28 @@ const ZydisInstructionDefinitionEVEX instructionDefinitionsEVEX[] = /*015D*/ { ZYDIS_MNEMONIC_VCVTTPS2UQQ, 3, 0x0E0D, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_HV, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_BC, ZYDIS_MASK_POLICY_ALLOWED }, /*015E*/ { ZYDIS_MNEMONIC_VCVTTSD2SI, 2, 0x15AC, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*015F*/ { ZYDIS_MNEMONIC_VCVTTSD2SI, 2, 0x15AC, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_SAE, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0160*/ { ZYDIS_MNEMONIC_VCVTTSD2SI, 2, 0x128E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0160*/ { ZYDIS_MNEMONIC_VCVTTSD2SI, 2, 0x128E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0161*/ { ZYDIS_MNEMONIC_VCVTTSD2SI, 2, 0x1640, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0162*/ { ZYDIS_MNEMONIC_VCVTTSD2SI, 2, 0x1640, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_SAE, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0163*/ { ZYDIS_MNEMONIC_VCVTTSD2SI, 2, 0x1292, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0163*/ { ZYDIS_MNEMONIC_VCVTTSD2SI, 2, 0x1292, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0164*/ { ZYDIS_MNEMONIC_VCVTTSD2USI, 2, 0x1642, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0165*/ { ZYDIS_MNEMONIC_VCVTTSD2USI, 2, 0x1642, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_SAE, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0166*/ { ZYDIS_MNEMONIC_VCVTTSD2USI, 2, 0x1644, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0166*/ { ZYDIS_MNEMONIC_VCVTTSD2USI, 2, 0x1644, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0167*/ { ZYDIS_MNEMONIC_VCVTTSD2USI, 2, 0x1646, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0168*/ { ZYDIS_MNEMONIC_VCVTTSD2USI, 2, 0x1646, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_SAE, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0169*/ { ZYDIS_MNEMONIC_VCVTTSD2USI, 2, 0x1648, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0169*/ { ZYDIS_MNEMONIC_VCVTTSD2USI, 2, 0x1648, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*016A*/ { ZYDIS_MNEMONIC_VCVTTSS2SI, 2, 0x15B0, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*016B*/ { ZYDIS_MNEMONIC_VCVTTSS2SI, 2, 0x15B0, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_SAE, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*016C*/ { ZYDIS_MNEMONIC_VCVTTSS2SI, 2, 0x12AE, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*016C*/ { ZYDIS_MNEMONIC_VCVTTSS2SI, 2, 0x12AE, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*016D*/ { ZYDIS_MNEMONIC_VCVTTSS2SI, 2, 0x164A, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*016E*/ { ZYDIS_MNEMONIC_VCVTTSS2SI, 2, 0x164A, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_SAE, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*016F*/ { ZYDIS_MNEMONIC_VCVTTSS2SI, 2, 0x12B2, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*016F*/ { ZYDIS_MNEMONIC_VCVTTSS2SI, 2, 0x12B2, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0170*/ { ZYDIS_MNEMONIC_VCVTTSS2USI, 2, 0x164C, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0171*/ { ZYDIS_MNEMONIC_VCVTTSS2USI, 2, 0x164C, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_SAE, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0172*/ { ZYDIS_MNEMONIC_VCVTTSS2USI, 2, 0x164E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0172*/ { ZYDIS_MNEMONIC_VCVTTSS2USI, 2, 0x164E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0173*/ { ZYDIS_MNEMONIC_VCVTTSS2USI, 2, 0x1650, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0174*/ { ZYDIS_MNEMONIC_VCVTTSS2USI, 2, 0x1650, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_SAE, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0175*/ { ZYDIS_MNEMONIC_VCVTTSS2USI, 2, 0x1652, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0175*/ { ZYDIS_MNEMONIC_VCVTTSS2USI, 2, 0x1652, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1F, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0176*/ { ZYDIS_MNEMONIC_VCVTUDQ2PD, 3, 0x0E1F, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*0177*/ { ZYDIS_MNEMONIC_VCVTUDQ2PD, 3, 0x0E22, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_HV, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_BC, ZYDIS_MASK_POLICY_ALLOWED }, /*0178*/ { ZYDIS_MNEMONIC_VCVTUDQ2PD, 3, 0x0E25, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, @@ -4122,16 +4122,16 @@ const ZydisInstructionDefinitionEVEX instructionDefinitionsEVEX[] = /*018F*/ { ZYDIS_MNEMONIC_VCVTUQQ2PS, 3, 0x0E19, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_512, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_ALLOWED }, /*0190*/ { ZYDIS_MNEMONIC_VCVTUQQ2PS, 3, 0x0E1C, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_FV, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_BC, ZYDIS_MASK_POLICY_ALLOWED }, /*0191*/ { ZYDIS_MNEMONIC_VCVTUSI2SD, 3, 0x0E55, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0192*/ { ZYDIS_MNEMONIC_VCVTUSI2SD, 3, 0x0E58, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0192*/ { ZYDIS_MNEMONIC_VCVTUSI2SD, 3, 0x0E58, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0193*/ { ZYDIS_MNEMONIC_VCVTUSI2SD, 3, 0x0E5B, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0194*/ { ZYDIS_MNEMONIC_VCVTUSI2SD, 3, 0x0E5B, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0195*/ { ZYDIS_MNEMONIC_VCVTUSI2SD, 3, 0x0E5E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0195*/ { ZYDIS_MNEMONIC_VCVTUSI2SD, 3, 0x0E5E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0196*/ { ZYDIS_MNEMONIC_VCVTUSI2SS, 3, 0x0E61, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0197*/ { ZYDIS_MNEMONIC_VCVTUSI2SS, 3, 0x0E61, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0198*/ { ZYDIS_MNEMONIC_VCVTUSI2SS, 3, 0x0E64, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0198*/ { ZYDIS_MNEMONIC_VCVTUSI2SS, 3, 0x0E64, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0199*/ { ZYDIS_MNEMONIC_VCVTUSI2SS, 3, 0x0E67, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*019A*/ { ZYDIS_MNEMONIC_VCVTUSI2SS, 3, 0x0E67, 0x00, ZYDIS_IVECTOR_LENGTH_FIXED_128, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_RC, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*019B*/ { ZYDIS_MNEMONIC_VCVTUSI2SS, 3, 0x0E6A, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*019B*/ { ZYDIS_MNEMONIC_VCVTUSI2SS, 3, 0x0E6A, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*019C*/ { ZYDIS_MNEMONIC_VDBPSADBW, 5, 0x012A, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*019D*/ { ZYDIS_MNEMONIC_VDBPSADBW, 5, 0x012F, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_FVM, ZYDIS_IELEMENT_SIZE_16, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*019E*/ { ZYDIS_MNEMONIC_VDBPSADBW, 5, 0x0134, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, @@ -4713,7 +4713,7 @@ const ZydisInstructionDefinitionEVEX instructionDefinitionsEVEX[] = /*03DE*/ { ZYDIS_MNEMONIC_VMOVAPS, 3, 0x0D2C, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*03DF*/ { ZYDIS_MNEMONIC_VMOVAPS, 3, 0x0D29, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_FVM, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*03E0*/ { ZYDIS_MNEMONIC_VMOVD, 2, 0x165A, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*03E1*/ { ZYDIS_MNEMONIC_VMOVD, 2, 0x15D8, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*03E1*/ { ZYDIS_MNEMONIC_VMOVD, 2, 0x15D8, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*03E2*/ { ZYDIS_MNEMONIC_VMOVD, 2, 0x0FC3, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*03E3*/ { ZYDIS_MNEMONIC_VMOVD, 2, 0x0FC6, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*03E4*/ { ZYDIS_MNEMONIC_VMOVDDUP, 3, 0x061F, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, @@ -4817,7 +4817,7 @@ const ZydisInstructionDefinitionEVEX instructionDefinitionsEVEX[] = /*0446*/ { ZYDIS_MNEMONIC_VMOVNTPS, 2, 0x159A, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_FVM, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0447*/ { ZYDIS_MNEMONIC_VMOVNTPS, 2, 0x1666, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_FVM, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0448*/ { ZYDIS_MNEMONIC_VMOVQ, 2, 0x1668, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0449*/ { ZYDIS_MNEMONIC_VMOVQ, 2, 0x15E0, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0449*/ { ZYDIS_MNEMONIC_VMOVQ, 2, 0x15E0, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*044A*/ { ZYDIS_MNEMONIC_VMOVQ, 2, 0x0FC9, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*044B*/ { ZYDIS_MNEMONIC_VMOVQ, 2, 0x0FCC, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*044C*/ { ZYDIS_MNEMONIC_VMOVQ, 2, 0x0A6E, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, @@ -5394,13 +5394,13 @@ const ZydisInstructionDefinitionEVEX instructionDefinitionsEVEX[] = /*0687*/ { ZYDIS_MNEMONIC_VPGATHERQQ, 3, 0x0FF3, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_GSCAT, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_REQUIRED }, /*0688*/ { ZYDIS_MNEMONIC_VPGATHERQQ, 3, 0x0FF6, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_GSCAT, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_REQUIRED }, /*0689*/ { ZYDIS_MNEMONIC_VPINSRB, 4, 0x054B, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*068A*/ { ZYDIS_MNEMONIC_VPINSRB, 4, 0x0547, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_8, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*068A*/ { ZYDIS_MNEMONIC_VPINSRB, 4, 0x0547, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_8, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*068B*/ { ZYDIS_MNEMONIC_VPINSRD, 4, 0x0553, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*068C*/ { ZYDIS_MNEMONIC_VPINSRD, 4, 0x054F, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*068C*/ { ZYDIS_MNEMONIC_VPINSRD, 4, 0x054F, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*068D*/ { ZYDIS_MNEMONIC_VPINSRQ, 4, 0x055B, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*068E*/ { ZYDIS_MNEMONIC_VPINSRQ, 4, 0x0557, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*068E*/ { ZYDIS_MNEMONIC_VPINSRQ, 4, 0x0557, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_64, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*068F*/ { ZYDIS_MNEMONIC_VPINSRW, 4, 0x0563, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, - /*0690*/ { ZYDIS_MNEMONIC_VPINSRW, 4, 0x055F, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_16, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, + /*0690*/ { ZYDIS_MNEMONIC_VPINSRW, 4, 0x055F, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_T1S, ZYDIS_IELEMENT_SIZE_16, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_FORBIDDEN }, /*0691*/ { ZYDIS_MNEMONIC_VPLZCNTD, 3, 0x0807, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, /*0692*/ { ZYDIS_MNEMONIC_VPLZCNTD, 3, 0x080B, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_FV, ZYDIS_IELEMENT_SIZE_32, ZYDIS_EVEX_FUNC_BC, ZYDIS_MASK_POLICY_ALLOWED }, /*0693*/ { ZYDIS_MNEMONIC_VPLZCNTD, 3, 0x080F, 0x00, ZYDIS_IVECTOR_LENGTH_DEFAULT, ZYDIS_TUPLETYPE_INVALID, ZYDIS_IELEMENT_SIZE_INVALID, ZYDIS_EVEX_FUNC_INVALID, ZYDIS_MASK_POLICY_ALLOWED }, diff --git a/src/Decoder.c b/src/Decoder.c index 69d66a6..b4a67b3 100644 --- a/src/Decoder.c +++ b/src/Decoder.c @@ -398,7 +398,7 @@ static ZydisStatus ZydisDecodeEVEX(ZydisDecoderContext* context, ZydisInstructio info->details.evex.L = (data[3] >> 5) & 0x01; info->details.evex.b = (data[3] >> 4) & 0x01; info->details.evex.V2 = (data[3] >> 3) & 0x01; - info->details.evex.aaa = (data[3] >> 0) & 0x07; + info->details.evex.aaa = (data[3] >> 0) & 0x07; // Update internal fields context->cache.W = info->details.evex.W; @@ -411,6 +411,12 @@ static ZydisStatus ZydisDecodeEVEX(ZydisDecoderContext* context, ZydisInstructio context->cache.v_vvvv = ((0x01 & ~info->details.evex.V2) << 4) | (0x0F & ~info->details.evex.vvvv); + if (!info->details.evex.b && (context->cache.LL == 3)) + { + // LL = 3 is only valid for instructions with embedded rounding control + return ZYDIS_STATUS_MALFORMED_EVEX; + } + return ZYDIS_STATUS_SUCCESS; }