From 7531c61332dbd9061b09312e44b62523547e8225 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 14 Jul 2020 10:33:40 +0200 Subject: x86: simplify decode of opcodes valid with (embedded) 66 prefix only The only valid (embedded or explicit) prefix being the data size one (which is a fairly common pattern), avoid going through prefix_table[]. Instead extend the "required prefix" logic to also handle PREFIX_DATA alone in a table entry, now used to identify this case. This requires moving the (adjusted) ->prefix_requirement logic ahead of the printing of stray prefixes, as the latter needs to observe the new setting of PREFIX_DATA in used_prefixes. Also add PREFIX_OPCODE on related entries when previously there was mistakenly no decode step through prefix_table[]. --- opcodes/ChangeLog | 338 +++ opcodes/i386-dis-evex-len.h | 268 +-- opcodes/i386-dis-evex-mod.h | 48 +- opcodes/i386-dis-evex-prefix.h | 950 +------- opcodes/i386-dis-evex-reg.h | 24 +- opcodes/i386-dis-evex-w.h | 268 +-- opcodes/i386-dis-evex.h | 434 ++-- opcodes/i386-dis.c | 4722 +++++++++------------------------------- 8 files changed, 1893 insertions(+), 5159 deletions(-) (limited to 'opcodes') diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 7ade597..6d43129 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,5 +1,343 @@ 2020-07-14 Jan Beulich + * i386-dis.c (PREFIX_0F6C, PREFIX_0F6D, PREFIX_0F73_REG_3, + PREFIX_0F73_REG_7, PREFIX_0F3810, PREFIX_0F3814, PREFIX_0F3815, + PREFIX_0F3817, PREFIX_0F3820, PREFIX_0F3821, PREFIX_0F3822, + PREFIX_0F3823, PREFIX_0F3824, PREFIX_0F3825, PREFIX_0F3828, + PREFIX_0F3829, PREFIX_0F382A, PREFIX_0F382B, PREFIX_0F3830, + PREFIX_0F3831, PREFIX_0F3832, PREFIX_0F3833, PREFIX_0F3834, + PREFIX_0F3835, PREFIX_0F3837, PREFIX_0F3838, PREFIX_0F3839, + PREFIX_0F383A, PREFIX_0F383B, PREFIX_0F383C, PREFIX_0F383D, + PREFIX_0F383E, PREFIX_0F383F, PREFIX_0F3840, PREFIX_0F3841, + PREFIX_0F3880, PREFIX_0F3881, PREFIX_0F3882, PREFIX_0F38CF, + PREFIX_0F38DB, PREFIX_0F38DC, PREFIX_0F38DD, PREFIX_0F38DE, + PREFIX_0F38DF, PREFIX_0F38F5, PREFIX_0F3A08, PREFIX_0F3A09, + PREFIX_0F3A0A, PREFIX_0F3A0B, PREFIX_0F3A0C, PREFIX_0F3A0D, + PREFIX_0F3A0E, PREFIX_0F3A14, PREFIX_0F3A15, PREFIX_0F3A16, + PREFIX_0F3A17, PREFIX_0F3A20, PREFIX_0F3A21, PREFIX_0F3A22, + PREFIX_0F3A40, PREFIX_0F3A41, PREFIX_0F3A42, PREFIX_0F3A44, + PREFIX_0F3A60, PREFIX_0F3A61, PREFIX_0F3A62, PREFIX_0F3A63, + PREFIX_0F3ACE, PREFIX_0F3ACF, PREFIX_0F3ADF, PREFIX_VEX_0F60, + PREFIX_VEX_0F61, PREFIX_VEX_0F62, PREFIX_VEX_0F63, + PREFIX_VEX_0F64, PREFIX_VEX_0F65, PREFIX_VEX_0F66, + PREFIX_VEX_0F67, PREFIX_VEX_0F68, PREFIX_VEX_0F69, + PREFIX_VEX_0F6A, PREFIX_VEX_0F6B, PREFIX_VEX_0F6C, + PREFIX_VEX_0F6D, PREFIX_VEX_0F6E, PREFIX_VEX_0F71_REG_2, + PREFIX_VEX_0F71_REG_4, PREFIX_VEX_0F71_REG_6, + PREFIX_VEX_0F72_REG_2, PREFIX_VEX_0F72_REG_4, + PREFIX_VEX_0F72_REG_6, PREFIX_VEX_0F73_REG_2, + PREFIX_VEX_0F73_REG_3, PREFIX_VEX_0F73_REG_6, + PREFIX_VEX_0F73_REG_7, PREFIX_VEX_0F74, + PREFIX_VEX_0F75, PREFIX_VEX_0F76, PREFIX_VEX_0FC4, + PREFIX_VEX_0FC5, PREFIX_VEX_0FD1, PREFIX_VEX_0FD2, + PREFIX_VEX_0FD3, PREFIX_VEX_0FD4, PREFIX_VEX_0FD5, + PREFIX_VEX_0FD6, PREFIX_VEX_0FD7, PREFIX_VEX_0FD8, + PREFIX_VEX_0FD9, PREFIX_VEX_0FDA, PREFIX_VEX_0FDB, + PREFIX_VEX_0FDC, PREFIX_VEX_0FDD, PREFIX_VEX_0FDE, + PREFIX_VEX_0FDF, PREFIX_VEX_0FE0, PREFIX_VEX_0FE1, + PREFIX_VEX_0FE2, PREFIX_VEX_0FE3, PREFIX_VEX_0FE4, + PREFIX_VEX_0FE5, PREFIX_VEX_0FE7, PREFIX_VEX_0FE8, + PREFIX_VEX_0FE9, PREFIX_VEX_0FEA, PREFIX_VEX_0FEB, + PREFIX_VEX_0FEC, PREFIX_VEX_0FED, PREFIX_VEX_0FEE, + PREFIX_VEX_0FEF, PREFIX_VEX_0FF1, PREFIX_VEX_0FF2, + PREFIX_VEX_0FF3, PREFIX_VEX_0FF4, PREFIX_VEX_0FF5, + PREFIX_VEX_0FF6, PREFIX_VEX_0FF7, PREFIX_VEX_0FF8, + PREFIX_VEX_0FF9, PREFIX_VEX_0FFA, PREFIX_VEX_0FFB, + PREFIX_VEX_0FFC, PREFIX_VEX_0FFD, PREFIX_VEX_0FFE, + PREFIX_VEX_0F3800, PREFIX_VEX_0F3801, PREFIX_VEX_0F3802, + PREFIX_VEX_0F3803, PREFIX_VEX_0F3804, PREFIX_VEX_0F3805, + PREFIX_VEX_0F3806, PREFIX_VEX_0F3807, PREFIX_VEX_0F3808, + PREFIX_VEX_0F3809, PREFIX_VEX_0F380A, PREFIX_VEX_0F380B, + PREFIX_VEX_0F380C, PREFIX_VEX_0F380D, PREFIX_VEX_0F380E, + PREFIX_VEX_0F380F, PREFIX_VEX_0F3813, PREFIX_VEX_0F3816, + PREFIX_VEX_0F3817, PREFIX_VEX_0F3818, PREFIX_VEX_0F3819, + PREFIX_VEX_0F381A, PREFIX_VEX_0F381C, PREFIX_VEX_0F381D, + PREFIX_VEX_0F381E, PREFIX_VEX_0F3820, PREFIX_VEX_0F3821, + PREFIX_VEX_0F3822, PREFIX_VEX_0F3823, PREFIX_VEX_0F3824, + PREFIX_VEX_0F3825, PREFIX_VEX_0F3828, PREFIX_VEX_0F3829, + PREFIX_VEX_0F382A, PREFIX_VEX_0F382B, PREFIX_VEX_0F382C, + PREFIX_VEX_0F382D, PREFIX_VEX_0F382E, PREFIX_VEX_0F382F, + PREFIX_VEX_0F3830, PREFIX_VEX_0F3831, PREFIX_VEX_0F3832, + PREFIX_VEX_0F3833, PREFIX_VEX_0F3834, PREFIX_VEX_0F3835, + PREFIX_VEX_0F3836, PREFIX_VEX_0F3837, PREFIX_VEX_0F3838, + PREFIX_VEX_0F3839, PREFIX_VEX_0F383A, PREFIX_VEX_0F383B, + PREFIX_VEX_0F383C, PREFIX_VEX_0F383D, PREFIX_VEX_0F383E, + PREFIX_VEX_0F383F, PREFIX_VEX_0F3840, PREFIX_VEX_0F3841, + PREFIX_VEX_0F3845, PREFIX_VEX_0F3846, PREFIX_VEX_0F3847, + PREFIX_VEX_0F3858, PREFIX_VEX_0F3859, PREFIX_VEX_0F385A, + PREFIX_VEX_0F3878, PREFIX_VEX_0F3879, PREFIX_VEX_0F388C, + PREFIX_VEX_0F388E, PREFIX_VEX_0F3890, PREFIX_VEX_0F3891, + PREFIX_VEX_0F3892, PREFIX_VEX_0F3893, PREFIX_VEX_0F3896, + PREFIX_VEX_0F3897, PREFIX_VEX_0F3898, PREFIX_VEX_0F3899, + PREFIX_VEX_0F389A, PREFIX_VEX_0F389B, PREFIX_VEX_0F389C, + PREFIX_VEX_0F389D, PREFIX_VEX_0F389E, PREFIX_VEX_0F389F, + PREFIX_VEX_0F38A6, PREFIX_VEX_0F38A7, PREFIX_VEX_0F38A8, + PREFIX_VEX_0F38A9, PREFIX_VEX_0F38AA, PREFIX_VEX_0F38AB, + PREFIX_VEX_0F38AC, PREFIX_VEX_0F38AD, PREFIX_VEX_0F38AE, + PREFIX_VEX_0F38AF, PREFIX_VEX_0F38B6, PREFIX_VEX_0F38B7, + PREFIX_VEX_0F38B8, PREFIX_VEX_0F38B9, PREFIX_VEX_0F38BA, + PREFIX_VEX_0F38BB, PREFIX_VEX_0F38BC, PREFIX_VEX_0F38BD, + PREFIX_VEX_0F38BE, PREFIX_VEX_0F38BF, PREFIX_VEX_0F38CF, + PREFIX_VEX_0F38DB, PREFIX_VEX_0F38DC, PREFIX_VEX_0F38DD, + PREFIX_VEX_0F38DE, PREFIX_VEX_0F38DF, PREFIX_VEX_0F3A00, + PREFIX_VEX_0F3A01, PREFIX_VEX_0F3A02, PREFIX_VEX_0F3A04, + PREFIX_VEX_0F3A05, PREFIX_VEX_0F3A06, PREFIX_VEX_0F3A08, + PREFIX_VEX_0F3A09, PREFIX_VEX_0F3A0A, PREFIX_VEX_0F3A0B, + PREFIX_VEX_0F3A0C, PREFIX_VEX_0F3A0D, PREFIX_VEX_0F3A0E, + PREFIX_VEX_0F3A0F, PREFIX_VEX_0F3A14, PREFIX_VEX_0F3A15, + PREFIX_VEX_0F3A16, PREFIX_VEX_0F3A17, PREFIX_VEX_0F3A18, + PREFIX_VEX_0F3A19, PREFIX_VEX_0F3A1D, PREFIX_VEX_0F3A20, + PREFIX_VEX_0F3A21, PREFIX_VEX_0F3A22, PREFIX_VEX_0F3A30, + PREFIX_VEX_0F3A31, PREFIX_VEX_0F3A32, PREFIX_VEX_0F3A33, + PREFIX_VEX_0F3A38, PREFIX_VEX_0F3A39, PREFIX_VEX_0F3A40, + PREFIX_VEX_0F3A41, PREFIX_VEX_0F3A42, PREFIX_VEX_0F3A44, + PREFIX_VEX_0F3A46, PREFIX_VEX_0F3A48, PREFIX_VEX_0F3A49, + PREFIX_VEX_0F3A4A, PREFIX_VEX_0F3A4B, PREFIX_VEX_0F3A4C, + PREFIX_VEX_0F3A5C, PREFIX_VEX_0F3A5D, PREFIX_VEX_0F3A5E, + PREFIX_VEX_0F3A5F, PREFIX_VEX_0F3A60, PREFIX_VEX_0F3A61, + PREFIX_VEX_0F3A62, PREFIX_VEX_0F3A63, PREFIX_VEX_0F3A68, + PREFIX_VEX_0F3A69, PREFIX_VEX_0F3A6A, PREFIX_VEX_0F3A6B, + PREFIX_VEX_0F3A6C, PREFIX_VEX_0F3A6D, PREFIX_VEX_0F3A6E, + PREFIX_VEX_0F3A6F, PREFIX_VEX_0F3A78, PREFIX_VEX_0F3A79, + PREFIX_VEX_0F3A7A, PREFIX_VEX_0F3A7B, PREFIX_VEX_0F3A7C, + PREFIX_VEX_0F3A7D, PREFIX_VEX_0F3A7E, PREFIX_VEX_0F3A7F, + PREFIX_VEX_0F3ACE, PREFIX_VEX_0F3ACF, PREFIX_VEX_0F3ADF, + PREFIX_EVEX_0F64, PREFIX_EVEX_0F65, PREFIX_EVEX_0F66, + PREFIX_EVEX_0F6E, PREFIX_EVEX_0F71_REG_2, + PREFIX_EVEX_0F71_REG_4, PREFIX_EVEX_0F71_REG_6, + PREFIX_EVEX_0F72_REG_0, PREFIX_EVEX_0F72_REG_1, + PREFIX_EVEX_0F72_REG_2, PREFIX_EVEX_0F72_REG_4, + PREFIX_EVEX_0F72_REG_6, PREFIX_EVEX_0F73_REG_2, + PREFIX_EVEX_0F73_REG_3, PREFIX_EVEX_0F73_REG_6, + PREFIX_EVEX_0F73_REG_7, PREFIX_EVEX_0F74, PREFIX_EVEX_0F75, + PREFIX_EVEX_0F76, PREFIX_EVEX_0FC4, PREFIX_EVEX_0FC5, + PREFIX_EVEX_0FD6, PREFIX_EVEX_0FDB, PREFIX_EVEX_0FDF, + PREFIX_EVEX_0FE2, PREFIX_EVEX_0FE7, PREFIX_EVEX_0FEB, + PREFIX_EVEX_0FEF, PREFIX_EVEX_0F380D, PREFIX_EVEX_0F3816, + PREFIX_EVEX_0F3819, PREFIX_EVEX_0F381A, PREFIX_EVEX_0F381B, + PREFIX_EVEX_0F381E, PREFIX_EVEX_0F381F, PREFIX_EVEX_0F382C, + PREFIX_EVEX_0F382D, PREFIX_EVEX_0F3836, PREFIX_EVEX_0F3837, + PREFIX_EVEX_0F383B, PREFIX_EVEX_0F383D, PREFIX_EVEX_0F383F, + PREFIX_EVEX_0F3840, PREFIX_EVEX_0F3842, PREFIX_EVEX_0F3843, + PREFIX_EVEX_0F3844, PREFIX_EVEX_0F3845, PREFIX_EVEX_0F3846, + PREFIX_EVEX_0F3847, PREFIX_EVEX_0F384C, PREFIX_EVEX_0F384D, + PREFIX_EVEX_0F384E, PREFIX_EVEX_0F384F, PREFIX_EVEX_0F3850, + PREFIX_EVEX_0F3851, PREFIX_EVEX_0F3854, PREFIX_EVEX_0F3855, + PREFIX_EVEX_0F3859, PREFIX_EVEX_0F385A, PREFIX_EVEX_0F385B, + PREFIX_EVEX_0F3862, PREFIX_EVEX_0F3863, PREFIX_EVEX_0F3864, + PREFIX_EVEX_0F3865, PREFIX_EVEX_0F3866, PREFIX_EVEX_0F3870, + PREFIX_EVEX_0F3871, PREFIX_EVEX_0F3873, PREFIX_EVEX_0F3875, + PREFIX_EVEX_0F3876, PREFIX_EVEX_0F3877, PREFIX_EVEX_0F387A, + PREFIX_EVEX_0F387B, PREFIX_EVEX_0F387C, PREFIX_EVEX_0F387D, + PREFIX_EVEX_0F387E, PREFIX_EVEX_0F387F, PREFIX_EVEX_0F3883, + PREFIX_EVEX_0F3888, PREFIX_EVEX_0F3889, PREFIX_EVEX_0F388A, + PREFIX_EVEX_0F388B, PREFIX_EVEX_0F388D, PREFIX_EVEX_0F388F, + PREFIX_EVEX_0F3890, PREFIX_EVEX_0F3891, PREFIX_EVEX_0F3892, + PREFIX_EVEX_0F3893, PREFIX_EVEX_0F38A0, PREFIX_EVEX_0F38A1, + PREFIX_EVEX_0F38A2, PREFIX_EVEX_0F38A3, PREFIX_EVEX_0F38B4, + PREFIX_EVEX_0F38B5, PREFIX_EVEX_0F38C4, + PREFIX_EVEX_0F38C6_REG_1, PREFIX_EVEX_0F38C6_REG_2, + PREFIX_EVEX_0F38C6_REG_5, PREFIX_EVEX_0F38C6_REG_6, + PREFIX_EVEX_0F38C7_REG_1, PREFIX_EVEX_0F38C7_REG_2, + PREFIX_EVEX_0F38C7_REG_5, PREFIX_EVEX_0F38C7_REG_6, + PREFIX_EVEX_0F38C8, PREFIX_EVEX_0F38CA, PREFIX_EVEX_0F38CB, + PREFIX_EVEX_0F38CC, PREFIX_EVEX_0F38CD, PREFIX_EVEX_0F3A00, + PREFIX_EVEX_0F3A01, PREFIX_EVEX_0F3A03, PREFIX_EVEX_0F3A05, + PREFIX_EVEX_0F3A08, PREFIX_EVEX_0F3A09, PREFIX_EVEX_0F3A0A, + PREFIX_EVEX_0F3A0B, PREFIX_EVEX_0F3A14, PREFIX_EVEX_0F3A15, + PREFIX_EVEX_0F3A16, PREFIX_EVEX_0F3A17, PREFIX_EVEX_0F3A18, + PREFIX_EVEX_0F3A19, PREFIX_EVEX_0F3A1A, PREFIX_EVEX_0F3A1B, + PREFIX_EVEX_0F3A1E, PREFIX_EVEX_0F3A1F, PREFIX_EVEX_0F3A20, + PREFIX_EVEX_0F3A21, PREFIX_EVEX_0F3A22, PREFIX_EVEX_0F3A23, + PREFIX_EVEX_0F3A25, PREFIX_EVEX_0F3A26, PREFIX_EVEX_0F3A27, + PREFIX_EVEX_0F3A38, PREFIX_EVEX_0F3A39, PREFIX_EVEX_0F3A3A, + PREFIX_EVEX_0F3A3B, PREFIX_EVEX_0F3A3E, PREFIX_EVEX_0F3A3F, + PREFIX_EVEX_0F3A42, PREFIX_EVEX_0F3A43, PREFIX_EVEX_0F3A50, + PREFIX_EVEX_0F3A51, PREFIX_EVEX_0F3A54, PREFIX_EVEX_0F3A55, + PREFIX_EVEX_0F3A56, PREFIX_EVEX_0F3A57, PREFIX_EVEX_0F3A66, + PREFIX_EVEX_0F3A67, PREFIX_EVEX_0F3A70, PREFIX_EVEX_0F3A71, + PREFIX_EVEX_0F3A72, PREFIX_EVEX_0F3A73): Delete. + (MOD_0F382A_PREFIX_2, MOD_0F38F5_PREFIX_2, + MOD_VEX_0FD7_PREFIX_2, MOD_VEX_0FE7_PREFIX_2, + MOD_VEX_0F381A_PREFIX_2, MOD_VEX_0F382A_PREFIX_2, + MOD_VEX_0F382C_PREFIX_2, MOD_VEX_0F382D_PREFIX_2, + MOD_VEX_0F382E_PREFIX_2, MOD_VEX_0F382F_PREFIX_2, + MOD_VEX_0F385A_PREFIX_2, MOD_VEX_0F388C_PREFIX_2, + MOD_VEX_0F388E_PREFIX_2, MOD_VEX_W_0_0F3A30_P_2_LEN_0, + MOD_VEX_W_1_0F3A30_P_2_LEN_0, MOD_VEX_W_0_0F3A31_P_2_LEN_0, + MOD_VEX_W_1_0F3A31_P_2_LEN_0, MOD_VEX_W_0_0F3A32_P_2_LEN_0, + MOD_VEX_W_1_0F3A32_P_2_LEN_0, MOD_VEX_W_0_0F3A33_P_2_LEN_0, + MOD_VEX_W_1_0F3A33_P_2_LEN_0, MOD_EVEX_0F381A_P_2_W_0, + MOD_EVEX_0F381A_P_2_W_1, MOD_EVEX_0F381B_P_2_W_0, + MOD_EVEX_0F381B_P_2_W_1, MOD_EVEX_0F385A_P_2_W_0, + MOD_EVEX_0F385A_P_2_W_1, MOD_EVEX_0F385B_P_2_W_0, + MOD_EVEX_0F385B_P_2_W_1, VEX_LEN_0F6E_P_2, + VEX_LEN_0FC4_P_2, VEX_LEN_0FC5_P_2, VEX_LEN_0FD6_P_2, + VEX_LEN_0FF7_P_2, VEX_LEN_0F3816_P_2, VEX_LEN_0F3819_P_2, + VEX_LEN_0F381A_P_2_M_0, VEX_LEN_0F3836_P_2, + VEX_LEN_0F3841_P_2, VEX_LEN_0F385A_P_2_M_0, + VEX_LEN_0F38DB_P_2, VEX_LEN_0F3A00_P_2, VEX_LEN_0F3A01_P_2, + VEX_LEN_0F3A06_P_2, VEX_LEN_0F3A14_P_2, VEX_LEN_0F3A15_P_2, + VEX_LEN_0F3A16_P_2, VEX_LEN_0F3A17_P_2, VEX_LEN_0F3A18_P_2, + VEX_LEN_0F3A19_P_2, VEX_LEN_0F3A20_P_2, VEX_LEN_0F3A21_P_2, + VEX_LEN_0F3A22_P_2, VEX_LEN_0F3A30_P_2, VEX_LEN_0F3A31_P_2, + VEX_LEN_0F3A32_P_2, VEX_LEN_0F3A33_P_2, VEX_LEN_0F3A38_P_2, + VEX_LEN_0F3A39_P_2, VEX_LEN_0F3A41_P_2, VEX_LEN_0F3A46_P_2, + VEX_LEN_0F3A60_P_2, VEX_LEN_0F3A61_P_2, VEX_LEN_0F3A62_P_2, + VEX_LEN_0F3A63_P_2, VEX_LEN_0F3ADF_P_2, EVEX_LEN_0F6E_P_2, + EVEX_LEN_0FC4_P_2, EVEX_LEN_0FC5_P_2, EVEX_LEN_0FD6_P_2, + EVEX_LEN_0F3816_P_2, EVEX_LEN_0F3819_P_2_W_0, + EVEX_LEN_0F3819_P_2_W_1, EVEX_LEN_0F381A_P_2_W_0_M_0, + EVEX_LEN_0F381A_P_2_W_1_M_0, EVEX_LEN_0F381B_P_2_W_0_M_0, + EVEX_LEN_0F381B_P_2_W_1_M_0, EVEX_LEN_0F3836_P_2, + EVEX_LEN_0F385A_P_2_W_0_M_0, EVEX_LEN_0F385A_P_2_W_1_M_0, + EVEX_LEN_0F385B_P_2_W_0_M_0, EVEX_LEN_0F385B_P_2_W_1_M_0, + EVEX_LEN_0F38C6_REG_1_PREFIX_2, EVEX_LEN_0F38C6_REG_2_PREFIX_2, + EVEX_LEN_0F38C6_REG_5_PREFIX_2, EVEX_LEN_0F38C6_REG_6_PREFIX_2, + EVEX_LEN_0F38C7_R_1_P_2_W_0, EVEX_LEN_0F38C7_R_1_P_2_W_1, + EVEX_LEN_0F38C7_R_2_P_2_W_0, EVEX_LEN_0F38C7_R_2_P_2_W_1, + EVEX_LEN_0F38C7_R_5_P_2_W_0, EVEX_LEN_0F38C7_R_5_P_2_W_1, + EVEX_LEN_0F38C7_R_6_P_2_W_0, EVEX_LEN_0F38C7_R_6_P_2_W_1, + EVEX_LEN_0F3A00_P_2_W_1, EVEX_LEN_0F3A01_P_2_W_1, + EVEX_LEN_0F3A14_P_2, EVEX_LEN_0F3A15_P_2, EVEX_LEN_0F3A16_P_2, + EVEX_LEN_0F3A17_P_2, EVEX_LEN_0F3A18_P_2_W_0, + EVEX_LEN_0F3A18_P_2_W_1, EVEX_LEN_0F3A19_P_2_W_0, + EVEX_LEN_0F3A19_P_2_W_1, EVEX_LEN_0F3A1A_P_2_W_0, + EVEX_LEN_0F3A1A_P_2_W_1, EVEX_LEN_0F3A1B_P_2_W_0, + EVEX_LEN_0F3A1B_P_2_W_1, EVEX_LEN_0F3A20_P_2, + EVEX_LEN_0F3A21_P_2_W_0, EVEX_LEN_0F3A22_P_2, + EVEX_LEN_0F3A23_P_2_W_0, EVEX_LEN_0F3A23_P_2_W_1, + EVEX_LEN_0F3A38_P_2_W_0, EVEX_LEN_0F3A38_P_2_W_1, + EVEX_LEN_0F3A39_P_2_W_0, EVEX_LEN_0F3A39_P_2_W_1, + EVEX_LEN_0F3A3A_P_2_W_0, EVEX_LEN_0F3A3A_P_2_W_1, + EVEX_LEN_0F3A3B_P_2_W_0, EVEX_LEN_0F3A3B_P_2_W_1, + EVEX_LEN_0F3A43_P_2_W_0, EVEX_LEN_0F3A43_P_2_W_1 + VEX_W_0F380C_P_2, VEX_W_0F380D_P_2, VEX_W_0F380E_P_2, + VEX_W_0F380F_P_2, VEX_W_0F3813_P_2, VEX_W_0F3816_P_2, + VEX_W_0F3818_P_2, VEX_W_0F3819_P_2, + VEX_W_0F381A_P_2_M_0_L_0, VEX_W_0F382C_P_2_M_0, + VEX_W_0F382D_P_2_M_0, VEX_W_0F382E_P_2_M_0, + VEX_W_0F382F_P_2_M_0, VEX_W_0F3836_P_2, + VEX_W_0F3846_P_2, VEX_W_0F3858_P_2, VEX_W_0F3859_P_2, + VEX_W_0F385A_P_2_M_0_L_0, VEX_W_0F3878_P_2, + VEX_W_0F3879_P_2, VEX_W_0F38CF_P_2, VEX_W_0F3A00_P_2, + VEX_W_0F3A01_P_2, VEX_W_0F3A02_P_2, VEX_W_0F3A04_P_2, + VEX_W_0F3A05_P_2, VEX_W_0F3A06_P_2_L_0, + VEX_W_0F3A18_P_2_L_0, VEX_W_0F3A19_P_2_L_0, + VEX_W_0F3A1D_P_2, VEX_W_0F3A30_P_2_LEN_0, + VEX_W_0F3A31_P_2_LEN_0, VEX_W_0F3A32_P_2_LEN_0, + VEX_W_0F3A33_P_2_LEN_0, VEX_W_0F3A38_P_2_L_0, + VEX_W_0F3A39_P_2_L_0, VEX_W_0F3A46_P_2_L_0, + VEX_W_0F3A4A_P_2, VEX_W_0F3A4B_P_2, VEX_W_0F3A4C_P_2, + VEX_W_0F3ACE_P_2, VEX_W_0F3ACF_P_2, EVEX_W_0F66_P_2, + EVEX_W_0F72_R_2_P_2, EVEX_W_0F72_R_6_P_2, + EVEX_W_0F73_R_2_P_2, EVEX_W_0F73_R_6_P_2, + EVEX_W_0F76_P_2, EVEX_W_0FD6_P_2, EVEX_W_0FE7_P_2, + EVEX_W_0F380D_P_2, EVEX_W_0F3819_P_2, + EVEX_W_0F381A_P_2, EVEX_W_0F381B_P_2, + EVEX_W_0F381E_P_2, EVEX_W_0F381F_P_2, + EVEX_W_0F3837_P_2, EVEX_W_0F3859_P_2, + EVEX_W_0F385A_P_2, EVEX_W_0F385B_P_2, + EVEX_W_0F3870_P_2, EVEX_W_0F387A_P_2, + EVEX_W_0F387B_P_2, EVEX_W_0F3883_P_2, + EVEX_W_0F3891_P_2, EVEX_W_0F3893_P_2, + EVEX_W_0F38A1_P_2, EVEX_W_0F38A3_P_2, + EVEX_W_0F38C7_R_1_P_2, EVEX_W_0F38C7_R_2_P_2, + EVEX_W_0F38C7_R_5_P_2, EVEX_W_0F38C7_R_6_P_2, + EVEX_W_0F3A00_P_2, EVEX_W_0F3A01_P_2, + EVEX_W_0F3A05_P_2, EVEX_W_0F3A08_P_2, + EVEX_W_0F3A09_P_2, EVEX_W_0F3A0A_P_2, + EVEX_W_0F3A0B_P_2, EVEX_W_0F3A18_P_2, + EVEX_W_0F3A19_P_2, EVEX_W_0F3A1A_P_2, + EVEX_W_0F3A1B_P_2, EVEX_W_0F3A21_P_2, + EVEX_W_0F3A23_P_2, EVEX_W_0F3A38_P_2, + EVEX_W_0F3A39_P_2, EVEX_W_0F3A3A_P_2, + EVEX_W_0F3A3B_P_2, EVEX_W_0F3A42_P_2, + EVEX_W_0F3A43_P_2, EVEX_W_0F3A70_P_2, + EVEX_W_0F3A72_P_2): Rename to ... + (MOD_0F382A, MOD_0F38F5, MOD_VEX_0FD7, MOD_VEX_0FE7, + MOD_VEX_0F381A, MOD_VEX_0F382A, MOD_VEX_0F382C, MOD_VEX_0F382D, + MOD_VEX_0F382E, MOD_VEX_0F382F, MOD_VEX_0F385A, MOD_VEX_0F388C, + MOD_VEX_0F388E, MOD_VEX_0F3A30_L_0_W_0, + MOD_VEX_0F3A30_L_0_W_1, MOD_VEX_0F3A31_L_0_W_0, + MOD_VEX_0F3A31_L_0_W_1, MOD_VEX_0F3A32_L_0_W_0, + MOD_VEX_0F3A32_L_0_W_1, MOD_VEX_0F3A33_L_0_W_0, + MOD_VEX_0F3A33_L_0_W_1, MOD_EVEX_0F381A_W_0, + MOD_EVEX_0F381A_W_1, MOD_EVEX_0F381B_W_0, MOD_EVEX_0F381B_W_1, + MOD_EVEX_0F385A_W_0, MOD_EVEX_0F385A_W_1, MOD_EVEX_0F385B_W_0, + MOD_EVEX_0F385B_W_1, VEX_LEN_0F6E, VEX_LEN_0FC4, VEX_LEN_0FC5, + VEX_LEN_0FD6, VEX_LEN_0FF7, VEX_LEN_0F3816, VEX_LEN_0F3819, + VEX_LEN_0F381A_M_0, VEX_LEN_0F3836, VEX_LEN_0F3841, + VEX_LEN_0F385A_M_0, VEX_LEN_0F38DB, VEX_LEN_0F3A00, + VEX_LEN_0F3A01, VEX_LEN_0F3A06, VEX_LEN_0F3A14, VEX_LEN_0F3A15, + VEX_LEN_0F3A16, VEX_LEN_0F3A17, VEX_LEN_0F3A18, VEX_LEN_0F3A19, + VEX_LEN_0F3A20, VEX_LEN_0F3A21, VEX_LEN_0F3A22, VEX_LEN_0F3A30, + VEX_LEN_0F3A31, VEX_LEN_0F3A32, VEX_LEN_0F3A33, VEX_LEN_0F3A38, + VEX_LEN_0F3A39, VEX_LEN_0F3A41, VEX_LEN_0F3A46, VEX_LEN_0F3A60, + VEX_LEN_0F3A61, VEX_LEN_0F3A62, VEX_LEN_0F3A63, VEX_LEN_0F3ADF, + EVEX_LEN_0F6E, EVEX_LEN_0FC4, EVEX_LEN_0FC5, EVEX_LEN_0FD6, + EVEX_LEN_0F3816, EVEX_LEN_0F3819_W_0, EVEX_LEN_0F3819_W_1, + EVEX_LEN_0F381A_W_0_M_0, EVEX_LEN_0F381A_W_1_M_0, + EVEX_LEN_0F381B_W_0_M_0, EVEX_LEN_0F381B_W_1_M_0, + EVEX_LEN_0F3836, EVEX_LEN_0F385A_W_0_M_0, + EVEX_LEN_0F385A_W_1_M_0, EVEX_LEN_0F385B_W_0_M_0, + EVEX_LEN_0F385B_W_1_M_0, EVEX_LEN_0F38C6_R_1_M_0, + EVEX_LEN_0F38C6_R_2_M_0, EVEX_LEN_0F38C6_R_5_M_0, + EVEX_LEN_0F38C6_R_6_M_0, EVEX_LEN_0F38C7_R_1_M_0_W_0, + EVEX_LEN_0F38C7_R_1_M_0_W_1, EVEX_LEN_0F38C7_R_2_M_0_W_0, + EVEX_LEN_0F38C7_R_2_M_0_W_1, EVEX_LEN_0F38C7_R_5_M_0_W_0, + EVEX_LEN_0F38C7_R_5_M_0_W_1, EVEX_LEN_0F38C7_R_6_M_0_W_0, + EVEX_LEN_0F38C7_R_6_M_0_W_1, EVEX_LEN_0F3A00_W_1, + EVEX_LEN_0F3A01_W_1, EVEX_LEN_0F3A14, EVEX_LEN_0F3A15, + EVEX_LEN_0F3A16, EVEX_LEN_0F3A17, EVEX_LEN_0F3A18_W_0, + EVEX_LEN_0F3A18_W_1, EVEX_LEN_0F3A19_W_0, + EVEX_LEN_0F3A19_W_1, EVEX_LEN_0F3A1A_W_0, + EVEX_LEN_0F3A1A_W_1, EVEX_LEN_0F3A1B_W_0, + EVEX_LEN_0F3A1B_W_1, EVEX_LEN_0F3A20, EVEX_LEN_0F3A21_W_0, + EVEX_LEN_0F3A22, EVEX_LEN_0F3A23_W_0, EVEX_LEN_0F3A23_W_1, + EVEX_LEN_0F3A38_W_0, EVEX_LEN_0F3A38_W_1, + EVEX_LEN_0F3A39_W_0, EVEX_LEN_0F3A39_W_1, + EVEX_LEN_0F3A3A_W_0, EVEX_LEN_0F3A3A_W_1, + EVEX_LEN_0F3A3B_W_0, EVEX_LEN_0F3A3B_W_1, + EVEX_LEN_0F3A43_W_0, EVEX_LEN_0F3A43_W_1 + VEX_W_0F380C, VEX_W_0F380D, VEX_W_0F380E, VEX_W_0F380F, + VEX_W_0F3813, VEX_W_0F3816_L_1, VEX_W_0F3818, + VEX_W_0F3819_L_1, VEX_W_0F381A_M_0_L_1, VEX_W_0F382C_M_0, + VEX_W_0F382D_M_0, VEX_W_0F382E_M_0, VEX_W_0F382F_M_0, + VEX_W_0F3836, VEX_W_0F3846, VEX_W_0F3858, VEX_W_0F3859, + VEX_W_0F385A_M_0_L_0, VEX_W_0F3878, VEX_W_0F3879, + VEX_W_0F38CF, VEX_W_0F3A00_L_1, VEX_W_0F3A01_L_1, + VEX_W_0F3A02, VEX_W_0F3A04, VEX_W_0F3A05, VEX_W_0F3A06_L_1, + VEX_W_0F3A18_L_1, VEX_W_0F3A19_L_1, VEX_W_0F3A1D, + VEX_W_0F3A30_L_0, VEX_W_0F3A31_L_0, VEX_W_0F3A32_L_0, + VEX_W_0F3A33_L_0, VEX_W_0F3A38_L_1, VEX_W_0F3A39_L_1, + VEX_W_0F3A46_L_1, VEX_W_0F3A4A, VEX_W_0F3A4B, VEX_W_0F3A4C, + VEX_W_0F3ACE, VEX_W_0F3ACF, EVEX_W_0F66, EVEX_W_0F72_R_2, + EVEX_W_0F72_R_6, EVEX_W_0F73_R_2, EVEX_W_0F73_R_6, + EVEX_W_0F76, EVEX_W_0FD6_L_0, EVEX_W_0FE7, EVEX_W_0F380D, + EVEX_W_0F3819, EVEX_W_0F381A, EVEX_W_0F381B, EVEX_W_0F381E, + EVEX_W_0F381F, EVEX_W_0F3837, EVEX_W_0F3859, EVEX_W_0F385A, + EVEX_W_0F385B, EVEX_W_0F3870, EVEX_W_0F387A, EVEX_W_0F387B, + EVEX_W_0F3883, EVEX_W_0F3891, EVEX_W_0F3893, EVEX_W_0F38A1, + EVEX_W_0F38A3, EVEX_W_0F38C7_R_1_M_0, + EVEX_W_0F38C7_R_2_M_0, EVEX_W_0F38C7_R_5_M_0, + EVEX_W_0F38C7_R_6_M_0, EVEX_W_0F3A00, EVEX_W_0F3A01, + EVEX_W_0F3A05, EVEX_W_0F3A08, EVEX_W_0F3A09, EVEX_W_0F3A0A, + EVEX_W_0F3A0B, EVEX_W_0F3A18, EVEX_W_0F3A19, EVEX_W_0F3A1A, + EVEX_W_0F3A1B, EVEX_W_0F3A21, EVEX_W_0F3A23, EVEX_W_0F3A38, + EVEX_W_0F3A39, EVEX_W_0F3A3A, EVEX_W_0F3A3B, EVEX_W_0F3A42, + EVEX_W_0F3A43, EVEX_W_0F3A70, EVEX_W_0F3A72): ... these + respectively. + (dis386_twobyte, three_byte_table, vex_table, vex_len_table, + vex_w_table, mod_table): Replace / remove respective entries. + (print_insn): Move up dp->prefix_requirement handling. Handle + PREFIX_DATA. + * i386-dis-evex.h, i386-dis-evex-len.h, i386-dis-evex-mod.h, + i386-dis-evex-prefix.h, i386-dis-evex-reg.h, i386-dis-evex-w.h: + Replace / remove respective entries. + +2020-07-14 Jan Beulich + * i386-dis.c (PREFIX_EVEX_0F2C, PREFIX_EVEX_0F2D, PREFIX_EVEX_0F2E, PREFIX_EVEX_0F2F): Delete. (prefix_table): Add EXxEVexS operand to vcvttss2si, vcvttsd2si, diff --git a/opcodes/i386-dis-evex-len.h b/opcodes/i386-dis-evex-len.h index 51f19dc..ebe0945 100644 --- a/opcodes/i386-dis-evex-len.h +++ b/opcodes/i386-dis-evex-len.h @@ -1,7 +1,7 @@ static const struct dis386 evex_len_table[][3] = { - /* EVEX_LEN_0F6E_P_2 */ + /* EVEX_LEN_0F6E */ { - { "vmovK", { XMScalar, Edq }, 0 }, + { "vmovK", { XMScalar, Edq }, PREFIX_DATA }, }, /* EVEX_LEN_0F7E_P_1 */ @@ -14,61 +14,61 @@ static const struct dis386 evex_len_table[][3] = { { "vmovK", { Edq, XMScalar }, 0 }, }, - /* EVEX_LEN_0FC4_P_2 */ + /* EVEX_LEN_0FC4 */ { - { "vpinsrw", { XM, Vex, Edqw, Ib }, 0 }, + { "vpinsrw", { XM, Vex, Edqw, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0FC5_P_2 */ + /* EVEX_LEN_0FC5 */ { - { "vpextrw", { Gdq, XS, Ib }, 0 }, + { "vpextrw", { Gdq, XS, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0FD6_P_2 */ + /* EVEX_LEN_0FD6 */ { - { VEX_W_TABLE (EVEX_W_0FD6_P_2) }, + { VEX_W_TABLE (EVEX_W_0FD6_L_0) }, }, - /* EVEX_LEN_0F3816_P_2 */ + /* EVEX_LEN_0F3816 */ { { Bad_Opcode }, - { "vpermp%XW", { XM, Vex, EXx }, 0 }, - { "vpermp%XW", { XM, Vex, EXx }, 0 }, + { "vpermp%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpermp%XW", { XM, Vex, EXx }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3819_P_2_W_0 */ + /* EVEX_LEN_0F3819_W_0 */ { { Bad_Opcode }, - { "vbroadcastf32x2", { XM, EXxmm_mq }, 0 }, - { "vbroadcastf32x2", { XM, EXxmm_mq }, 0 }, + { "vbroadcastf32x2", { XM, EXxmm_mq }, PREFIX_DATA }, + { "vbroadcastf32x2", { XM, EXxmm_mq }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3819_P_2_W_1 */ + /* EVEX_LEN_0F3819_W_1 */ { { Bad_Opcode }, - { "vbroadcastsd", { XM, EXxmm_mq }, 0 }, - { "vbroadcastsd", { XM, EXxmm_mq }, 0 }, + { "vbroadcastsd", { XM, EXxmm_mq }, PREFIX_DATA }, + { "vbroadcastsd", { XM, EXxmm_mq }, PREFIX_DATA }, }, - /* EVEX_LEN_0F381A_P_2_W_0_M_0 */ + /* EVEX_LEN_0F381A_W_0_M_0 */ { { Bad_Opcode }, - { "vbroadcastf32x4", { XM, EXxmm }, 0 }, - { "vbroadcastf32x4", { XM, EXxmm }, 0 }, + { "vbroadcastf32x4", { XM, EXxmm }, PREFIX_DATA }, + { "vbroadcastf32x4", { XM, EXxmm }, PREFIX_DATA }, }, - /* EVEX_LEN_0F381A_P_2_W_1_M_0 */ + /* EVEX_LEN_0F381A_W_1_M_0 */ { { Bad_Opcode }, - { "vbroadcastf64x2", { XM, EXxmm }, 0 }, - { "vbroadcastf64x2", { XM, EXxmm }, 0 }, + { "vbroadcastf64x2", { XM, EXxmm }, PREFIX_DATA }, + { "vbroadcastf64x2", { XM, EXxmm }, PREFIX_DATA }, }, - /* EVEX_LEN_0F381B_P_2_W_0_M_0 */ + /* EVEX_LEN_0F381B_W_0_M_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vbroadcastf32x8", { XM, EXymm }, 0 }, + { "vbroadcastf32x8", { XM, EXymm }, PREFIX_DATA }, }, /* EVEX_LEN_0F381B_P_2_W_1_M_0 */ @@ -78,311 +78,311 @@ static const struct dis386 evex_len_table[][3] = { { "vbroadcastf64x4", { XM, EXymm }, 0 }, }, - /* EVEX_LEN_0F3836_P_2 */ + /* EVEX_LEN_0F3836 */ { { Bad_Opcode }, - { "vperm%DQ", { XM, Vex, EXx }, 0 }, - { "vperm%DQ", { XM, Vex, EXx }, 0 }, + { "vperm%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { "vperm%DQ", { XM, Vex, EXx }, PREFIX_DATA }, }, - /* EVEX_LEN_0F385A_P_2_W_0_M_0 */ + /* EVEX_LEN_0F385A_W_0_M_0 */ { { Bad_Opcode }, - { "vbroadcasti32x4", { XM, EXxmm }, 0 }, - { "vbroadcasti32x4", { XM, EXxmm }, 0 }, + { "vbroadcasti32x4", { XM, EXxmm }, PREFIX_DATA }, + { "vbroadcasti32x4", { XM, EXxmm }, PREFIX_DATA }, }, - /* EVEX_LEN_0F385A_P_2_W_1_M_0 */ + /* EVEX_LEN_0F385A_W_1_M_0 */ { { Bad_Opcode }, - { "vbroadcasti64x2", { XM, EXxmm }, 0 }, - { "vbroadcasti64x2", { XM, EXxmm }, 0 }, + { "vbroadcasti64x2", { XM, EXxmm }, PREFIX_DATA }, + { "vbroadcasti64x2", { XM, EXxmm }, PREFIX_DATA }, }, - /* EVEX_LEN_0F385B_P_2_W_0_M_0 */ + /* EVEX_LEN_0F385B_W_0_M_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vbroadcasti32x8", { XM, EXymm }, 0 }, + { "vbroadcasti32x8", { XM, EXymm }, PREFIX_DATA }, }, - /* EVEX_LEN_0F385B_P_2_W_1_M_0 */ + /* EVEX_LEN_0F385B_W_1_M_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vbroadcasti64x4", { XM, EXymm }, 0 }, + { "vbroadcasti64x4", { XM, EXymm }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C6_REG_1_PREFIX_2 */ + /* EVEX_LEN_0F38C6_R_1_M_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vgatherpf0dp%XW", { MVexVSIBDWpX }, 0 }, + { "vgatherpf0dp%XW", { MVexVSIBDWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C6_REG_2_PREFIX_2 */ + /* EVEX_LEN_0F38C6_R_2_M_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vgatherpf1dp%XW", { MVexVSIBDWpX }, 0 }, + { "vgatherpf1dp%XW", { MVexVSIBDWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C6_REG_5_PREFIX_2 */ + /* EVEX_LEN_0F38C6_R_5_M_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vscatterpf0dp%XW", { MVexVSIBDWpX }, 0 }, + { "vscatterpf0dp%XW", { MVexVSIBDWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C6_REG_6_PREFIX_2 */ + /* EVEX_LEN_0F38C6_R_6_M_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vscatterpf1dp%XW", { MVexVSIBDWpX }, 0 }, + { "vscatterpf1dp%XW", { MVexVSIBDWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C7_R_1_P_2_W_0 */ + /* EVEX_LEN_0F38C7_R_1_M_0_W_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vgatherpf0qps", { MVexVSIBDQWpX }, 0 }, + { "vgatherpf0qps", { MVexVSIBDQWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C7_R_1_P_2_W_1 */ + /* EVEX_LEN_0F38C7_R_1_M_0_W_1 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vgatherpf0qpd", { MVexVSIBQWpX }, 0 }, + { "vgatherpf0qpd", { MVexVSIBQWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C7_R_2_P_2_W_0 */ + /* EVEX_LEN_0F38C7_R_2_M_0_W_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vgatherpf1qps", { MVexVSIBDQWpX }, 0 }, + { "vgatherpf1qps", { MVexVSIBDQWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C7_R_2_P_2_W_1 */ + /* EVEX_LEN_0F38C7_R_2_M_0_W_1 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vgatherpf1qpd", { MVexVSIBQWpX }, 0 }, + { "vgatherpf1qpd", { MVexVSIBQWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C7_R_5_P_2_W_0 */ + /* EVEX_LEN_0F38C7_R_5_M_0_W_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vscatterpf0qps", { MVexVSIBDQWpX }, 0 }, + { "vscatterpf0qps", { MVexVSIBDQWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C7_R_5_P_2_W_1 */ + /* EVEX_LEN_0F38C7_R_5_M_0_W_1 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vscatterpf0qpd", { MVexVSIBQWpX }, 0 }, + { "vscatterpf0qpd", { MVexVSIBQWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C7_R_6_P_2_W_0 */ + /* EVEX_LEN_0F38C7_R_6_M_0_W_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vscatterpf1qps", { MVexVSIBDQWpX }, 0 }, + { "vscatterpf1qps", { MVexVSIBDQWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F38C7_R_6_P_2_W_1 */ + /* EVEX_LEN_0F38C7_R_6_M_0_W_1 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vscatterpf1qpd", { MVexVSIBQWpX }, 0 }, + { "vscatterpf1qpd", { MVexVSIBQWpX }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A00_P_2_W_1 */ + /* EVEX_LEN_0F3A00_W_1 */ { { Bad_Opcode }, - { "vpermq", { XM, EXx, Ib }, 0 }, - { "vpermq", { XM, EXx, Ib }, 0 }, + { "vpermq", { XM, EXx, Ib }, PREFIX_DATA }, + { "vpermq", { XM, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A01_P_2_W_1 */ + /* EVEX_LEN_0F3A01_W_1 */ { { Bad_Opcode }, - { "vpermpd", { XM, EXx, Ib }, 0 }, - { "vpermpd", { XM, EXx, Ib }, 0 }, + { "vpermpd", { XM, EXx, Ib }, PREFIX_DATA }, + { "vpermpd", { XM, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A14_P_2 */ + /* EVEX_LEN_0F3A14 */ { - { "vpextrb", { Edqb, XM, Ib }, 0 }, + { "vpextrb", { Edqb, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A15_P_2 */ + /* EVEX_LEN_0F3A15 */ { - { "vpextrw", { Edqw, XM, Ib }, 0 }, + { "vpextrw", { Edqw, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A16_P_2 */ + /* EVEX_LEN_0F3A16 */ { - { "vpextrK", { Edq, XM, Ib }, 0 }, + { "vpextrK", { Edq, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A17_P_2 */ + /* EVEX_LEN_0F3A17 */ { - { "vextractps", { Edqd, XMM, Ib }, 0 }, + { "vextractps", { Edqd, XMM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A18_P_2_W_0 */ + /* EVEX_LEN_0F3A18_W_0 */ { { Bad_Opcode }, - { "vinsertf32x4", { XM, Vex, EXxmm, Ib }, 0 }, - { "vinsertf32x4", { XM, Vex, EXxmm, Ib }, 0 }, + { "vinsertf32x4", { XM, Vex, EXxmm, Ib }, PREFIX_DATA }, + { "vinsertf32x4", { XM, Vex, EXxmm, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A18_P_2_W_1 */ + /* EVEX_LEN_0F3A18_W_1 */ { { Bad_Opcode }, - { "vinsertf64x2", { XM, Vex, EXxmm, Ib }, 0 }, - { "vinsertf64x2", { XM, Vex, EXxmm, Ib }, 0 }, + { "vinsertf64x2", { XM, Vex, EXxmm, Ib }, PREFIX_DATA }, + { "vinsertf64x2", { XM, Vex, EXxmm, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A19_P_2_W_0 */ + /* EVEX_LEN_0F3A19_W_0 */ { { Bad_Opcode }, - { "vextractf32x4", { EXxmm, XM, Ib }, 0 }, - { "vextractf32x4", { EXxmm, XM, Ib }, 0 }, + { "vextractf32x4", { EXxmm, XM, Ib }, PREFIX_DATA }, + { "vextractf32x4", { EXxmm, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A19_P_2_W_1 */ + /* EVEX_LEN_0F3A19_W_1 */ { { Bad_Opcode }, - { "vextractf64x2", { EXxmm, XM, Ib }, 0 }, - { "vextractf64x2", { EXxmm, XM, Ib }, 0 }, + { "vextractf64x2", { EXxmm, XM, Ib }, PREFIX_DATA }, + { "vextractf64x2", { EXxmm, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A1A_P_2_W_0 */ + /* EVEX_LEN_0F3A1A_W_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vinsertf32x8", { XM, Vex, EXymm, Ib }, 0 }, + { "vinsertf32x8", { XM, Vex, EXymm, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A1A_P_2_W_1 */ + /* EVEX_LEN_0F3A1A_W_1 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vinsertf64x4", { XM, Vex, EXymm, Ib }, 0 }, + { "vinsertf64x4", { XM, Vex, EXymm, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A1B_P_2_W_0 */ + /* EVEX_LEN_0F3A1B_W_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vextractf32x8", { EXymm, XM, Ib }, 0 }, + { "vextractf32x8", { EXymm, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A1B_P_2_W_1 */ + /* EVEX_LEN_0F3A1B_W_1 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vextractf64x4", { EXymm, XM, Ib }, 0 }, + { "vextractf64x4", { EXymm, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A20_P_2 */ + /* EVEX_LEN_0F3A20 */ { - { "vpinsrb", { XM, Vex, Edqb, Ib }, 0 }, + { "vpinsrb", { XM, Vex, Edqb, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A21_P_2_W_0 */ + /* EVEX_LEN_0F3A21_W_0 */ { - { "vinsertps", { XMM, Vex, EXxmm_md, Ib }, 0 }, + { "vinsertps", { XMM, Vex, EXxmm_md, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A22_P_2 */ + /* EVEX_LEN_0F3A22 */ { - { "vpinsrK", { XM, Vex, Edq, Ib }, 0 }, + { "vpinsrK", { XM, Vex, Edq, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A23_P_2_W_0 */ + /* EVEX_LEN_0F3A23_W_0 */ { { Bad_Opcode }, - { "vshuff32x4", { XM, Vex, EXx, Ib }, 0 }, - { "vshuff32x4", { XM, Vex, EXx, Ib }, 0 }, + { "vshuff32x4", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { "vshuff32x4", { XM, Vex, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A23_P_2_W_1 */ + /* EVEX_LEN_0F3A23_W_1 */ { { Bad_Opcode }, - { "vshuff64x2", { XM, Vex, EXx, Ib }, 0 }, - { "vshuff64x2", { XM, Vex, EXx, Ib }, 0 }, + { "vshuff64x2", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { "vshuff64x2", { XM, Vex, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A38_P_2_W_0 */ + /* EVEX_LEN_0F3A38_W_0 */ { { Bad_Opcode }, - { "vinserti32x4", { XM, Vex, EXxmm, Ib }, 0 }, - { "vinserti32x4", { XM, Vex, EXxmm, Ib }, 0 }, + { "vinserti32x4", { XM, Vex, EXxmm, Ib }, PREFIX_DATA }, + { "vinserti32x4", { XM, Vex, EXxmm, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A38_P_2_W_1 */ + /* EVEX_LEN_0F3A38_W_1 */ { { Bad_Opcode }, - { "vinserti64x2", { XM, Vex, EXxmm, Ib }, 0 }, - { "vinserti64x2", { XM, Vex, EXxmm, Ib }, 0 }, + { "vinserti64x2", { XM, Vex, EXxmm, Ib }, PREFIX_DATA }, + { "vinserti64x2", { XM, Vex, EXxmm, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A39_P_2_W_0 */ + /* EVEX_LEN_0F3A39_W_0 */ { { Bad_Opcode }, - { "vextracti32x4", { EXxmm, XM, Ib }, 0 }, - { "vextracti32x4", { EXxmm, XM, Ib }, 0 }, + { "vextracti32x4", { EXxmm, XM, Ib }, PREFIX_DATA }, + { "vextracti32x4", { EXxmm, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A39_P_2_W_1 */ + /* EVEX_LEN_0F3A39_W_1 */ { { Bad_Opcode }, - { "vextracti64x2", { EXxmm, XM, Ib }, 0 }, - { "vextracti64x2", { EXxmm, XM, Ib }, 0 }, + { "vextracti64x2", { EXxmm, XM, Ib }, PREFIX_DATA }, + { "vextracti64x2", { EXxmm, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A3A_P_2_W_0 */ + /* EVEX_LEN_0F3A3A_W_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vinserti32x8", { XM, Vex, EXymm, Ib }, 0 }, + { "vinserti32x8", { XM, Vex, EXymm, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A3A_P_2_W_1 */ + /* EVEX_LEN_0F3A3A_W_1 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vinserti64x4", { XM, Vex, EXymm, Ib }, 0 }, + { "vinserti64x4", { XM, Vex, EXymm, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A3B_P_2_W_0 */ + /* EVEX_LEN_0F3A3B_W_0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vextracti32x8", { EXymm, XM, Ib }, 0 }, + { "vextracti32x8", { EXymm, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A3B_P_2_W_1 */ + /* EVEX_LEN_0F3A3B_W_1 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vextracti64x4", { EXymm, XM, Ib }, 0 }, + { "vextracti64x4", { EXymm, XM, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A43_P_2_W_0 */ + /* EVEX_LEN_0F3A43_W_0 */ { { Bad_Opcode }, - { "vshufi32x4", { XM, Vex, EXx, Ib }, 0 }, - { "vshufi32x4", { XM, Vex, EXx, Ib }, 0 }, + { "vshufi32x4", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { "vshufi32x4", { XM, Vex, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_LEN_0F3A43_P_2_W_1 */ + /* EVEX_LEN_0F3A43_W_1 */ { { Bad_Opcode }, - { "vshufi64x2", { XM, Vex, EXx, Ib }, 0 }, - { "vshufi64x2", { XM, Vex, EXx, Ib }, 0 }, + { "vshufi64x2", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { "vshufi64x2", { XM, Vex, EXx, Ib }, PREFIX_DATA }, }, }; diff --git a/opcodes/i386-dis-evex-mod.h b/opcodes/i386-dis-evex-mod.h index 0c81822..acb497d 100644 --- a/opcodes/i386-dis-evex-mod.h +++ b/opcodes/i386-dis-evex-mod.h @@ -28,67 +28,67 @@ /* MOD_EVEX_0F2B */ { "vmovntpX", { EXx, XM }, PREFIX_OPCODE }, }, - /* MOD_EVEX_0F381A_P_2_W_0 */ + /* MOD_EVEX_0F381A_W_0 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F381A_P_2_W_0_M_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F381A_W_0_M_0) }, }, - /* MOD_EVEX_0F381A_P_2_W_1 */ + /* MOD_EVEX_0F381A_W_1 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F381A_P_2_W_1_M_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F381A_W_1_M_0) }, }, - /* MOD_EVEX_0F381B_P_2_W_0 */ + /* MOD_EVEX_0F381B_W_0 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F381B_P_2_W_0_M_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F381B_W_0_M_0) }, }, - /* MOD_EVEX_0F381B_P_2_W_1 */ + /* MOD_EVEX_0F381B_W_1 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F381B_P_2_W_1_M_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F381B_W_1_M_0) }, }, - /* MOD_EVEX_0F385A_P_2_W_0 */ + /* MOD_EVEX_0F385A_W_0 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F385A_P_2_W_0_M_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F385A_W_0_M_0) }, }, - /* MOD_EVEX_0F385A_P_2_W_1 */ + /* MOD_EVEX_0F385A_W_1 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F385A_P_2_W_1_M_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F385A_W_1_M_0) }, }, - /* MOD_EVEX_0F385B_P_2_W_0 */ + /* MOD_EVEX_0F385B_W_0 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F385B_P_2_W_0_M_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F385B_W_0_M_0) }, }, - /* MOD_EVEX_0F385B_P_2_W_1 */ + /* MOD_EVEX_0F385B_W_1 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F385B_P_2_W_1_M_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F385B_W_1_M_0) }, }, { /* MOD_EVEX_0F38C6_REG_1 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_R_1_M_0) }, }, { /* MOD_EVEX_0F38C6_REG_2 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_2) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_R_2_M_0) }, }, { /* MOD_EVEX_0F38C6_REG_5 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_5) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_R_5_M_0) }, }, { /* MOD_EVEX_0F38C6_REG_6 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38C6_REG_6) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_R_6_M_0) }, }, { /* MOD_EVEX_0F38C7_REG_1 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_1) }, + { VEX_W_TABLE (EVEX_W_0F38C7_R_1_M_0) }, }, { /* MOD_EVEX_0F38C7_REG_2 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_2) }, + { VEX_W_TABLE (EVEX_W_0F38C7_R_2_M_0) }, }, { /* MOD_EVEX_0F38C7_REG_5 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_5) }, + { VEX_W_TABLE (EVEX_W_0F38C7_R_5_M_0) }, }, { /* MOD_EVEX_0F38C7_REG_6 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38C7_REG_6) }, + { VEX_W_TABLE (EVEX_W_0F38C7_R_6_M_0) }, }, diff --git a/opcodes/i386-dis-evex-prefix.h b/opcodes/i386-dis-evex-prefix.h index 9b35532..a9581ee 100644 --- a/opcodes/i386-dis-evex-prefix.h +++ b/opcodes/i386-dis-evex-prefix.h @@ -94,30 +94,6 @@ { "vmaxpX", { XM, Vex, EXx, EXxEVexS }, PREFIX_OPCODE }, { VEX_W_TABLE (EVEX_W_0F5F_P_3) }, }, - /* PREFIX_EVEX_0F64 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpgtb", { XMask, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F65 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpgtw", { XMask, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F66 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F66_P_2) }, - }, - /* PREFIX_EVEX_0F6E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F6E_P_2) }, - }, /* PREFIX_EVEX_0F6F */ { { Bad_Opcode }, @@ -132,96 +108,6 @@ { VEX_W_TABLE (EVEX_W_0F70_P_2) }, { "vpshuflw", { XM, EXx, Ib }, 0 }, }, - /* PREFIX_EVEX_0F71_REG_2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrlw", { Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F71_REG_4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsraw", { Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F71_REG_6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsllw", { Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F72_REG_0 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpror%DQ", { Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F72_REG_1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vprol%DQ", { Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F72_REG_2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F72_R_2_P_2) }, - }, - /* PREFIX_EVEX_0F72_REG_4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsra%DQ", { Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F72_REG_6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F72_R_6_P_2) }, - }, - /* PREFIX_EVEX_0F73_REG_2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F73_R_2_P_2) }, - }, - /* PREFIX_EVEX_0F73_REG_3 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrldq", { Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F73_REG_6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F73_R_6_P_2) }, - }, - /* PREFIX_EVEX_0F73_REG_7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpslldq", { Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F74 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpeqb", { XMask, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F75 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpeqw", { XMask, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F76 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F76_P_2) }, - }, /* PREFIX_EVEX_0F78 */ { { VEX_W_TABLE (EVEX_W_0F78_P_0) }, @@ -270,42 +156,6 @@ { "vcmppX", { XMask, Vex, EXx, EXxEVexS, CMP }, PREFIX_OPCODE }, { VEX_W_TABLE (EVEX_W_0FC2_P_3) }, }, - /* PREFIX_EVEX_0FC4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0FC4_P_2) }, - }, - /* PREFIX_EVEX_0FC5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0FC5_P_2) }, - }, - /* PREFIX_EVEX_0FD6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0FD6_P_2) }, - }, - /* PREFIX_EVEX_0FDB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpand%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FDF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpandn%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FE2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsra%DQ", { XM, Vex, EXxmm }, 0 }, - }, /* PREFIX_EVEX_0FE6 */ { { Bad_Opcode }, @@ -313,30 +163,6 @@ { VEX_W_TABLE (EVEX_W_0FE6_P_2) }, { VEX_W_TABLE (EVEX_W_0FE6_P_3) }, }, - /* PREFIX_EVEX_0FE7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0FE7_P_2) }, - }, - /* PREFIX_EVEX_0FEB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpor%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0FEF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpxor%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F380D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F380D_P_2) }, - }, /* PREFIX_EVEX_0F3810 */ { { Bad_Opcode }, @@ -373,42 +199,6 @@ { VEX_W_TABLE (EVEX_W_0F3815_P_1) }, { "vprolv%DQ", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0F3816 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3816_P_2) }, - }, - /* PREFIX_EVEX_0F3819 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3819_P_2) }, - }, - /* PREFIX_EVEX_0F381A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F381A_P_2) }, - }, - /* PREFIX_EVEX_0F381B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F381B_P_2) }, - }, - /* PREFIX_EVEX_0F381E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F381E_P_2) }, - }, - /* PREFIX_EVEX_0F381F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F381F_P_2) }, - }, /* PREFIX_EVEX_0F3820 */ { { Bad_Opcode }, @@ -475,18 +265,6 @@ { VEX_W_TABLE (EVEX_W_0F382A_P_1) }, { VEX_W_TABLE (EVEX_W_0F382A_P_2) }, }, - /* PREFIX_EVEX_0F382C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vscalefp%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - /* PREFIX_EVEX_0F382D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vscalefs%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, /* PREFIX_EVEX_0F3830 */ { { Bad_Opcode }, @@ -523,18 +301,6 @@ { VEX_W_TABLE (EVEX_W_0F3835_P_1) }, { VEX_W_TABLE (EVEX_W_0F3835_P_2) }, }, - /* PREFIX_EVEX_0F3836 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3836_P_2) }, - }, - /* PREFIX_EVEX_0F3837 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3837_P_2) }, - }, /* PREFIX_EVEX_0F3838 */ { { Bad_Opcode }, @@ -553,102 +319,6 @@ { VEX_W_TABLE (EVEX_W_0F383A_P_1) }, { "vpminuw", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_EVEX_0F383B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpminu%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F383D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxs%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F383F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxu%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3840 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmull%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3842 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vgetexpp%XW", { XM, EXx, EXxEVexS }, 0 }, - }, - /* PREFIX_EVEX_0F3843 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vgetexps%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, 0 }, - }, - /* PREFIX_EVEX_0F3844 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vplzcnt%DQ", { XM, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3845 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrlv%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3846 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrav%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3847 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsllv%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F384C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vrcp14p%XW", { XM, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F384D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vrcp14s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, - }, - /* PREFIX_EVEX_0F384E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vrsqrt14p%XW", { XM, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F384F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vrsqrt14s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, - }, - /* PREFIX_EVEX_0F3850 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpdpbusd", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3851 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpdpbusds", { XM, Vex, EXx }, 0 }, - }, /* PREFIX_EVEX_0F3852 */ { { Bad_Opcode }, @@ -663,633 +333,45 @@ { "vpdpwssds", { XM, Vex, EXx }, 0 }, { "vp4dpwssds", { XM, Vex, EXxmm }, 0 }, }, - /* PREFIX_EVEX_0F3854 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpopcnt%BW", { XM, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3855 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpopcnt%DQ", { XM, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3859 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3859_P_2) }, - }, - /* PREFIX_EVEX_0F385A */ + /* PREFIX_EVEX_0F3868 */ { { Bad_Opcode }, { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F385A_P_2) }, - }, - /* PREFIX_EVEX_0F385B */ - { - { Bad_Opcode }, { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F385B_P_2) }, + { "vp2intersect%DQ", { XMask, Vex, EXx, EXxEVexS }, 0 }, }, - /* PREFIX_EVEX_0F3862 */ + /* PREFIX_EVEX_0F3872 */ { { Bad_Opcode }, - { Bad_Opcode }, - { "vpexpand%BW", { XM, EXbwUnit }, 0 }, + { VEX_W_TABLE (EVEX_W_0F3872_P_1) }, + { VEX_W_TABLE (EVEX_W_0F3872_P_2) }, + { VEX_W_TABLE (EVEX_W_0F3872_P_3) }, }, - /* PREFIX_EVEX_0F3863 */ + /* PREFIX_EVEX_0F389A */ { { Bad_Opcode }, { Bad_Opcode }, - { "vpcompress%BW", { EXbwUnit, XM }, 0 }, + { "vfmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, + { "v4fmaddps", { XM, Vex, Mxmm }, 0 }, }, - /* PREFIX_EVEX_0F3864 */ + /* PREFIX_EVEX_0F389B */ { { Bad_Opcode }, { Bad_Opcode }, - { "vpblendm%DQ", { XM, Vex, EXx }, 0 }, + { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, + { "v4fmaddss", { XMScalar, VexScalar, Mxmm }, 0 }, }, - /* PREFIX_EVEX_0F3865 */ + /* PREFIX_EVEX_0F38AA */ { { Bad_Opcode }, { Bad_Opcode }, - { "vblendmp%XW", { XM, Vex, EXx }, 0 }, + { "vfmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, + { "v4fnmaddps", { XM, Vex, Mxmm }, 0 }, }, - /* PREFIX_EVEX_0F3866 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpblendm%BW", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3868 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { Bad_Opcode }, - { "vp2intersect%DQ", { XMask, Vex, EXx, EXxEVexS }, 0 }, - }, - /* PREFIX_EVEX_0F3870 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3870_P_2) }, - }, - /* PREFIX_EVEX_0F3871 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpshldv%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3872 */ - { - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3872_P_1) }, - { VEX_W_TABLE (EVEX_W_0F3872_P_2) }, - { VEX_W_TABLE (EVEX_W_0F3872_P_3) }, - }, - /* PREFIX_EVEX_0F3873 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpshrdv%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3875 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpermi2%BW", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3876 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpermi2%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3877 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpermi2p%XW", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F387A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F387A_P_2) }, - }, - /* PREFIX_EVEX_0F387B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F387B_P_2) }, - }, - /* PREFIX_EVEX_0F387C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpbroadcastK", { XM, Rdq }, 0 }, - }, - /* PREFIX_EVEX_0F387D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpermt2%BW", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F387E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpermt2%DQ", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F387F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpermt2p%XW", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3883 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3883_P_2) }, - }, - /* PREFIX_EVEX_0F3888 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vexpandp%XW", { XM, EXEvexXGscat }, 0 }, - }, - /* PREFIX_EVEX_0F3889 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpexpand%DQ", { XM, EXEvexXGscat }, 0 }, - }, - /* PREFIX_EVEX_0F388A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vcompressp%XW", { EXEvexXGscat, XM }, 0 }, - }, - /* PREFIX_EVEX_0F388B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcompress%DQ", { EXEvexXGscat, XM }, 0 }, - }, - /* PREFIX_EVEX_0F388D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vperm%BW", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F388F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpshufbitqmb", { XMask, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F3890 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpgatherd%DQ", { XM, MVexVSIBDWpX }, 0 }, - }, - /* PREFIX_EVEX_0F3891 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3891_P_2) }, - }, - /* PREFIX_EVEX_0F3892 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vgatherdp%XW", { XM, MVexVSIBDWpX}, 0 }, - }, - /* PREFIX_EVEX_0F3893 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3893_P_2) }, - }, - /* PREFIX_EVEX_0F389A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - { "v4fmaddps", { XM, Vex, Mxmm }, 0 }, - }, - /* PREFIX_EVEX_0F389B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - { "v4fmaddss", { XMScalar, VexScalar, Mxmm }, 0 }, - }, - /* PREFIX_EVEX_0F38A0 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpscatterd%DQ", { MVexVSIBDWpX, XM }, 0 }, - }, - /* PREFIX_EVEX_0F38A1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F38A1_P_2) }, - }, - /* PREFIX_EVEX_0F38A2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vscatterdp%XW", { MVexVSIBDWpX, XM }, 0 }, - }, - /* PREFIX_EVEX_0F38A3 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F38A3_P_2) }, - }, - /* PREFIX_EVEX_0F38AA */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - { "v4fnmaddps", { XM, Vex, Mxmm }, 0 }, - }, - /* PREFIX_EVEX_0F38AB */ + /* PREFIX_EVEX_0F38AB */ { { Bad_Opcode }, { Bad_Opcode }, { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, { "v4fnmaddss", { XMScalar, VexScalar, Mxmm }, 0 }, }, - /* PREFIX_EVEX_0F38B4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmadd52luq", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F38B5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmadd52huq", { XM, Vex, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F38C4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpconflict%DQ", { XM, EXx }, 0 }, - }, - /* PREFIX_EVEX_0F38C6_REG_1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_REG_1_PREFIX_2) }, - }, - /* PREFIX_EVEX_0F38C6_REG_2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_REG_2_PREFIX_2) }, - }, - /* PREFIX_EVEX_0F38C6_REG_5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_REG_5_PREFIX_2) }, - }, - /* PREFIX_EVEX_0F38C6_REG_6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F38C6_REG_6_PREFIX_2) }, - }, - /* PREFIX_EVEX_0F38C7_REG_1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F38C7_R_1_P_2) }, - }, - /* PREFIX_EVEX_0F38C7_REG_2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F38C7_R_2_P_2) }, - }, - /* PREFIX_EVEX_0F38C7_REG_5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F38C7_R_5_P_2) }, - }, - /* PREFIX_EVEX_0F38C7_REG_6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F38C7_R_6_P_2) }, - }, - /* PREFIX_EVEX_0F38C8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vexp2p%XW", { XM, EXx, EXxEVexS }, 0 }, - }, - /* PREFIX_EVEX_0F38CA */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vrcp28p%XW", { XM, EXx, EXxEVexS }, 0 }, - }, - /* PREFIX_EVEX_0F38CB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vrcp28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, 0 }, - }, - /* PREFIX_EVEX_0F38CC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vrsqrt28p%XW", { XM, EXx, EXxEVexS }, 0 }, - }, - /* PREFIX_EVEX_0F38CD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vrsqrt28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, 0 }, - }, - /* PREFIX_EVEX_0F3A00 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A00_P_2) }, - }, - /* PREFIX_EVEX_0F3A01 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A01_P_2) }, - }, - /* PREFIX_EVEX_0F3A03 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "valign%DQ", { XM, Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A05 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A05_P_2) }, - }, - /* PREFIX_EVEX_0F3A08 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A08_P_2) }, - }, - /* PREFIX_EVEX_0F3A09 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A09_P_2) }, - }, - /* PREFIX_EVEX_0F3A0A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A0A_P_2) }, - }, - /* PREFIX_EVEX_0F3A0B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A0B_P_2) }, - }, - /* PREFIX_EVEX_0F3A14 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A14_P_2) }, - }, - /* PREFIX_EVEX_0F3A15 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A15_P_2) }, - }, - /* PREFIX_EVEX_0F3A16 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A16_P_2) }, - }, - /* PREFIX_EVEX_0F3A17 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A17_P_2) }, - }, - /* PREFIX_EVEX_0F3A18 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A18_P_2) }, - }, - /* PREFIX_EVEX_0F3A19 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A19_P_2) }, - }, - /* PREFIX_EVEX_0F3A1A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A1A_P_2) }, - }, - /* PREFIX_EVEX_0F3A1B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A1B_P_2) }, - }, - /* PREFIX_EVEX_0F3A1E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpu%DQ", { XMask, Vex, EXx, VPCMP }, 0 }, - }, - /* PREFIX_EVEX_0F3A1F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmp%DQ", { XMask, Vex, EXx, VPCMP }, 0 }, - }, - /* PREFIX_EVEX_0F3A20 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A20_P_2) }, - }, - /* PREFIX_EVEX_0F3A21 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A21_P_2) }, - }, - /* PREFIX_EVEX_0F3A22 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A22_P_2) }, - }, - /* PREFIX_EVEX_0F3A23 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A23_P_2) }, - }, - /* PREFIX_EVEX_0F3A25 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpternlog%DQ", { XM, Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A26 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vgetmantp%XW", { XM, EXx, EXxEVexS, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A27 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vgetmants%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A38 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A38_P_2) }, - }, - /* PREFIX_EVEX_0F3A39 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A39_P_2) }, - }, - /* PREFIX_EVEX_0F3A3A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A3A_P_2) }, - }, - /* PREFIX_EVEX_0F3A3B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A3B_P_2) }, - }, - /* PREFIX_EVEX_0F3A3E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpu%BW", { XMask, Vex, EXx, VPCMP }, 0 }, - }, - /* PREFIX_EVEX_0F3A3F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmp%BW", { XMask, Vex, EXx, VPCMP }, 0 }, - }, - /* PREFIX_EVEX_0F3A42 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A42_P_2) }, - }, - /* PREFIX_EVEX_0F3A43 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A43_P_2) }, - }, - /* PREFIX_EVEX_0F3A50 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vrangep%XW", { XM, Vex, EXx, EXxEVexS, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A51 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vranges%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A54 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfixupimmp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A55 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfixupimms%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A56 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vreducep%XW", { XM, EXx, EXxEVexS, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A57 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vreduces%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A66 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfpclassp%XW%XZ", { XMask, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A67 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfpclasss%XW", { XMask, EXVexWdqScalar, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A70 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A70_P_2) }, - }, - /* PREFIX_EVEX_0F3A71 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpshld%DQ", { XM, Vex, EXx, Ib }, 0 }, - }, - /* PREFIX_EVEX_0F3A72 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (EVEX_W_0F3A72_P_2) }, - }, - /* PREFIX_EVEX_0F3A73 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpshrd%DQ", { XM, Vex, EXx, Ib }, 0 }, - }, diff --git a/opcodes/i386-dis-evex-reg.h b/opcodes/i386-dis-evex-reg.h index 9647e30..1ed7926 100644 --- a/opcodes/i386-dis-evex-reg.h +++ b/opcodes/i386-dis-evex-reg.h @@ -2,32 +2,32 @@ { { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F71_REG_2) }, + { "vpsrlw", { Vex, EXx, Ib }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F71_REG_4) }, + { "vpsraw", { Vex, EXx, Ib }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F71_REG_6) }, + { "vpsllw", { Vex, EXx, Ib }, PREFIX_DATA }, }, /* REG_EVEX_0F72 */ { - { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_0) }, - { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_1) }, - { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_2) }, + { "vpror%DQ", { Vex, EXx, Ib }, PREFIX_DATA }, + { "vprol%DQ", { Vex, EXx, Ib }, PREFIX_DATA }, + { VEX_W_TABLE (EVEX_W_0F72_R_2) }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_4) }, + { "vpsra%DQ", { Vex, EXx, Ib }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F72_REG_6) }, + { VEX_W_TABLE (EVEX_W_0F72_R_6) }, }, /* REG_EVEX_0F73 */ { { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_2) }, - { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_3) }, + { VEX_W_TABLE (EVEX_W_0F73_R_2) }, + { "vpsrldq", { Vex, EXx, Ib }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_6) }, - { PREFIX_TABLE (PREFIX_EVEX_0F73_REG_7) }, + { VEX_W_TABLE (EVEX_W_0F73_R_6) }, + { "vpslldq", { Vex, EXx, Ib }, PREFIX_DATA }, }, /* REG_EVEX_0F38C6 */ { diff --git a/opcodes/i386-dis-evex-w.h b/opcodes/i386-dis-evex-w.h index 10c0b83..59ff1d4 100644 --- a/opcodes/i386-dis-evex-w.h +++ b/opcodes/i386-dis-evex-w.h @@ -138,29 +138,29 @@ }, /* EVEX_W_0F62 */ { - { PREFIX_TABLE (PREFIX_VEX_0F62) }, + { "vpunpckldq", { XM, Vex, EXx }, PREFIX_DATA }, }, - /* EVEX_W_0F66_P_2 */ + /* EVEX_W_0F66 */ { - { "vpcmpgtd", { XMask, Vex, EXx }, 0 }, + { "vpcmpgtd", { XMask, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F6A */ { - { PREFIX_TABLE (PREFIX_VEX_0F6A) }, + { "vpunpckhdq", { XM, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F6B */ { - { PREFIX_TABLE (PREFIX_VEX_0F6B) }, + { "vpackssdw", { XM, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F6C */ { { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F6C) }, + { "vpunpcklqdq", { XM, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F6D */ { { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F6D) }, + { "vpunpckhqdq", { XM, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F6F_P_1 */ { @@ -181,27 +181,27 @@ { { "vpshufd", { XM, EXx, Ib }, 0 }, }, - /* EVEX_W_0F72_R_2_P_2 */ + /* EVEX_W_0F72_R_2 */ { - { "vpsrld", { Vex, EXx, Ib }, 0 }, + { "vpsrld", { Vex, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F72_R_6_P_2 */ + /* EVEX_W_0F72_R_6 */ { - { "vpslld", { Vex, EXx, Ib }, 0 }, + { "vpslld", { Vex, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F73_R_2_P_2 */ + /* EVEX_W_0F73_R_2 */ { { Bad_Opcode }, - { "vpsrlq", { Vex, EXx, Ib }, 0 }, + { "vpsrlq", { Vex, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F73_R_6_P_2 */ + /* EVEX_W_0F73_R_6 */ { { Bad_Opcode }, - { "vpsllq", { Vex, EXx, Ib }, 0 }, + { "vpsllq", { Vex, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F76_P_2 */ + /* EVEX_W_0F76 */ { - { "vpcmpeqd", { XMask, Vex, EXx }, 0 }, + { "vpcmpeqd", { XMask, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F78_P_0 */ { @@ -279,22 +279,22 @@ }, /* EVEX_W_0FD2 */ { - { PREFIX_TABLE (PREFIX_VEX_0FD2) }, + { "vpsrld", { XM, Vex, EXxmm }, PREFIX_DATA }, }, /* EVEX_W_0FD3 */ { { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0FD3) }, + { "vpsrlq", { XM, Vex, EXxmm }, PREFIX_DATA }, }, /* EVEX_W_0FD4 */ { { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0FD4) }, + { "vpaddq", { XM, Vex, EXx }, PREFIX_DATA }, }, - /* EVEX_W_0FD6_P_2 */ + /* EVEX_W_0FD6_L_0 */ { { Bad_Opcode }, - { "vmovq", { EXqS, XMScalar }, 0 }, + { "vmovq", { EXqS, XMScalar }, PREFIX_DATA }, }, /* EVEX_W_0FE6_P_1 */ { @@ -311,41 +311,41 @@ { Bad_Opcode }, { "vcvtpd2dq%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, }, - /* EVEX_W_0FE7_P_2 */ + /* EVEX_W_0FE7 */ { - { "vmovntdq", { EXEvexXNoBcst, XM }, 0 }, + { "vmovntdq", { EXEvexXNoBcst, XM }, PREFIX_DATA }, }, /* EVEX_W_0FF2 */ { - { PREFIX_TABLE (PREFIX_VEX_0FF2) }, + { "vpslld", { XM, Vex, EXxmm }, PREFIX_DATA }, }, /* EVEX_W_0FF3 */ { { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0FF3) }, + { "vpsllq", { XM, Vex, EXxmm }, PREFIX_DATA }, }, /* EVEX_W_0FF4 */ { { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0FF4) }, + { "vpmuludq", { XM, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0FFA */ { - { PREFIX_TABLE (PREFIX_VEX_0FFA) }, + { "vpsubd", { XM, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0FFB */ { { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0FFB) }, + { "vpsubq", { XM, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0FFE */ { - { PREFIX_TABLE (PREFIX_VEX_0FFE) }, + { "vpaddd", { XM, Vex, EXx }, PREFIX_DATA }, }, - /* EVEX_W_0F380D_P_2 */ + /* EVEX_W_0F380D */ { { Bad_Opcode }, - { "vpermilpd", { XM, Vex, EXx }, 0 }, + { "vpermilpd", { XM, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F3810_P_1 */ { @@ -390,29 +390,29 @@ { { "vpmovusqd", { EXxmmq, XM }, 0 }, }, - /* EVEX_W_0F3819_P_2 */ + /* EVEX_W_0F3819 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3819_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3819_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3819_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3819_W_1) }, }, - /* EVEX_W_0F381A_P_2 */ + /* EVEX_W_0F381A */ { - { MOD_TABLE (MOD_EVEX_0F381A_P_2_W_0) }, - { MOD_TABLE (MOD_EVEX_0F381A_P_2_W_1) }, + { MOD_TABLE (MOD_EVEX_0F381A_W_0) }, + { MOD_TABLE (MOD_EVEX_0F381A_W_1) }, }, - /* EVEX_W_0F381B_P_2 */ + /* EVEX_W_0F381B */ { - { MOD_TABLE (MOD_EVEX_0F381B_P_2_W_0) }, - { MOD_TABLE (MOD_EVEX_0F381B_P_2_W_1) }, + { MOD_TABLE (MOD_EVEX_0F381B_W_0) }, + { MOD_TABLE (MOD_EVEX_0F381B_W_1) }, }, - /* EVEX_W_0F381E_P_2 */ + /* EVEX_W_0F381E */ { - { "vpabsd", { XM, EXx }, 0 }, + { "vpabsd", { XM, EXx }, PREFIX_DATA }, }, - /* EVEX_W_0F381F_P_2 */ + /* EVEX_W_0F381F */ { { Bad_Opcode }, - { "vpabsq", { XM, EXx }, 0 }, + { "vpabsq", { XM, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F3820_P_1 */ { @@ -463,7 +463,7 @@ }, /* EVEX_W_0F382B */ { - { PREFIX_TABLE (PREFIX_VEX_0F382B) }, + { "vpackusdw", { XM, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F3830_P_1 */ { @@ -493,10 +493,10 @@ { { "vpmovzxdq", { XM, EXxmmq }, 0 }, }, - /* EVEX_W_0F3837_P_2 */ + /* EVEX_W_0F3837 */ { { Bad_Opcode }, - { "vpcmpgtq", { XMask, Vex, EXx }, 0 }, + { "vpcmpgtq", { XMask, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F383A_P_1 */ { @@ -507,25 +507,25 @@ { "vdpbf16ps", { XM, Vex, EXx }, 0 }, { Bad_Opcode }, }, - /* EVEX_W_0F3859_P_2 */ + /* EVEX_W_0F3859 */ { - { "vbroadcasti32x2", { XM, EXxmm_mq }, 0 }, - { "vpbroadcastq", { XM, EXxmm_mq }, 0 }, + { "vbroadcasti32x2", { XM, EXxmm_mq }, PREFIX_DATA }, + { "vpbroadcastq", { XM, EXxmm_mq }, PREFIX_DATA }, }, - /* EVEX_W_0F385A_P_2 */ + /* EVEX_W_0F385A */ { - { MOD_TABLE (MOD_EVEX_0F385A_P_2_W_0) }, - { MOD_TABLE (MOD_EVEX_0F385A_P_2_W_1) }, + { MOD_TABLE (MOD_EVEX_0F385A_W_0) }, + { MOD_TABLE (MOD_EVEX_0F385A_W_1) }, }, - /* EVEX_W_0F385B_P_2 */ + /* EVEX_W_0F385B */ { - { MOD_TABLE (MOD_EVEX_0F385B_P_2_W_0) }, - { MOD_TABLE (MOD_EVEX_0F385B_P_2_W_1) }, + { MOD_TABLE (MOD_EVEX_0F385B_W_0) }, + { MOD_TABLE (MOD_EVEX_0F385B_W_1) }, }, - /* EVEX_W_0F3870_P_2 */ + /* EVEX_W_0F3870 */ { { Bad_Opcode }, - { "vpshldvw", { XM, Vex, EXx }, 0 }, + { "vpshldvw", { XM, Vex, EXx }, PREFIX_DATA }, }, /* EVEX_W_0F3872_P_1 */ { @@ -542,156 +542,156 @@ { "vcvtne2ps2bf16", { XM, Vex, EXx}, 0 }, { Bad_Opcode }, }, - /* EVEX_W_0F387A_P_2 */ + /* EVEX_W_0F387A */ { - { "vpbroadcastb", { XM, Rd }, 0 }, + { "vpbroadcastb", { XM, Rd }, PREFIX_DATA }, }, - /* EVEX_W_0F387B_P_2 */ + /* EVEX_W_0F387B */ { - { "vpbroadcastw", { XM, Rd }, 0 }, + { "vpbroadcastw", { XM, Rd }, PREFIX_DATA }, }, - /* EVEX_W_0F3883_P_2 */ + /* EVEX_W_0F3883 */ { { Bad_Opcode }, - { "vpmultishiftqb", { XM, Vex, EXx }, 0 }, + { "vpmultishiftqb", { XM, Vex, EXx }, PREFIX_DATA }, }, - /* EVEX_W_0F3891_P_2 */ + /* EVEX_W_0F3891 */ { - { "vpgatherqd", { XMxmmq, MVexVSIBQDWpX }, 0 }, + { "vpgatherqd", { XMxmmq, MVexVSIBQDWpX }, PREFIX_DATA }, { "vpgatherqq", { XM, MVexVSIBQWpX }, 0 }, }, - /* EVEX_W_0F3893_P_2 */ + /* EVEX_W_0F3893 */ { - { "vgatherqps", { XMxmmq, MVexVSIBQDWpX }, 0 }, + { "vgatherqps", { XMxmmq, MVexVSIBQDWpX }, PREFIX_DATA }, { "vgatherqpd", { XM, MVexVSIBQWpX }, 0 }, }, - /* EVEX_W_0F38A1_P_2 */ + /* EVEX_W_0F38A1 */ { - { "vpscatterqd", { MVexVSIBQDWpX, XMxmmq }, 0 }, + { "vpscatterqd", { MVexVSIBQDWpX, XMxmmq }, PREFIX_DATA }, { "vpscatterqq", { MVexVSIBQWpX, XM }, 0 }, }, - /* EVEX_W_0F38A3_P_2 */ + /* EVEX_W_0F38A3 */ { - { "vscatterqps", { MVexVSIBQDWpX, XMxmmq }, 0 }, + { "vscatterqps", { MVexVSIBQDWpX, XMxmmq }, PREFIX_DATA }, { "vscatterqpd", { MVexVSIBQWpX, XM }, 0 }, }, - /* EVEX_W_0F38C7_R_1_P_2 */ + /* EVEX_W_0F38C7_R_1_M_0 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_1_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_1_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_1_M_0_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_1_M_0_W_1) }, }, - /* EVEX_W_0F38C7_R_2_P_2 */ + /* EVEX_W_0F38C7_R_2_M_0 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_2_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_2_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_2_M_0_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_2_M_0_W_1) }, }, - /* EVEX_W_0F38C7_R_5_P_2 */ + /* EVEX_W_0F38C7_R_5_M_0 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_5_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_5_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_5_M_0_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_5_M_0_W_1) }, }, - /* EVEX_W_0F38C7_R_6_P_2 */ + /* EVEX_W_0F38C7_R_6_M_0 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_6_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_6_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_6_M_0_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F38C7_R_6_M_0_W_1) }, }, - /* EVEX_W_0F3A00_P_2 */ + /* EVEX_W_0F3A00 */ { { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A00_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A00_W_1) }, }, - /* EVEX_W_0F3A01_P_2 */ + /* EVEX_W_0F3A01 */ { { Bad_Opcode }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A01_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A01_W_1) }, }, - /* EVEX_W_0F3A05_P_2 */ + /* EVEX_W_0F3A05 */ { { Bad_Opcode }, - { "vpermilpd", { XM, EXx, Ib }, 0 }, + { "vpermilpd", { XM, EXx, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F3A08_P_2 */ + /* EVEX_W_0F3A08 */ { - { "vrndscaleps", { XM, EXx, EXxEVexS, Ib }, 0 }, + { "vrndscaleps", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F3A09_P_2 */ + /* EVEX_W_0F3A09 */ { { Bad_Opcode }, - { "vrndscalepd", { XM, EXx, EXxEVexS, Ib }, 0 }, + { "vrndscalepd", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F3A0A_P_2 */ + /* EVEX_W_0F3A0A */ { - { "vrndscaless", { XMScalar, VexScalar, EXxmm_md, EXxEVexS, Ib }, 0 }, + { "vrndscaless", { XMScalar, VexScalar, EXxmm_md, EXxEVexS, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F3A0B_P_2 */ + /* EVEX_W_0F3A0B */ { { Bad_Opcode }, - { "vrndscalesd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexS, Ib }, 0 }, + { "vrndscalesd", { XMScalar, VexScalar, EXxmm_mq, EXxEVexS, Ib }, PREFIX_DATA }, }, - /* EVEX_W_0F3A18_P_2 */ + /* EVEX_W_0F3A18 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A18_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A18_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A18_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A18_W_1) }, }, - /* EVEX_W_0F3A19_P_2 */ + /* EVEX_W_0F3A19 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A19_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A19_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A19_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A19_W_1) }, }, - /* EVEX_W_0F3A1A_P_2 */ + /* EVEX_W_0F3A1A */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A1A_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A1A_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A1A_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A1A_W_1) }, }, - /* EVEX_W_0F3A1B_P_2 */ + /* EVEX_W_0F3A1B */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A1B_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A1B_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A1B_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A1B_W_1) }, }, - /* EVEX_W_0F3A21_P_2 */ + /* EVEX_W_0F3A21 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A21_P_2_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A21_W_0) }, }, - /* EVEX_W_0F3A23_P_2 */ + /* EVEX_W_0F3A23 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A23_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A23_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A23_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A23_W_1) }, }, - /* EVEX_W_0F3A38_P_2 */ + /* EVEX_W_0F3A38 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A38_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A38_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A38_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A38_W_1) }, }, - /* EVEX_W_0F3A39_P_2 */ + /* EVEX_W_0F3A39 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A39_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A39_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A39_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A39_W_1) }, }, - /* EVEX_W_0F3A3A_P_2 */ + /* EVEX_W_0F3A3A */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A_W_1) }, }, - /* EVEX_W_0F3A3B_P_2 */ + /* EVEX_W_0F3A3B */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B_W_1) }, }, - /* EVEX_W_0F3A42_P_2 */ + /* EVEX_W_0F3A42 */ { { "vdbpsadbw", { XM, Vex, EXx, Ib }, 0 }, }, - /* EVEX_W_0F3A43_P_2 */ + /* EVEX_W_0F3A43 */ { - { EVEX_LEN_TABLE (EVEX_LEN_0F3A43_P_2_W_0) }, - { EVEX_LEN_TABLE (EVEX_LEN_0F3A43_P_2_W_1) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A43_W_0) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A43_W_1) }, }, - /* EVEX_W_0F3A70_P_2 */ + /* EVEX_W_0F3A70 */ { { Bad_Opcode }, { "vpshldw", { XM, Vex, EXx, Ib }, 0 }, }, - /* EVEX_W_0F3A72_P_2 */ + /* EVEX_W_0F3A72 */ { { Bad_Opcode }, { "vpshrdw", { XM, Vex, EXx, Ib }, 0 }, diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h index 120c55d..54176af 100644 --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -110,31 +110,31 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F5E) }, { PREFIX_TABLE (PREFIX_EVEX_0F5F) }, /* 60 */ - { PREFIX_TABLE (PREFIX_VEX_0F60) }, - { PREFIX_TABLE (PREFIX_VEX_0F61) }, + { "vpunpcklbw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpunpcklwd", { XM, Vex, EXx }, PREFIX_DATA }, { VEX_W_TABLE (EVEX_W_0F62) }, - { PREFIX_TABLE (PREFIX_VEX_0F63) }, - { PREFIX_TABLE (PREFIX_EVEX_0F64) }, - { PREFIX_TABLE (PREFIX_EVEX_0F65) }, - { PREFIX_TABLE (PREFIX_EVEX_0F66) }, - { PREFIX_TABLE (PREFIX_VEX_0F67) }, + { "vpacksswb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpcmpgtb", { XMask, Vex, EXx }, PREFIX_DATA }, + { "vpcmpgtw", { XMask, Vex, EXx }, PREFIX_DATA }, + { VEX_W_TABLE (EVEX_W_0F66) }, + { "vpackuswb", { XM, Vex, EXx }, PREFIX_DATA }, /* 68 */ - { PREFIX_TABLE (PREFIX_VEX_0F68) }, - { PREFIX_TABLE (PREFIX_VEX_0F69) }, + { "vpunpckhbw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpunpckhwd", { XM, Vex, EXx }, PREFIX_DATA }, { VEX_W_TABLE (EVEX_W_0F6A) }, { VEX_W_TABLE (EVEX_W_0F6B) }, { VEX_W_TABLE (EVEX_W_0F6C) }, { VEX_W_TABLE (EVEX_W_0F6D) }, - { PREFIX_TABLE (PREFIX_EVEX_0F6E) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F6E) }, { PREFIX_TABLE (PREFIX_EVEX_0F6F) }, /* 70 */ { PREFIX_TABLE (PREFIX_EVEX_0F70) }, { REG_TABLE (REG_EVEX_0F71) }, { REG_TABLE (REG_EVEX_0F72) }, { REG_TABLE (REG_EVEX_0F73) }, - { PREFIX_TABLE (PREFIX_EVEX_0F74) }, - { PREFIX_TABLE (PREFIX_EVEX_0F75) }, - { PREFIX_TABLE (PREFIX_EVEX_0F76) }, + { "vpcmpeqb", { XMask, Vex, EXx }, PREFIX_DATA }, + { "vpcmpeqw", { XMask, Vex, EXx }, PREFIX_DATA }, + { VEX_W_TABLE (EVEX_W_0F76) }, { Bad_Opcode }, /* 78 */ { PREFIX_TABLE (PREFIX_EVEX_0F78) }, @@ -222,8 +222,8 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { PREFIX_TABLE (PREFIX_EVEX_0FC2) }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0FC4) }, - { PREFIX_TABLE (PREFIX_EVEX_0FC5) }, + { EVEX_LEN_TABLE (EVEX_LEN_0FC4) }, + { EVEX_LEN_TABLE (EVEX_LEN_0FC5) }, { "vshufpX", { XM, Vex, EXx, Ib }, PREFIX_OPCODE }, { Bad_Opcode }, /* C8 */ @@ -237,67 +237,67 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, /* D0 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0FD1) }, + { "vpsrlw", { XM, Vex, EXxmm }, PREFIX_DATA }, { VEX_W_TABLE (EVEX_W_0FD2) }, { VEX_W_TABLE (EVEX_W_0FD3) }, { VEX_W_TABLE (EVEX_W_0FD4) }, - { PREFIX_TABLE (PREFIX_VEX_0FD5) }, - { PREFIX_TABLE (PREFIX_EVEX_0FD6) }, + { "vpmullw", { XM, Vex, EXx }, PREFIX_DATA }, + { EVEX_LEN_TABLE (EVEX_LEN_0FD6) }, { Bad_Opcode }, /* D8 */ - { PREFIX_TABLE (PREFIX_VEX_0FD8) }, - { PREFIX_TABLE (PREFIX_VEX_0FD9) }, - { PREFIX_TABLE (PREFIX_VEX_0FDA) }, - { PREFIX_TABLE (PREFIX_EVEX_0FDB) }, - { PREFIX_TABLE (PREFIX_VEX_0FDC) }, - { PREFIX_TABLE (PREFIX_VEX_0FDD) }, - { PREFIX_TABLE (PREFIX_VEX_0FDE) }, - { PREFIX_TABLE (PREFIX_EVEX_0FDF) }, + { "vpsubusb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsubusw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpminub", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpand%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddusb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddusw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxub", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpandn%DQ", { XM, Vex, EXx }, PREFIX_DATA }, /* E0 */ - { PREFIX_TABLE (PREFIX_VEX_0FE0) }, - { PREFIX_TABLE (PREFIX_VEX_0FE1) }, - { PREFIX_TABLE (PREFIX_EVEX_0FE2) }, - { PREFIX_TABLE (PREFIX_VEX_0FE3) }, - { PREFIX_TABLE (PREFIX_VEX_0FE4) }, - { PREFIX_TABLE (PREFIX_VEX_0FE5) }, + { "vpavgb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsraw", { XM, Vex, EXxmm }, PREFIX_DATA }, + { "vpsra%DQ", { XM, Vex, EXxmm }, PREFIX_DATA }, + { "vpavgw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmulhuw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmulhw", { XM, Vex, EXx }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_EVEX_0FE6) }, - { PREFIX_TABLE (PREFIX_EVEX_0FE7) }, + { VEX_W_TABLE (EVEX_W_0FE7) }, /* E8 */ - { PREFIX_TABLE (PREFIX_VEX_0FE8) }, - { PREFIX_TABLE (PREFIX_VEX_0FE9) }, - { PREFIX_TABLE (PREFIX_VEX_0FEA) }, - { PREFIX_TABLE (PREFIX_EVEX_0FEB) }, - { PREFIX_TABLE (PREFIX_VEX_0FEC) }, - { PREFIX_TABLE (PREFIX_VEX_0FED) }, - { PREFIX_TABLE (PREFIX_VEX_0FEE) }, - { PREFIX_TABLE (PREFIX_EVEX_0FEF) }, + { "vpsubsb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsubsw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpminsw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpor%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddsb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddsw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxsw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpxor%DQ", { XM, Vex, EXx }, PREFIX_DATA }, /* F0 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0FF1) }, + { "vpsllw", { XM, Vex, EXxmm }, PREFIX_DATA }, { VEX_W_TABLE (EVEX_W_0FF2) }, { VEX_W_TABLE (EVEX_W_0FF3) }, { VEX_W_TABLE (EVEX_W_0FF4) }, - { PREFIX_TABLE (PREFIX_VEX_0FF5) }, - { PREFIX_TABLE (PREFIX_VEX_0FF6) }, + { "vpmaddwd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsadbw", { XM, Vex, EXx }, PREFIX_DATA }, { Bad_Opcode }, /* F8 */ - { PREFIX_TABLE (PREFIX_VEX_0FF8) }, - { PREFIX_TABLE (PREFIX_VEX_0FF9) }, + { "vpsubb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsubw", { XM, Vex, EXx }, PREFIX_DATA }, { VEX_W_TABLE (EVEX_W_0FFA) }, { VEX_W_TABLE (EVEX_W_0FFB) }, - { PREFIX_TABLE (PREFIX_VEX_0FFC) }, - { PREFIX_TABLE (PREFIX_VEX_0FFD) }, + { "vpaddb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddw", { XM, Vex, EXx }, PREFIX_DATA }, { VEX_W_TABLE (EVEX_W_0FFE) }, { Bad_Opcode }, }, /* EVEX_0F38 */ { /* 00 */ - { PREFIX_TABLE (PREFIX_VEX_0F3800) }, + { "vpshufb", { XM, Vex, EXx }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3804) }, + { "vpmaddubsw", { XM, Vex, EXx }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -305,9 +305,9 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F380B) }, - { PREFIX_TABLE (PREFIX_VEX_0F380C) }, - { PREFIX_TABLE (PREFIX_EVEX_0F380D) }, + { "vpmulhrsw", { XM, Vex, EXx }, PREFIX_DATA }, + { VEX_W_TABLE (VEX_W_0F380C) }, + { VEX_W_TABLE (EVEX_W_0F380D) }, { Bad_Opcode }, { Bad_Opcode }, /* 10 */ @@ -317,17 +317,17 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F3813) }, { PREFIX_TABLE (PREFIX_EVEX_0F3814) }, { PREFIX_TABLE (PREFIX_EVEX_0F3815) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3816) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3816) }, { Bad_Opcode }, /* 18 */ - { PREFIX_TABLE (PREFIX_VEX_0F3818) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3819) }, - { PREFIX_TABLE (PREFIX_EVEX_0F381A) }, - { PREFIX_TABLE (PREFIX_EVEX_0F381B) }, - { PREFIX_TABLE (PREFIX_VEX_0F381C) }, - { PREFIX_TABLE (PREFIX_VEX_0F381D) }, - { PREFIX_TABLE (PREFIX_EVEX_0F381E) }, - { PREFIX_TABLE (PREFIX_EVEX_0F381F) }, + { VEX_W_TABLE (VEX_W_0F3818) }, + { VEX_W_TABLE (EVEX_W_0F3819) }, + { VEX_W_TABLE (EVEX_W_0F381A) }, + { VEX_W_TABLE (EVEX_W_0F381B) }, + { "vpabsb", { XM, EXx }, PREFIX_DATA }, + { "vpabsw", { XM, EXx }, PREFIX_DATA }, + { VEX_W_TABLE (EVEX_W_0F381E) }, + { VEX_W_TABLE (EVEX_W_0F381F) }, /* 20 */ { PREFIX_TABLE (PREFIX_EVEX_0F3820) }, { PREFIX_TABLE (PREFIX_EVEX_0F3821) }, @@ -342,8 +342,8 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F3829) }, { PREFIX_TABLE (PREFIX_EVEX_0F382A) }, { VEX_W_TABLE (EVEX_W_0F382B) }, - { PREFIX_TABLE (PREFIX_EVEX_0F382C) }, - { PREFIX_TABLE (PREFIX_EVEX_0F382D) }, + { "vscalefp%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vscalefs%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ @@ -353,49 +353,49 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_0F3833) }, { PREFIX_TABLE (PREFIX_EVEX_0F3834) }, { PREFIX_TABLE (PREFIX_EVEX_0F3835) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3836) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3837) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3836) }, + { VEX_W_TABLE (EVEX_W_0F3837) }, /* 38 */ { PREFIX_TABLE (PREFIX_EVEX_0F3838) }, { PREFIX_TABLE (PREFIX_EVEX_0F3839) }, { PREFIX_TABLE (PREFIX_EVEX_0F383A) }, - { PREFIX_TABLE (PREFIX_EVEX_0F383B) }, - { PREFIX_TABLE (PREFIX_VEX_0F383C) }, - { PREFIX_TABLE (PREFIX_EVEX_0F383D) }, - { PREFIX_TABLE (PREFIX_VEX_0F383E) }, - { PREFIX_TABLE (PREFIX_EVEX_0F383F) }, + { "vpminu%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxsb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxs%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxuw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxu%DQ", { XM, Vex, EXx }, PREFIX_DATA }, /* 40 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3840) }, - { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3842) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3843) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3844) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3845) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3846) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3847) }, + { "vpmull%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { Bad_Opcode }, + { "vgetexpp%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA }, + { "vgetexps%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA }, + { "vplzcnt%DQ", { XM, EXx }, PREFIX_DATA }, + { "vpsrlv%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsrav%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsllv%DQ", { XM, Vex, EXx }, PREFIX_DATA }, /* 48 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F384C) }, - { PREFIX_TABLE (PREFIX_EVEX_0F384D) }, - { PREFIX_TABLE (PREFIX_EVEX_0F384E) }, - { PREFIX_TABLE (PREFIX_EVEX_0F384F) }, + { "vrcp14p%XW", { XM, EXx }, PREFIX_DATA }, + { "vrcp14s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vrsqrt14p%XW", { XM, EXx }, 0 }, + { "vrsqrt14s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, /* 50 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3850) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3851) }, + { "vpdpbusd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpdpbusds", { XM, Vex, EXx }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_EVEX_0F3852) }, { PREFIX_TABLE (PREFIX_EVEX_0F3853) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3854) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3855) }, + { "vpopcnt%BW", { XM, EXx }, PREFIX_DATA }, + { "vpopcnt%DQ", { XM, EXx }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, /* 58 */ - { PREFIX_TABLE (PREFIX_VEX_0F3858) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3859) }, - { PREFIX_TABLE (PREFIX_EVEX_0F385A) }, - { PREFIX_TABLE (PREFIX_EVEX_0F385B) }, + { VEX_W_TABLE (VEX_W_0F3858) }, + { VEX_W_TABLE (EVEX_W_0F3859) }, + { VEX_W_TABLE (EVEX_W_0F385A) }, + { VEX_W_TABLE (EVEX_W_0F385B) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -403,11 +403,11 @@ static const struct dis386 evex_table[][256] = { /* 60 */ { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3862) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3863) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3864) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3865) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3866) }, + { "vpexpand%BW", { XM, EXbwUnit }, PREFIX_DATA }, + { "vpcompress%BW", { EXbwUnit, XM }, PREFIX_DATA }, + { "vpblendm%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { "vblendmp%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpblendm%BW", { XM, Vex, EXx }, PREFIX_DATA }, { Bad_Opcode }, /* 68 */ { PREFIX_TABLE (PREFIX_EVEX_0F3868) }, @@ -419,113 +419,113 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 70 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3870) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3871) }, + { VEX_W_TABLE (EVEX_W_0F3870) }, + { "vpshldv%DQ", { XM, Vex, EXx }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_EVEX_0F3872) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3873) }, + { "vpshrdv%DQ", { XM, Vex, EXx }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3875) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3876) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3877) }, + { "vpermi2%BW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpermi2%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpermi2p%XW", { XM, Vex, EXx }, PREFIX_DATA }, /* 78 */ - { PREFIX_TABLE (PREFIX_VEX_0F3878) }, - { PREFIX_TABLE (PREFIX_VEX_0F3879) }, - { PREFIX_TABLE (PREFIX_EVEX_0F387A) }, - { PREFIX_TABLE (PREFIX_EVEX_0F387B) }, - { PREFIX_TABLE (PREFIX_EVEX_0F387C) }, - { PREFIX_TABLE (PREFIX_EVEX_0F387D) }, - { PREFIX_TABLE (PREFIX_EVEX_0F387E) }, - { PREFIX_TABLE (PREFIX_EVEX_0F387F) }, + { VEX_W_TABLE (VEX_W_0F3878) }, + { VEX_W_TABLE (VEX_W_0F3879) }, + { VEX_W_TABLE (EVEX_W_0F387A) }, + { VEX_W_TABLE (EVEX_W_0F387B) }, + { "vpbroadcastK", { XM, Rdq }, PREFIX_DATA }, + { "vpermt2%BW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpermt2%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpermt2p%XW", { XM, Vex, EXx }, PREFIX_DATA }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3883) }, + { VEX_W_TABLE (EVEX_W_0F3883) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 88 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3888) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3889) }, - { PREFIX_TABLE (PREFIX_EVEX_0F388A) }, - { PREFIX_TABLE (PREFIX_EVEX_0F388B) }, + { "vexpandp%XW", { XM, EXEvexXGscat }, PREFIX_DATA }, + { "vpexpand%DQ", { XM, EXEvexXGscat }, PREFIX_DATA }, + { "vcompressp%XW", { EXEvexXGscat, XM }, PREFIX_DATA }, + { "vpcompress%DQ", { EXEvexXGscat, XM }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F388D) }, + { "vperm%BW", { XM, Vex, EXx }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F388F) }, + { "vpshufbitqmb", { XMask, Vex, EXx }, PREFIX_DATA }, /* 90 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3890) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3891) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3892) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3893) }, + { "vpgatherd%DQ", { XM, MVexVSIBDWpX }, PREFIX_DATA }, + { VEX_W_TABLE (EVEX_W_0F3891) }, + { "vgatherdp%XW", { XM, MVexVSIBDWpX}, PREFIX_DATA }, + { VEX_W_TABLE (EVEX_W_0F3893) }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3896) }, - { PREFIX_TABLE (PREFIX_VEX_0F3897) }, + { "vfmaddsub132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfmsubadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, /* 98 */ - { PREFIX_TABLE (PREFIX_VEX_0F3898) }, - { PREFIX_TABLE (PREFIX_VEX_0F3899) }, + { "vfmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_EVEX_0F389A) }, { PREFIX_TABLE (PREFIX_EVEX_0F389B) }, - { PREFIX_TABLE (PREFIX_VEX_0F389C) }, - { PREFIX_TABLE (PREFIX_VEX_0F389D) }, - { PREFIX_TABLE (PREFIX_VEX_0F389E) }, - { PREFIX_TABLE (PREFIX_VEX_0F389F) }, + { "vfnmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfnmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, /* A0 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38A0) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38A1) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38A2) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38A3) }, + { "vpscatterd%DQ", { MVexVSIBDWpX, XM }, PREFIX_DATA }, + { VEX_W_TABLE (EVEX_W_0F38A1) }, + { "vscatterdp%XW", { MVexVSIBDWpX, XM }, PREFIX_DATA }, + { VEX_W_TABLE (EVEX_W_0F38A3) }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F38A6) }, - { PREFIX_TABLE (PREFIX_VEX_0F38A7) }, + { "vfmaddsub213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfmsubadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, /* A8 */ - { PREFIX_TABLE (PREFIX_VEX_0F38A8) }, - { PREFIX_TABLE (PREFIX_VEX_0F38A9) }, + { "vfmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_EVEX_0F38AA) }, { PREFIX_TABLE (PREFIX_EVEX_0F38AB) }, - { PREFIX_TABLE (PREFIX_VEX_0F38AC) }, - { PREFIX_TABLE (PREFIX_VEX_0F38AD) }, - { PREFIX_TABLE (PREFIX_VEX_0F38AE) }, - { PREFIX_TABLE (PREFIX_VEX_0F38AF) }, + { "vfnmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfnmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, /* B0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F38B4) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38B5) }, - { PREFIX_TABLE (PREFIX_VEX_0F38B6) }, - { PREFIX_TABLE (PREFIX_VEX_0F38B7) }, + { "vpmadd52luq", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmadd52huq", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfmaddsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfmsubadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, /* B8 */ - { PREFIX_TABLE (PREFIX_VEX_0F38B8) }, - { PREFIX_TABLE (PREFIX_VEX_0F38B9) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BA) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BB) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BC) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BD) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BE) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BF) }, + { "vfmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfnmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, + { "vfnmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, PREFIX_DATA }, + { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, PREFIX_DATA }, /* C0 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F38C4) }, + { "vpconflict%DQ", { XM, EXx }, PREFIX_DATA }, { Bad_Opcode }, { REG_TABLE (REG_EVEX_0F38C6) }, { REG_TABLE (REG_EVEX_0F38C7) }, /* C8 */ - { PREFIX_TABLE (PREFIX_EVEX_0F38C8) }, + { "vexp2p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F38CA) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38CB) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38CC) }, - { PREFIX_TABLE (PREFIX_EVEX_0F38CD) }, + { "vrcp28p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA }, + { "vrcp28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA }, + { "vrsqrt28p%XW", { XM, EXx, EXxEVexS }, PREFIX_DATA }, + { "vrsqrt28s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F38CF) }, + { VEX_W_TABLE (VEX_W_0F38CF) }, /* D0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -540,10 +540,10 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F38DC) }, - { PREFIX_TABLE (PREFIX_VEX_0F38DD) }, - { PREFIX_TABLE (PREFIX_VEX_0F38DE) }, - { PREFIX_TABLE (PREFIX_VEX_0F38DF) }, + { "vaesenc", { XM, Vex, EXx }, PREFIX_DATA }, + { "vaesenclast", { XM, Vex, EXx }, PREFIX_DATA }, + { "vaesdec", { XM, Vex, EXx }, PREFIX_DATA }, + { "vaesdeclast", { XM, Vex, EXx }, PREFIX_DATA }, /* E0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -584,50 +584,50 @@ static const struct dis386 evex_table[][256] = { /* EVEX_0F3A */ { /* 00 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3A00) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A01) }, + { VEX_W_TABLE (EVEX_W_0F3A00) }, + { VEX_W_TABLE (EVEX_W_0F3A01) }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A03) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A04) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A05) }, + { "valign%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { VEX_W_TABLE (VEX_W_0F3A04) }, + { VEX_W_TABLE (EVEX_W_0F3A05) }, { Bad_Opcode }, { Bad_Opcode }, /* 08 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3A08) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A09) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A0A) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A0B) }, + { VEX_W_TABLE (EVEX_W_0F3A08) }, + { VEX_W_TABLE (EVEX_W_0F3A09) }, + { VEX_W_TABLE (EVEX_W_0F3A0A) }, + { VEX_W_TABLE (EVEX_W_0F3A0B) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3A0F) }, + { "vpalignr", { XM, Vex, EXx, Ib }, PREFIX_DATA }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A14) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A15) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A16) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A17) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A14) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A15) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A16) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A17) }, /* 18 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3A18) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A19) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A1A) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A1B) }, - { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3A1D) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A1E) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A1F) }, + { VEX_W_TABLE (EVEX_W_0F3A18) }, + { VEX_W_TABLE (EVEX_W_0F3A19) }, + { VEX_W_TABLE (EVEX_W_0F3A1A) }, + { VEX_W_TABLE (EVEX_W_0F3A1B) }, + { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_0F3A1D) }, + { "vpcmpu%DQ", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA }, + { "vpcmp%DQ", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA }, /* 20 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3A20) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A21) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A22) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A23) }, - { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A25) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A26) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A27) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A20) }, + { VEX_W_TABLE (EVEX_W_0F3A21) }, + { EVEX_LEN_TABLE (EVEX_LEN_0F3A22) }, + { VEX_W_TABLE (EVEX_W_0F3A23) }, + { Bad_Opcode }, + { "vpternlog%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { "vgetmantp%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA }, + { "vgetmants%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA }, /* 28 */ { Bad_Opcode }, { Bad_Opcode }, @@ -647,20 +647,20 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 38 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3A38) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A39) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A3A) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A3B) }, + { VEX_W_TABLE (EVEX_W_0F3A38) }, + { VEX_W_TABLE (EVEX_W_0F3A39) }, + { VEX_W_TABLE (EVEX_W_0F3A3A) }, + { VEX_W_TABLE (EVEX_W_0F3A3B) }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A3E) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A3F) }, + { "vpcmpu%BW", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA }, + { "vpcmp%BW", { XMask, Vex, EXx, VPCMP }, PREFIX_DATA }, /* 40 */ { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A42) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A43) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A44) }, + { VEX_W_TABLE (EVEX_W_0F3A42) }, + { VEX_W_TABLE (EVEX_W_0F3A43) }, + { "vpclmulqdq", { XM, Vex, EXx, PCLMUL }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -674,14 +674,14 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 50 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3A50) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A51) }, + { "vrangep%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA }, + { "vranges%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A54) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A55) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A56) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A57) }, + { "vfixupimmp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA }, + { "vfixupimms%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA }, + { "vreducep%XW", { XM, EXx, EXxEVexS, Ib }, PREFIX_DATA }, + { "vreduces%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexS, Ib }, PREFIX_DATA }, /* 58 */ { Bad_Opcode }, { Bad_Opcode }, @@ -698,8 +698,8 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A66) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A67) }, + { "vfpclassp%XW%XZ", { XMask, EXx, Ib }, PREFIX_DATA }, + { "vfpclasss%XW", { XMask, EXVexWdqScalar, Ib }, PREFIX_DATA }, /* 68 */ { Bad_Opcode }, { Bad_Opcode }, @@ -710,10 +710,10 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 70 */ - { PREFIX_TABLE (PREFIX_EVEX_0F3A70) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A71) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A72) }, - { PREFIX_TABLE (PREFIX_EVEX_0F3A73) }, + { VEX_W_TABLE (EVEX_W_0F3A70) }, + { "vpshld%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { VEX_W_TABLE (EVEX_W_0F3A72) }, + { "vpshrd%DQ", { XM, Vex, EXx, Ib }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -815,8 +815,8 @@ static const struct dis386 evex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3ACE) }, - { PREFIX_TABLE (PREFIX_VEX_0F3ACF) }, + { VEX_W_TABLE (VEX_W_0F3ACE) }, + { VEX_W_TABLE (VEX_W_0F3ACF) }, /* D0 */ { Bad_Opcode }, { Bad_Opcode }, diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index acee3c9..583d1d0 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -792,7 +792,7 @@ enum MOD_0FD7, MOD_0FE7_PREFIX_2, MOD_0FF0_PREFIX_3, - MOD_0F382A_PREFIX_2, + MOD_0F382A, MOD_VEX_0F3849_X86_64_P_0_W_0, MOD_VEX_0F3849_X86_64_P_2_W_0, MOD_VEX_0F3849_X86_64_P_3_W_0, @@ -804,7 +804,7 @@ enum MOD_VEX_0F385E_X86_64_P_1_W_0, MOD_VEX_0F385E_X86_64_P_2_W_0, MOD_VEX_0F385E_X86_64_P_3_W_0, - MOD_0F38F5_PREFIX_2, + MOD_0F38F5, MOD_0F38F6_PREFIX_0, MOD_0F38F8_PREFIX_1, MOD_0F38F8_PREFIX_2, @@ -882,26 +882,26 @@ enum MOD_VEX_W_1_0F99_P_2_LEN_0, MOD_VEX_0FAE_REG_2, MOD_VEX_0FAE_REG_3, - MOD_VEX_0FD7_PREFIX_2, - MOD_VEX_0FE7_PREFIX_2, + MOD_VEX_0FD7, + MOD_VEX_0FE7, MOD_VEX_0FF0_PREFIX_3, - MOD_VEX_0F381A_PREFIX_2, - MOD_VEX_0F382A_PREFIX_2, - MOD_VEX_0F382C_PREFIX_2, - MOD_VEX_0F382D_PREFIX_2, - MOD_VEX_0F382E_PREFIX_2, - MOD_VEX_0F382F_PREFIX_2, - MOD_VEX_0F385A_PREFIX_2, - MOD_VEX_0F388C_PREFIX_2, - MOD_VEX_0F388E_PREFIX_2, - MOD_VEX_W_0_0F3A30_P_2_LEN_0, - MOD_VEX_W_1_0F3A30_P_2_LEN_0, - MOD_VEX_W_0_0F3A31_P_2_LEN_0, - MOD_VEX_W_1_0F3A31_P_2_LEN_0, - MOD_VEX_W_0_0F3A32_P_2_LEN_0, - MOD_VEX_W_1_0F3A32_P_2_LEN_0, - MOD_VEX_W_0_0F3A33_P_2_LEN_0, - MOD_VEX_W_1_0F3A33_P_2_LEN_0, + MOD_VEX_0F381A, + MOD_VEX_0F382A, + MOD_VEX_0F382C, + MOD_VEX_0F382D, + MOD_VEX_0F382E, + MOD_VEX_0F382F, + MOD_VEX_0F385A, + MOD_VEX_0F388C, + MOD_VEX_0F388E, + MOD_VEX_0F3A30_L_0_W_0, + MOD_VEX_0F3A30_L_0_W_1, + MOD_VEX_0F3A31_L_0_W_0, + MOD_VEX_0F3A31_L_0_W_1, + MOD_VEX_0F3A32_L_0_W_0, + MOD_VEX_0F3A32_L_0_W_1, + MOD_VEX_0F3A33_L_0_W_0, + MOD_VEX_0F3A33_L_0_W_1, MOD_VEX_0FXOP_09_12, @@ -912,14 +912,14 @@ enum MOD_EVEX_0F16_PREFIX_2, MOD_EVEX_0F17, MOD_EVEX_0F2B, - MOD_EVEX_0F381A_P_2_W_0, - MOD_EVEX_0F381A_P_2_W_1, - MOD_EVEX_0F381B_P_2_W_0, - MOD_EVEX_0F381B_P_2_W_1, - MOD_EVEX_0F385A_P_2_W_0, - MOD_EVEX_0F385A_P_2_W_1, - MOD_EVEX_0F385B_P_2_W_0, - MOD_EVEX_0F385B_P_2_W_1, + MOD_EVEX_0F381A_W_0, + MOD_EVEX_0F381A_W_1, + MOD_EVEX_0F381B_W_0, + MOD_EVEX_0F381B_W_1, + MOD_EVEX_0F385A_W_0, + MOD_EVEX_0F385A_W_1, + MOD_EVEX_0F385B_W_0, + MOD_EVEX_0F385B_W_1, MOD_EVEX_0F38C6_REG_1, MOD_EVEX_0F38C6_REG_2, MOD_EVEX_0F38C6_REG_5, @@ -985,12 +985,8 @@ enum PREFIX_0F60, PREFIX_0F61, PREFIX_0F62, - PREFIX_0F6C, - PREFIX_0F6D, PREFIX_0F6F, PREFIX_0F70, - PREFIX_0F73_REG_3, - PREFIX_0F73_REG_7, PREFIX_0F78, PREFIX_0F79, PREFIX_0F7C, @@ -1022,84 +1018,18 @@ enum PREFIX_0FE7, PREFIX_0FF0, PREFIX_0FF7, - PREFIX_0F3810, - PREFIX_0F3814, - PREFIX_0F3815, - PREFIX_0F3817, - PREFIX_0F3820, - PREFIX_0F3821, - PREFIX_0F3822, - PREFIX_0F3823, - PREFIX_0F3824, - PREFIX_0F3825, - PREFIX_0F3828, - PREFIX_0F3829, - PREFIX_0F382A, - PREFIX_0F382B, - PREFIX_0F3830, - PREFIX_0F3831, - PREFIX_0F3832, - PREFIX_0F3833, - PREFIX_0F3834, - PREFIX_0F3835, - PREFIX_0F3837, - PREFIX_0F3838, - PREFIX_0F3839, - PREFIX_0F383A, - PREFIX_0F383B, - PREFIX_0F383C, - PREFIX_0F383D, - PREFIX_0F383E, - PREFIX_0F383F, - PREFIX_0F3840, - PREFIX_0F3841, - PREFIX_0F3880, - PREFIX_0F3881, - PREFIX_0F3882, PREFIX_0F38C8, PREFIX_0F38C9, PREFIX_0F38CA, PREFIX_0F38CB, PREFIX_0F38CC, PREFIX_0F38CD, - PREFIX_0F38CF, - PREFIX_0F38DB, - PREFIX_0F38DC, - PREFIX_0F38DD, - PREFIX_0F38DE, - PREFIX_0F38DF, PREFIX_0F38F0, PREFIX_0F38F1, - PREFIX_0F38F5, PREFIX_0F38F6, PREFIX_0F38F8, PREFIX_0F38F9, - PREFIX_0F3A08, - PREFIX_0F3A09, - PREFIX_0F3A0A, - PREFIX_0F3A0B, - PREFIX_0F3A0C, - PREFIX_0F3A0D, - PREFIX_0F3A0E, - PREFIX_0F3A14, - PREFIX_0F3A15, - PREFIX_0F3A16, - PREFIX_0F3A17, - PREFIX_0F3A20, - PREFIX_0F3A21, - PREFIX_0F3A22, - PREFIX_0F3A40, - PREFIX_0F3A41, - PREFIX_0F3A42, - PREFIX_0F3A44, - PREFIX_0F3A60, - PREFIX_0F3A61, - PREFIX_0F3A62, - PREFIX_0F3A63, PREFIX_0F3ACC, - PREFIX_0F3ACE, - PREFIX_0F3ACF, - PREFIX_0F3ADF, PREFIX_VEX_0F10, PREFIX_VEX_0F11, PREFIX_VEX_0F12, @@ -1128,36 +1058,8 @@ enum PREFIX_VEX_0F5D, PREFIX_VEX_0F5E, PREFIX_VEX_0F5F, - PREFIX_VEX_0F60, - PREFIX_VEX_0F61, - PREFIX_VEX_0F62, - PREFIX_VEX_0F63, - PREFIX_VEX_0F64, - PREFIX_VEX_0F65, - PREFIX_VEX_0F66, - PREFIX_VEX_0F67, - PREFIX_VEX_0F68, - PREFIX_VEX_0F69, - PREFIX_VEX_0F6A, - PREFIX_VEX_0F6B, - PREFIX_VEX_0F6C, - PREFIX_VEX_0F6D, - PREFIX_VEX_0F6E, PREFIX_VEX_0F6F, PREFIX_VEX_0F70, - PREFIX_VEX_0F71_REG_2, - PREFIX_VEX_0F71_REG_4, - PREFIX_VEX_0F71_REG_6, - PREFIX_VEX_0F72_REG_2, - PREFIX_VEX_0F72_REG_4, - PREFIX_VEX_0F72_REG_6, - PREFIX_VEX_0F73_REG_2, - PREFIX_VEX_0F73_REG_3, - PREFIX_VEX_0F73_REG_6, - PREFIX_VEX_0F73_REG_7, - PREFIX_VEX_0F74, - PREFIX_VEX_0F75, - PREFIX_VEX_0F76, PREFIX_VEX_0F77, PREFIX_VEX_0F7C, PREFIX_VEX_0F7D, @@ -1170,166 +1072,13 @@ enum PREFIX_VEX_0F98, PREFIX_VEX_0F99, PREFIX_VEX_0FC2, - PREFIX_VEX_0FC4, - PREFIX_VEX_0FC5, PREFIX_VEX_0FD0, - PREFIX_VEX_0FD1, - PREFIX_VEX_0FD2, - PREFIX_VEX_0FD3, - PREFIX_VEX_0FD4, - PREFIX_VEX_0FD5, - PREFIX_VEX_0FD6, - PREFIX_VEX_0FD7, - PREFIX_VEX_0FD8, - PREFIX_VEX_0FD9, - PREFIX_VEX_0FDA, - PREFIX_VEX_0FDB, - PREFIX_VEX_0FDC, - PREFIX_VEX_0FDD, - PREFIX_VEX_0FDE, - PREFIX_VEX_0FDF, - PREFIX_VEX_0FE0, - PREFIX_VEX_0FE1, - PREFIX_VEX_0FE2, - PREFIX_VEX_0FE3, - PREFIX_VEX_0FE4, - PREFIX_VEX_0FE5, PREFIX_VEX_0FE6, - PREFIX_VEX_0FE7, - PREFIX_VEX_0FE8, - PREFIX_VEX_0FE9, - PREFIX_VEX_0FEA, - PREFIX_VEX_0FEB, - PREFIX_VEX_0FEC, - PREFIX_VEX_0FED, - PREFIX_VEX_0FEE, - PREFIX_VEX_0FEF, PREFIX_VEX_0FF0, - PREFIX_VEX_0FF1, - PREFIX_VEX_0FF2, - PREFIX_VEX_0FF3, - PREFIX_VEX_0FF4, - PREFIX_VEX_0FF5, - PREFIX_VEX_0FF6, - PREFIX_VEX_0FF7, - PREFIX_VEX_0FF8, - PREFIX_VEX_0FF9, - PREFIX_VEX_0FFA, - PREFIX_VEX_0FFB, - PREFIX_VEX_0FFC, - PREFIX_VEX_0FFD, - PREFIX_VEX_0FFE, - PREFIX_VEX_0F3800, - PREFIX_VEX_0F3801, - PREFIX_VEX_0F3802, - PREFIX_VEX_0F3803, - PREFIX_VEX_0F3804, - PREFIX_VEX_0F3805, - PREFIX_VEX_0F3806, - PREFIX_VEX_0F3807, - PREFIX_VEX_0F3808, - PREFIX_VEX_0F3809, - PREFIX_VEX_0F380A, - PREFIX_VEX_0F380B, - PREFIX_VEX_0F380C, - PREFIX_VEX_0F380D, - PREFIX_VEX_0F380E, - PREFIX_VEX_0F380F, - PREFIX_VEX_0F3813, - PREFIX_VEX_0F3816, - PREFIX_VEX_0F3817, - PREFIX_VEX_0F3818, - PREFIX_VEX_0F3819, - PREFIX_VEX_0F381A, - PREFIX_VEX_0F381C, - PREFIX_VEX_0F381D, - PREFIX_VEX_0F381E, - PREFIX_VEX_0F3820, - PREFIX_VEX_0F3821, - PREFIX_VEX_0F3822, - PREFIX_VEX_0F3823, - PREFIX_VEX_0F3824, - PREFIX_VEX_0F3825, - PREFIX_VEX_0F3828, - PREFIX_VEX_0F3829, - PREFIX_VEX_0F382A, - PREFIX_VEX_0F382B, - PREFIX_VEX_0F382C, - PREFIX_VEX_0F382D, - PREFIX_VEX_0F382E, - PREFIX_VEX_0F382F, - PREFIX_VEX_0F3830, - PREFIX_VEX_0F3831, - PREFIX_VEX_0F3832, - PREFIX_VEX_0F3833, - PREFIX_VEX_0F3834, - PREFIX_VEX_0F3835, - PREFIX_VEX_0F3836, - PREFIX_VEX_0F3837, - PREFIX_VEX_0F3838, - PREFIX_VEX_0F3839, - PREFIX_VEX_0F383A, - PREFIX_VEX_0F383B, - PREFIX_VEX_0F383C, - PREFIX_VEX_0F383D, - PREFIX_VEX_0F383E, - PREFIX_VEX_0F383F, - PREFIX_VEX_0F3840, - PREFIX_VEX_0F3841, - PREFIX_VEX_0F3845, - PREFIX_VEX_0F3846, - PREFIX_VEX_0F3847, PREFIX_VEX_0F3849_X86_64, PREFIX_VEX_0F384B_X86_64, - PREFIX_VEX_0F3858, - PREFIX_VEX_0F3859, - PREFIX_VEX_0F385A, PREFIX_VEX_0F385C_X86_64, PREFIX_VEX_0F385E_X86_64, - PREFIX_VEX_0F3878, - PREFIX_VEX_0F3879, - PREFIX_VEX_0F388C, - PREFIX_VEX_0F388E, - PREFIX_VEX_0F3890, - PREFIX_VEX_0F3891, - PREFIX_VEX_0F3892, - PREFIX_VEX_0F3893, - PREFIX_VEX_0F3896, - PREFIX_VEX_0F3897, - PREFIX_VEX_0F3898, - PREFIX_VEX_0F3899, - PREFIX_VEX_0F389A, - PREFIX_VEX_0F389B, - PREFIX_VEX_0F389C, - PREFIX_VEX_0F389D, - PREFIX_VEX_0F389E, - PREFIX_VEX_0F389F, - PREFIX_VEX_0F38A6, - PREFIX_VEX_0F38A7, - PREFIX_VEX_0F38A8, - PREFIX_VEX_0F38A9, - PREFIX_VEX_0F38AA, - PREFIX_VEX_0F38AB, - PREFIX_VEX_0F38AC, - PREFIX_VEX_0F38AD, - PREFIX_VEX_0F38AE, - PREFIX_VEX_0F38AF, - PREFIX_VEX_0F38B6, - PREFIX_VEX_0F38B7, - PREFIX_VEX_0F38B8, - PREFIX_VEX_0F38B9, - PREFIX_VEX_0F38BA, - PREFIX_VEX_0F38BB, - PREFIX_VEX_0F38BC, - PREFIX_VEX_0F38BD, - PREFIX_VEX_0F38BE, - PREFIX_VEX_0F38BF, - PREFIX_VEX_0F38CF, - PREFIX_VEX_0F38DB, - PREFIX_VEX_0F38DC, - PREFIX_VEX_0F38DD, - PREFIX_VEX_0F38DE, - PREFIX_VEX_0F38DF, PREFIX_VEX_0F38F2, PREFIX_VEX_0F38F3_REG_1, PREFIX_VEX_0F38F3_REG_2, @@ -1337,73 +1086,6 @@ enum PREFIX_VEX_0F38F5, PREFIX_VEX_0F38F6, PREFIX_VEX_0F38F7, - PREFIX_VEX_0F3A00, - PREFIX_VEX_0F3A01, - PREFIX_VEX_0F3A02, - PREFIX_VEX_0F3A04, - PREFIX_VEX_0F3A05, - PREFIX_VEX_0F3A06, - PREFIX_VEX_0F3A08, - PREFIX_VEX_0F3A09, - PREFIX_VEX_0F3A0A, - PREFIX_VEX_0F3A0B, - PREFIX_VEX_0F3A0C, - PREFIX_VEX_0F3A0D, - PREFIX_VEX_0F3A0E, - PREFIX_VEX_0F3A0F, - PREFIX_VEX_0F3A14, - PREFIX_VEX_0F3A15, - PREFIX_VEX_0F3A16, - PREFIX_VEX_0F3A17, - PREFIX_VEX_0F3A18, - PREFIX_VEX_0F3A19, - PREFIX_VEX_0F3A1D, - PREFIX_VEX_0F3A20, - PREFIX_VEX_0F3A21, - PREFIX_VEX_0F3A22, - PREFIX_VEX_0F3A30, - PREFIX_VEX_0F3A31, - PREFIX_VEX_0F3A32, - PREFIX_VEX_0F3A33, - PREFIX_VEX_0F3A38, - PREFIX_VEX_0F3A39, - PREFIX_VEX_0F3A40, - PREFIX_VEX_0F3A41, - PREFIX_VEX_0F3A42, - PREFIX_VEX_0F3A44, - PREFIX_VEX_0F3A46, - PREFIX_VEX_0F3A48, - PREFIX_VEX_0F3A49, - PREFIX_VEX_0F3A4A, - PREFIX_VEX_0F3A4B, - PREFIX_VEX_0F3A4C, - PREFIX_VEX_0F3A5C, - PREFIX_VEX_0F3A5D, - PREFIX_VEX_0F3A5E, - PREFIX_VEX_0F3A5F, - PREFIX_VEX_0F3A60, - PREFIX_VEX_0F3A61, - PREFIX_VEX_0F3A62, - PREFIX_VEX_0F3A63, - PREFIX_VEX_0F3A68, - PREFIX_VEX_0F3A69, - PREFIX_VEX_0F3A6A, - PREFIX_VEX_0F3A6B, - PREFIX_VEX_0F3A6C, - PREFIX_VEX_0F3A6D, - PREFIX_VEX_0F3A6E, - PREFIX_VEX_0F3A6F, - PREFIX_VEX_0F3A78, - PREFIX_VEX_0F3A79, - PREFIX_VEX_0F3A7A, - PREFIX_VEX_0F3A7B, - PREFIX_VEX_0F3A7C, - PREFIX_VEX_0F3A7D, - PREFIX_VEX_0F3A7E, - PREFIX_VEX_0F3A7F, - PREFIX_VEX_0F3ACE, - PREFIX_VEX_0F3ACF, - PREFIX_VEX_0F3ADF, PREFIX_VEX_0F3AF0, PREFIX_EVEX_0F10, @@ -1420,27 +1102,8 @@ enum PREFIX_EVEX_0F5D, PREFIX_EVEX_0F5E, PREFIX_EVEX_0F5F, - PREFIX_EVEX_0F64, - PREFIX_EVEX_0F65, - PREFIX_EVEX_0F66, - PREFIX_EVEX_0F6E, PREFIX_EVEX_0F6F, PREFIX_EVEX_0F70, - PREFIX_EVEX_0F71_REG_2, - PREFIX_EVEX_0F71_REG_4, - PREFIX_EVEX_0F71_REG_6, - PREFIX_EVEX_0F72_REG_0, - PREFIX_EVEX_0F72_REG_1, - PREFIX_EVEX_0F72_REG_2, - PREFIX_EVEX_0F72_REG_4, - PREFIX_EVEX_0F72_REG_6, - PREFIX_EVEX_0F73_REG_2, - PREFIX_EVEX_0F73_REG_3, - PREFIX_EVEX_0F73_REG_6, - PREFIX_EVEX_0F73_REG_7, - PREFIX_EVEX_0F74, - PREFIX_EVEX_0F75, - PREFIX_EVEX_0F76, PREFIX_EVEX_0F78, PREFIX_EVEX_0F79, PREFIX_EVEX_0F7A, @@ -1448,29 +1111,13 @@ enum PREFIX_EVEX_0F7E, PREFIX_EVEX_0F7F, PREFIX_EVEX_0FC2, - PREFIX_EVEX_0FC4, - PREFIX_EVEX_0FC5, - PREFIX_EVEX_0FD6, - PREFIX_EVEX_0FDB, - PREFIX_EVEX_0FDF, - PREFIX_EVEX_0FE2, PREFIX_EVEX_0FE6, - PREFIX_EVEX_0FE7, - PREFIX_EVEX_0FEB, - PREFIX_EVEX_0FEF, - PREFIX_EVEX_0F380D, PREFIX_EVEX_0F3810, PREFIX_EVEX_0F3811, PREFIX_EVEX_0F3812, PREFIX_EVEX_0F3813, PREFIX_EVEX_0F3814, PREFIX_EVEX_0F3815, - PREFIX_EVEX_0F3816, - PREFIX_EVEX_0F3819, - PREFIX_EVEX_0F381A, - PREFIX_EVEX_0F381B, - PREFIX_EVEX_0F381E, - PREFIX_EVEX_0F381F, PREFIX_EVEX_0F3820, PREFIX_EVEX_0F3821, PREFIX_EVEX_0F3822, @@ -1482,142 +1129,23 @@ enum PREFIX_EVEX_0F3828, PREFIX_EVEX_0F3829, PREFIX_EVEX_0F382A, - PREFIX_EVEX_0F382C, - PREFIX_EVEX_0F382D, PREFIX_EVEX_0F3830, PREFIX_EVEX_0F3831, PREFIX_EVEX_0F3832, PREFIX_EVEX_0F3833, PREFIX_EVEX_0F3834, PREFIX_EVEX_0F3835, - PREFIX_EVEX_0F3836, - PREFIX_EVEX_0F3837, PREFIX_EVEX_0F3838, PREFIX_EVEX_0F3839, PREFIX_EVEX_0F383A, - PREFIX_EVEX_0F383B, - PREFIX_EVEX_0F383D, - PREFIX_EVEX_0F383F, - PREFIX_EVEX_0F3840, - PREFIX_EVEX_0F3842, - PREFIX_EVEX_0F3843, - PREFIX_EVEX_0F3844, - PREFIX_EVEX_0F3845, - PREFIX_EVEX_0F3846, - PREFIX_EVEX_0F3847, - PREFIX_EVEX_0F384C, - PREFIX_EVEX_0F384D, - PREFIX_EVEX_0F384E, - PREFIX_EVEX_0F384F, - PREFIX_EVEX_0F3850, - PREFIX_EVEX_0F3851, PREFIX_EVEX_0F3852, PREFIX_EVEX_0F3853, - PREFIX_EVEX_0F3854, - PREFIX_EVEX_0F3855, - PREFIX_EVEX_0F3859, - PREFIX_EVEX_0F385A, - PREFIX_EVEX_0F385B, - PREFIX_EVEX_0F3862, - PREFIX_EVEX_0F3863, - PREFIX_EVEX_0F3864, - PREFIX_EVEX_0F3865, - PREFIX_EVEX_0F3866, PREFIX_EVEX_0F3868, - PREFIX_EVEX_0F3870, - PREFIX_EVEX_0F3871, PREFIX_EVEX_0F3872, - PREFIX_EVEX_0F3873, - PREFIX_EVEX_0F3875, - PREFIX_EVEX_0F3876, - PREFIX_EVEX_0F3877, - PREFIX_EVEX_0F387A, - PREFIX_EVEX_0F387B, - PREFIX_EVEX_0F387C, - PREFIX_EVEX_0F387D, - PREFIX_EVEX_0F387E, - PREFIX_EVEX_0F387F, - PREFIX_EVEX_0F3883, - PREFIX_EVEX_0F3888, - PREFIX_EVEX_0F3889, - PREFIX_EVEX_0F388A, - PREFIX_EVEX_0F388B, - PREFIX_EVEX_0F388D, - PREFIX_EVEX_0F388F, - PREFIX_EVEX_0F3890, - PREFIX_EVEX_0F3891, - PREFIX_EVEX_0F3892, - PREFIX_EVEX_0F3893, PREFIX_EVEX_0F389A, PREFIX_EVEX_0F389B, - PREFIX_EVEX_0F38A0, - PREFIX_EVEX_0F38A1, - PREFIX_EVEX_0F38A2, - PREFIX_EVEX_0F38A3, PREFIX_EVEX_0F38AA, PREFIX_EVEX_0F38AB, - PREFIX_EVEX_0F38B4, - PREFIX_EVEX_0F38B5, - PREFIX_EVEX_0F38C4, - PREFIX_EVEX_0F38C6_REG_1, - PREFIX_EVEX_0F38C6_REG_2, - PREFIX_EVEX_0F38C6_REG_5, - PREFIX_EVEX_0F38C6_REG_6, - PREFIX_EVEX_0F38C7_REG_1, - PREFIX_EVEX_0F38C7_REG_2, - PREFIX_EVEX_0F38C7_REG_5, - PREFIX_EVEX_0F38C7_REG_6, - PREFIX_EVEX_0F38C8, - PREFIX_EVEX_0F38CA, - PREFIX_EVEX_0F38CB, - PREFIX_EVEX_0F38CC, - PREFIX_EVEX_0F38CD, - - PREFIX_EVEX_0F3A00, - PREFIX_EVEX_0F3A01, - PREFIX_EVEX_0F3A03, - PREFIX_EVEX_0F3A05, - PREFIX_EVEX_0F3A08, - PREFIX_EVEX_0F3A09, - PREFIX_EVEX_0F3A0A, - PREFIX_EVEX_0F3A0B, - PREFIX_EVEX_0F3A14, - PREFIX_EVEX_0F3A15, - PREFIX_EVEX_0F3A16, - PREFIX_EVEX_0F3A17, - PREFIX_EVEX_0F3A18, - PREFIX_EVEX_0F3A19, - PREFIX_EVEX_0F3A1A, - PREFIX_EVEX_0F3A1B, - PREFIX_EVEX_0F3A1E, - PREFIX_EVEX_0F3A1F, - PREFIX_EVEX_0F3A20, - PREFIX_EVEX_0F3A21, - PREFIX_EVEX_0F3A22, - PREFIX_EVEX_0F3A23, - PREFIX_EVEX_0F3A25, - PREFIX_EVEX_0F3A26, - PREFIX_EVEX_0F3A27, - PREFIX_EVEX_0F3A38, - PREFIX_EVEX_0F3A39, - PREFIX_EVEX_0F3A3A, - PREFIX_EVEX_0F3A3B, - PREFIX_EVEX_0F3A3E, - PREFIX_EVEX_0F3A3F, - PREFIX_EVEX_0F3A42, - PREFIX_EVEX_0F3A43, - PREFIX_EVEX_0F3A50, - PREFIX_EVEX_0F3A51, - PREFIX_EVEX_0F3A54, - PREFIX_EVEX_0F3A55, - PREFIX_EVEX_0F3A56, - PREFIX_EVEX_0F3A57, - PREFIX_EVEX_0F3A66, - PREFIX_EVEX_0F3A67, - PREFIX_EVEX_0F3A70, - PREFIX_EVEX_0F3A71, - PREFIX_EVEX_0F3A72, - PREFIX_EVEX_0F3A73, }; enum @@ -1714,7 +1242,7 @@ enum VEX_LEN_0F4A_P_2, VEX_LEN_0F4B_P_0, VEX_LEN_0F4B_P_2, - VEX_LEN_0F6E_P_2, + VEX_LEN_0F6E, VEX_LEN_0F77_P_0, VEX_LEN_0F7E_P_1, VEX_LEN_0F7E_P_2, @@ -1734,15 +1262,15 @@ enum VEX_LEN_0F99_P_2, VEX_LEN_0FAE_R_2_M_0, VEX_LEN_0FAE_R_3_M_0, - VEX_LEN_0FC4_P_2, - VEX_LEN_0FC5_P_2, - VEX_LEN_0FD6_P_2, - VEX_LEN_0FF7_P_2, - VEX_LEN_0F3816_P_2, - VEX_LEN_0F3819_P_2, - VEX_LEN_0F381A_P_2_M_0, - VEX_LEN_0F3836_P_2, - VEX_LEN_0F3841_P_2, + VEX_LEN_0FC4, + VEX_LEN_0FC5, + VEX_LEN_0FD6, + VEX_LEN_0FF7, + VEX_LEN_0F3816, + VEX_LEN_0F3819, + VEX_LEN_0F381A_M_0, + VEX_LEN_0F3836, + VEX_LEN_0F3841, VEX_LEN_0F3849_X86_64_P_0_W_0_M_0, VEX_LEN_0F3849_X86_64_P_0_W_0_M_1_REG_0_RM_0, VEX_LEN_0F3849_X86_64_P_2_W_0_M_0, @@ -1750,13 +1278,13 @@ enum VEX_LEN_0F384B_X86_64_P_1_W_0_M_0, VEX_LEN_0F384B_X86_64_P_2_W_0_M_0, VEX_LEN_0F384B_X86_64_P_3_W_0_M_0, - VEX_LEN_0F385A_P_2_M_0, + VEX_LEN_0F385A_M_0, VEX_LEN_0F385C_X86_64_P_1_W_0_M_0, VEX_LEN_0F385E_X86_64_P_0_W_0_M_0, VEX_LEN_0F385E_X86_64_P_1_W_0_M_0, VEX_LEN_0F385E_X86_64_P_2_W_0_M_0, VEX_LEN_0F385E_X86_64_P_3_W_0_M_0, - VEX_LEN_0F38DB_P_2, + VEX_LEN_0F38DB, VEX_LEN_0F38F2_P_0, VEX_LEN_0F38F3_R_1_P_0, VEX_LEN_0F38F3_R_2_P_0, @@ -1769,31 +1297,31 @@ enum VEX_LEN_0F38F7_P_1, VEX_LEN_0F38F7_P_2, VEX_LEN_0F38F7_P_3, - VEX_LEN_0F3A00_P_2, - VEX_LEN_0F3A01_P_2, - VEX_LEN_0F3A06_P_2, - VEX_LEN_0F3A14_P_2, - VEX_LEN_0F3A15_P_2, - VEX_LEN_0F3A16_P_2, - VEX_LEN_0F3A17_P_2, - VEX_LEN_0F3A18_P_2, - VEX_LEN_0F3A19_P_2, - VEX_LEN_0F3A20_P_2, - VEX_LEN_0F3A21_P_2, - VEX_LEN_0F3A22_P_2, - VEX_LEN_0F3A30_P_2, - VEX_LEN_0F3A31_P_2, - VEX_LEN_0F3A32_P_2, - VEX_LEN_0F3A33_P_2, - VEX_LEN_0F3A38_P_2, - VEX_LEN_0F3A39_P_2, - VEX_LEN_0F3A41_P_2, - VEX_LEN_0F3A46_P_2, - VEX_LEN_0F3A60_P_2, - VEX_LEN_0F3A61_P_2, - VEX_LEN_0F3A62_P_2, - VEX_LEN_0F3A63_P_2, - VEX_LEN_0F3ADF_P_2, + VEX_LEN_0F3A00, + VEX_LEN_0F3A01, + VEX_LEN_0F3A06, + VEX_LEN_0F3A14, + VEX_LEN_0F3A15, + VEX_LEN_0F3A16, + VEX_LEN_0F3A17, + VEX_LEN_0F3A18, + VEX_LEN_0F3A19, + VEX_LEN_0F3A20, + VEX_LEN_0F3A21, + VEX_LEN_0F3A22, + VEX_LEN_0F3A30, + VEX_LEN_0F3A31, + VEX_LEN_0F3A32, + VEX_LEN_0F3A33, + VEX_LEN_0F3A38, + VEX_LEN_0F3A39, + VEX_LEN_0F3A41, + VEX_LEN_0F3A46, + VEX_LEN_0F3A60, + VEX_LEN_0F3A61, + VEX_LEN_0F3A62, + VEX_LEN_0F3A63, + VEX_LEN_0F3ADF, VEX_LEN_0F3AF0_P_3, VEX_LEN_0FXOP_08_85, VEX_LEN_0FXOP_08_86, @@ -1857,65 +1385,65 @@ enum enum { - EVEX_LEN_0F6E_P_2 = 0, + EVEX_LEN_0F6E = 0, EVEX_LEN_0F7E_P_1, EVEX_LEN_0F7E_P_2, - EVEX_LEN_0FC4_P_2, - EVEX_LEN_0FC5_P_2, - EVEX_LEN_0FD6_P_2, - EVEX_LEN_0F3816_P_2, - EVEX_LEN_0F3819_P_2_W_0, - EVEX_LEN_0F3819_P_2_W_1, - EVEX_LEN_0F381A_P_2_W_0_M_0, - EVEX_LEN_0F381A_P_2_W_1_M_0, - EVEX_LEN_0F381B_P_2_W_0_M_0, - EVEX_LEN_0F381B_P_2_W_1_M_0, - EVEX_LEN_0F3836_P_2, - EVEX_LEN_0F385A_P_2_W_0_M_0, - EVEX_LEN_0F385A_P_2_W_1_M_0, - EVEX_LEN_0F385B_P_2_W_0_M_0, - EVEX_LEN_0F385B_P_2_W_1_M_0, - EVEX_LEN_0F38C6_REG_1_PREFIX_2, - EVEX_LEN_0F38C6_REG_2_PREFIX_2, - EVEX_LEN_0F38C6_REG_5_PREFIX_2, - EVEX_LEN_0F38C6_REG_6_PREFIX_2, - EVEX_LEN_0F38C7_R_1_P_2_W_0, - EVEX_LEN_0F38C7_R_1_P_2_W_1, - EVEX_LEN_0F38C7_R_2_P_2_W_0, - EVEX_LEN_0F38C7_R_2_P_2_W_1, - EVEX_LEN_0F38C7_R_5_P_2_W_0, - EVEX_LEN_0F38C7_R_5_P_2_W_1, - EVEX_LEN_0F38C7_R_6_P_2_W_0, - EVEX_LEN_0F38C7_R_6_P_2_W_1, - EVEX_LEN_0F3A00_P_2_W_1, - EVEX_LEN_0F3A01_P_2_W_1, - EVEX_LEN_0F3A14_P_2, - EVEX_LEN_0F3A15_P_2, - EVEX_LEN_0F3A16_P_2, - EVEX_LEN_0F3A17_P_2, - EVEX_LEN_0F3A18_P_2_W_0, - EVEX_LEN_0F3A18_P_2_W_1, - EVEX_LEN_0F3A19_P_2_W_0, - EVEX_LEN_0F3A19_P_2_W_1, - EVEX_LEN_0F3A1A_P_2_W_0, - EVEX_LEN_0F3A1A_P_2_W_1, - EVEX_LEN_0F3A1B_P_2_W_0, - EVEX_LEN_0F3A1B_P_2_W_1, - EVEX_LEN_0F3A20_P_2, - EVEX_LEN_0F3A21_P_2_W_0, - EVEX_LEN_0F3A22_P_2, - EVEX_LEN_0F3A23_P_2_W_0, - EVEX_LEN_0F3A23_P_2_W_1, - EVEX_LEN_0F3A38_P_2_W_0, - EVEX_LEN_0F3A38_P_2_W_1, - EVEX_LEN_0F3A39_P_2_W_0, - EVEX_LEN_0F3A39_P_2_W_1, - EVEX_LEN_0F3A3A_P_2_W_0, - EVEX_LEN_0F3A3A_P_2_W_1, - EVEX_LEN_0F3A3B_P_2_W_0, - EVEX_LEN_0F3A3B_P_2_W_1, - EVEX_LEN_0F3A43_P_2_W_0, - EVEX_LEN_0F3A43_P_2_W_1 + EVEX_LEN_0FC4, + EVEX_LEN_0FC5, + EVEX_LEN_0FD6, + EVEX_LEN_0F3816, + EVEX_LEN_0F3819_W_0, + EVEX_LEN_0F3819_W_1, + EVEX_LEN_0F381A_W_0_M_0, + EVEX_LEN_0F381A_W_1_M_0, + EVEX_LEN_0F381B_W_0_M_0, + EVEX_LEN_0F381B_W_1_M_0, + EVEX_LEN_0F3836, + EVEX_LEN_0F385A_W_0_M_0, + EVEX_LEN_0F385A_W_1_M_0, + EVEX_LEN_0F385B_W_0_M_0, + EVEX_LEN_0F385B_W_1_M_0, + EVEX_LEN_0F38C6_R_1_M_0, + EVEX_LEN_0F38C6_R_2_M_0, + EVEX_LEN_0F38C6_R_5_M_0, + EVEX_LEN_0F38C6_R_6_M_0, + EVEX_LEN_0F38C7_R_1_M_0_W_0, + EVEX_LEN_0F38C7_R_1_M_0_W_1, + EVEX_LEN_0F38C7_R_2_M_0_W_0, + EVEX_LEN_0F38C7_R_2_M_0_W_1, + EVEX_LEN_0F38C7_R_5_M_0_W_0, + EVEX_LEN_0F38C7_R_5_M_0_W_1, + EVEX_LEN_0F38C7_R_6_M_0_W_0, + EVEX_LEN_0F38C7_R_6_M_0_W_1, + EVEX_LEN_0F3A00_W_1, + EVEX_LEN_0F3A01_W_1, + EVEX_LEN_0F3A14, + EVEX_LEN_0F3A15, + EVEX_LEN_0F3A16, + EVEX_LEN_0F3A17, + EVEX_LEN_0F3A18_W_0, + EVEX_LEN_0F3A18_W_1, + EVEX_LEN_0F3A19_W_0, + EVEX_LEN_0F3A19_W_1, + EVEX_LEN_0F3A1A_W_0, + EVEX_LEN_0F3A1A_W_1, + EVEX_LEN_0F3A1B_W_0, + EVEX_LEN_0F3A1B_W_1, + EVEX_LEN_0F3A20, + EVEX_LEN_0F3A21_W_0, + EVEX_LEN_0F3A22, + EVEX_LEN_0F3A23_W_0, + EVEX_LEN_0F3A23_W_1, + EVEX_LEN_0F3A38_W_0, + EVEX_LEN_0F3A38_W_1, + EVEX_LEN_0F3A39_W_0, + EVEX_LEN_0F3A39_W_1, + EVEX_LEN_0F3A3A_W_0, + EVEX_LEN_0F3A3A_W_1, + EVEX_LEN_0F3A3B_W_0, + EVEX_LEN_0F3A3B_W_1, + EVEX_LEN_0F3A43_W_0, + EVEX_LEN_0F3A43_W_1 }; enum @@ -1948,59 +1476,59 @@ enum VEX_W_0F98_P_2_LEN_0, VEX_W_0F99_P_0_LEN_0, VEX_W_0F99_P_2_LEN_0, - VEX_W_0F380C_P_2, - VEX_W_0F380D_P_2, - VEX_W_0F380E_P_2, - VEX_W_0F380F_P_2, - VEX_W_0F3813_P_2, - VEX_W_0F3816_P_2, - VEX_W_0F3818_P_2, - VEX_W_0F3819_P_2, - VEX_W_0F381A_P_2_M_0_L_0, - VEX_W_0F382C_P_2_M_0, - VEX_W_0F382D_P_2_M_0, - VEX_W_0F382E_P_2_M_0, - VEX_W_0F382F_P_2_M_0, - VEX_W_0F3836_P_2, - VEX_W_0F3846_P_2, + VEX_W_0F380C, + VEX_W_0F380D, + VEX_W_0F380E, + VEX_W_0F380F, + VEX_W_0F3813, + VEX_W_0F3816_L_1, + VEX_W_0F3818, + VEX_W_0F3819_L_1, + VEX_W_0F381A_M_0_L_1, + VEX_W_0F382C_M_0, + VEX_W_0F382D_M_0, + VEX_W_0F382E_M_0, + VEX_W_0F382F_M_0, + VEX_W_0F3836, + VEX_W_0F3846, VEX_W_0F3849_X86_64_P_0, VEX_W_0F3849_X86_64_P_2, VEX_W_0F3849_X86_64_P_3, VEX_W_0F384B_X86_64_P_1, VEX_W_0F384B_X86_64_P_2, VEX_W_0F384B_X86_64_P_3, - VEX_W_0F3858_P_2, - VEX_W_0F3859_P_2, - VEX_W_0F385A_P_2_M_0_L_0, + VEX_W_0F3858, + VEX_W_0F3859, + VEX_W_0F385A_M_0_L_0, VEX_W_0F385C_X86_64_P_1, VEX_W_0F385E_X86_64_P_0, VEX_W_0F385E_X86_64_P_1, VEX_W_0F385E_X86_64_P_2, VEX_W_0F385E_X86_64_P_3, - VEX_W_0F3878_P_2, - VEX_W_0F3879_P_2, - VEX_W_0F38CF_P_2, - VEX_W_0F3A00_P_2, - VEX_W_0F3A01_P_2, - VEX_W_0F3A02_P_2, - VEX_W_0F3A04_P_2, - VEX_W_0F3A05_P_2, - VEX_W_0F3A06_P_2_L_0, - VEX_W_0F3A18_P_2_L_0, - VEX_W_0F3A19_P_2_L_0, - VEX_W_0F3A1D_P_2, - VEX_W_0F3A30_P_2_LEN_0, - VEX_W_0F3A31_P_2_LEN_0, - VEX_W_0F3A32_P_2_LEN_0, - VEX_W_0F3A33_P_2_LEN_0, - VEX_W_0F3A38_P_2_L_0, - VEX_W_0F3A39_P_2_L_0, - VEX_W_0F3A46_P_2_L_0, - VEX_W_0F3A4A_P_2, - VEX_W_0F3A4B_P_2, - VEX_W_0F3A4C_P_2, - VEX_W_0F3ACE_P_2, - VEX_W_0F3ACF_P_2, + VEX_W_0F3878, + VEX_W_0F3879, + VEX_W_0F38CF, + VEX_W_0F3A00_L_1, + VEX_W_0F3A01_L_1, + VEX_W_0F3A02, + VEX_W_0F3A04, + VEX_W_0F3A05, + VEX_W_0F3A06_L_1, + VEX_W_0F3A18_L_1, + VEX_W_0F3A19_L_1, + VEX_W_0F3A1D, + VEX_W_0F3A30_L_0, + VEX_W_0F3A31_L_0, + VEX_W_0F3A32_L_0, + VEX_W_0F3A33_L_0, + VEX_W_0F3A38_L_1, + VEX_W_0F3A39_L_1, + VEX_W_0F3A46_L_1, + VEX_W_0F3A4A, + VEX_W_0F3A4B, + VEX_W_0F3A4C, + VEX_W_0F3ACE, + VEX_W_0F3ACF, VEX_W_0FXOP_08_85_L_0, VEX_W_0FXOP_08_86_L_0, @@ -2079,7 +1607,7 @@ enum EVEX_W_0F5F_P_1, EVEX_W_0F5F_P_3, EVEX_W_0F62, - EVEX_W_0F66_P_2, + EVEX_W_0F66, EVEX_W_0F6A, EVEX_W_0F6B, EVEX_W_0F6C, @@ -2088,11 +1616,11 @@ enum EVEX_W_0F6F_P_2, EVEX_W_0F6F_P_3, EVEX_W_0F70_P_2, - EVEX_W_0F72_R_2_P_2, - EVEX_W_0F72_R_6_P_2, - EVEX_W_0F73_R_2_P_2, - EVEX_W_0F73_R_6_P_2, - EVEX_W_0F76_P_2, + EVEX_W_0F72_R_2, + EVEX_W_0F72_R_6, + EVEX_W_0F73_R_2, + EVEX_W_0F73_R_6, + EVEX_W_0F76, EVEX_W_0F78_P_0, EVEX_W_0F78_P_2, EVEX_W_0F79_P_0, @@ -2111,18 +1639,18 @@ enum EVEX_W_0FD2, EVEX_W_0FD3, EVEX_W_0FD4, - EVEX_W_0FD6_P_2, + EVEX_W_0FD6_L_0, EVEX_W_0FE6_P_1, EVEX_W_0FE6_P_2, EVEX_W_0FE6_P_3, - EVEX_W_0FE7_P_2, + EVEX_W_0FE7, EVEX_W_0FF2, EVEX_W_0FF3, EVEX_W_0FF4, EVEX_W_0FFA, EVEX_W_0FFB, EVEX_W_0FFE, - EVEX_W_0F380D_P_2, + EVEX_W_0F380D, EVEX_W_0F3810_P_1, EVEX_W_0F3810_P_2, EVEX_W_0F3811_P_1, @@ -2133,11 +1661,11 @@ enum EVEX_W_0F3813_P_2, EVEX_W_0F3814_P_1, EVEX_W_0F3815_P_1, - EVEX_W_0F3819_P_2, - EVEX_W_0F381A_P_2, - EVEX_W_0F381B_P_2, - EVEX_W_0F381E_P_2, - EVEX_W_0F381F_P_2, + EVEX_W_0F3819, + EVEX_W_0F381A, + EVEX_W_0F381B, + EVEX_W_0F381E, + EVEX_W_0F381F, EVEX_W_0F3820_P_1, EVEX_W_0F3821_P_1, EVEX_W_0F3822_P_1, @@ -2157,49 +1685,49 @@ enum EVEX_W_0F3834_P_1, EVEX_W_0F3835_P_1, EVEX_W_0F3835_P_2, - EVEX_W_0F3837_P_2, + EVEX_W_0F3837, EVEX_W_0F383A_P_1, EVEX_W_0F3852_P_1, - EVEX_W_0F3859_P_2, - EVEX_W_0F385A_P_2, - EVEX_W_0F385B_P_2, - EVEX_W_0F3870_P_2, + EVEX_W_0F3859, + EVEX_W_0F385A, + EVEX_W_0F385B, + EVEX_W_0F3870, EVEX_W_0F3872_P_1, EVEX_W_0F3872_P_2, EVEX_W_0F3872_P_3, - EVEX_W_0F387A_P_2, - EVEX_W_0F387B_P_2, - EVEX_W_0F3883_P_2, - EVEX_W_0F3891_P_2, - EVEX_W_0F3893_P_2, - EVEX_W_0F38A1_P_2, - EVEX_W_0F38A3_P_2, - EVEX_W_0F38C7_R_1_P_2, - EVEX_W_0F38C7_R_2_P_2, - EVEX_W_0F38C7_R_5_P_2, - EVEX_W_0F38C7_R_6_P_2, - - EVEX_W_0F3A00_P_2, - EVEX_W_0F3A01_P_2, - EVEX_W_0F3A05_P_2, - EVEX_W_0F3A08_P_2, - EVEX_W_0F3A09_P_2, - EVEX_W_0F3A0A_P_2, - EVEX_W_0F3A0B_P_2, - EVEX_W_0F3A18_P_2, - EVEX_W_0F3A19_P_2, - EVEX_W_0F3A1A_P_2, - EVEX_W_0F3A1B_P_2, - EVEX_W_0F3A21_P_2, - EVEX_W_0F3A23_P_2, - EVEX_W_0F3A38_P_2, - EVEX_W_0F3A39_P_2, - EVEX_W_0F3A3A_P_2, - EVEX_W_0F3A3B_P_2, - EVEX_W_0F3A42_P_2, - EVEX_W_0F3A43_P_2, - EVEX_W_0F3A70_P_2, - EVEX_W_0F3A72_P_2, + EVEX_W_0F387A, + EVEX_W_0F387B, + EVEX_W_0F3883, + EVEX_W_0F3891, + EVEX_W_0F3893, + EVEX_W_0F38A1, + EVEX_W_0F38A3, + EVEX_W_0F38C7_R_1_M_0, + EVEX_W_0F38C7_R_2_M_0, + EVEX_W_0F38C7_R_5_M_0, + EVEX_W_0F38C7_R_6_M_0, + + EVEX_W_0F3A00, + EVEX_W_0F3A01, + EVEX_W_0F3A05, + EVEX_W_0F3A08, + EVEX_W_0F3A09, + EVEX_W_0F3A0A, + EVEX_W_0F3A0B, + EVEX_W_0F3A18, + EVEX_W_0F3A19, + EVEX_W_0F3A1A, + EVEX_W_0F3A1B, + EVEX_W_0F3A21, + EVEX_W_0F3A23, + EVEX_W_0F3A38, + EVEX_W_0F3A39, + EVEX_W_0F3A3A, + EVEX_W_0F3A3B, + EVEX_W_0F3A42, + EVEX_W_0F3A43, + EVEX_W_0F3A70, + EVEX_W_0F3A72, }; typedef void (*op_rtn) (int bytemode, int sizeflag); @@ -2696,8 +2224,8 @@ static const struct dis386 dis386_twobyte[] = { { "punpckhwd", { MX, EM }, PREFIX_OPCODE }, { "punpckhdq", { MX, EM }, PREFIX_OPCODE }, { "packssdw", { MX, EM }, PREFIX_OPCODE }, - { PREFIX_TABLE (PREFIX_0F6C) }, - { PREFIX_TABLE (PREFIX_0F6D) }, + { "punpcklqdq", { XM, EXx }, PREFIX_DATA }, + { "punpckhqdq", { XM, EXx }, PREFIX_DATA }, { "movK", { MX, Edq }, PREFIX_OPCODE }, { PREFIX_TABLE (PREFIX_0F6F) }, /* 70 */ @@ -3826,20 +3354,6 @@ static const struct dis386 prefix_table[][4] = { { "punpckldq",{ MX, EMx }, PREFIX_OPCODE }, }, - /* PREFIX_0F6C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "punpcklqdq", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F6D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "punpckhqdq", { XM, EXx }, PREFIX_OPCODE }, - }, - /* PREFIX_0F6F */ { { "movq", { MX, EM }, PREFIX_OPCODE }, @@ -3855,20 +3369,6 @@ static const struct dis386 prefix_table[][4] = { { "pshuflw",{ XM, EXx, Ib }, PREFIX_OPCODE }, }, - /* PREFIX_0F73_REG_3 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "psrldq", { XS, Ib }, 0 }, - }, - - /* PREFIX_0F73_REG_7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pslldq", { XS, Ib }, 0 }, - }, - /* PREFIX_0F78 */ { {"vmread", { Em, Gm }, 0 }, @@ -4084,2686 +3584,485 @@ static const struct dis386 prefix_table[][4] = { { "maskmovdqu", { XM, XS }, PREFIX_OPCODE }, }, - /* PREFIX_0F3810 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pblendvb", { XM, EXx, XMM0 }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3814 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "blendvps", { XM, EXx, XMM0 }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3815 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "blendvpd", { XM, EXx, XMM0 }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3817 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "ptest", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3820 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovsxbw", { XM, EXq }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3821 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovsxbd", { XM, EXd }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3822 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovsxbq", { XM, EXw }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3823 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovsxwd", { XM, EXq }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3824 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovsxwq", { XM, EXd }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3825 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovsxdq", { XM, EXq }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3828 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmuldq", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3829 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pcmpeqq", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F382A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_0F382A_PREFIX_2) }, - }, - - /* PREFIX_0F382B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "packusdw", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3830 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovzxbw", { XM, EXq }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3831 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovzxbd", { XM, EXd }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3832 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovzxbq", { XM, EXw }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3833 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovzxwd", { XM, EXq }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3834 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovzxwq", { XM, EXd }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3835 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmovzxdq", { XM, EXq }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3837 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pcmpgtq", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3838 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pminsb", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3839 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pminsd", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F383A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pminuw", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F383B */ + /* PREFIX_0F38C8 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "pminud", { XM, EXx }, PREFIX_OPCODE }, + { "sha1nexte", { XM, EXxmm }, PREFIX_OPCODE }, }, - /* PREFIX_0F383C */ + /* PREFIX_0F38C9 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmaxsb", { XM, EXx }, PREFIX_OPCODE }, + { "sha1msg1", { XM, EXxmm }, PREFIX_OPCODE }, }, - /* PREFIX_0F383D */ + /* PREFIX_0F38CA */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmaxsd", { XM, EXx }, PREFIX_OPCODE }, + { "sha1msg2", { XM, EXxmm }, PREFIX_OPCODE }, }, - /* PREFIX_0F383E */ + /* PREFIX_0F38CB */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmaxuw", { XM, EXx }, PREFIX_OPCODE }, + { "sha256rnds2", { XM, EXxmm, XMM0 }, PREFIX_OPCODE }, }, - /* PREFIX_0F383F */ + /* PREFIX_0F38CC */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmaxud", { XM, EXx }, PREFIX_OPCODE }, + { "sha256msg1", { XM, EXxmm }, PREFIX_OPCODE }, }, - /* PREFIX_0F3840 */ + /* PREFIX_0F38CD */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmulld", { XM, EXx }, PREFIX_OPCODE }, + { "sha256msg2", { XM, EXxmm }, PREFIX_OPCODE }, }, - /* PREFIX_0F3841 */ + /* PREFIX_0F38F0 */ { + { "movbeS", { Gv, Mv }, PREFIX_OPCODE }, { Bad_Opcode }, - { Bad_Opcode }, - { "phminposuw", { XM, EXx }, PREFIX_OPCODE }, + { "movbeS", { Gv, Mv }, PREFIX_OPCODE }, + { "crc32A", { Gdq, Eb }, PREFIX_OPCODE }, }, - /* PREFIX_0F3880 */ + /* PREFIX_0F38F1 */ { + { "movbeS", { Mv, Gv }, PREFIX_OPCODE }, { Bad_Opcode }, - { Bad_Opcode }, - { "invept", { Gm, Mo }, PREFIX_OPCODE }, + { "movbeS", { Mv, Gv }, PREFIX_OPCODE }, + { "crc32Q", { Gdq, Ev }, PREFIX_OPCODE }, }, - /* PREFIX_0F3881 */ + /* PREFIX_0F38F6 */ { + { MOD_TABLE (MOD_0F38F6_PREFIX_0) }, + { "adoxS", { Gdq, Edq}, PREFIX_OPCODE }, + { "adcxS", { Gdq, Edq}, PREFIX_OPCODE }, { Bad_Opcode }, - { Bad_Opcode }, - { "invvpid", { Gm, Mo }, PREFIX_OPCODE }, }, - /* PREFIX_0F3882 */ + /* PREFIX_0F38F8 */ { { Bad_Opcode }, - { Bad_Opcode }, - { "invpcid", { Gm, M }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F38C8 */ - { - { "sha1nexte", { XM, EXxmm }, PREFIX_OPCODE }, + { MOD_TABLE (MOD_0F38F8_PREFIX_1) }, + { MOD_TABLE (MOD_0F38F8_PREFIX_2) }, + { MOD_TABLE (MOD_0F38F8_PREFIX_3) }, }, - /* PREFIX_0F38C9 */ + /* PREFIX_0F38F9 */ { - { "sha1msg1", { XM, EXxmm }, PREFIX_OPCODE }, + { MOD_TABLE (MOD_0F38F9_PREFIX_0) }, }, - /* PREFIX_0F38CA */ + /* PREFIX_0F3ACC */ { - { "sha1msg2", { XM, EXxmm }, PREFIX_OPCODE }, + { "sha1rnds4", { XM, EXxmm, Ib }, PREFIX_OPCODE }, }, - /* PREFIX_0F38CB */ + /* PREFIX_VEX_0F10 */ { - { "sha256rnds2", { XM, EXxmm, XMM0 }, PREFIX_OPCODE }, + { "vmovups", { XM, EXx }, 0 }, + { "vmovss", { XMScalar, VexScalarR, EXxmm_md }, 0 }, + { "vmovupd", { XM, EXx }, 0 }, + { "vmovsd", { XMScalar, VexScalarR, EXxmm_mq }, 0 }, }, - /* PREFIX_0F38CC */ + /* PREFIX_VEX_0F11 */ { - { "sha256msg1", { XM, EXxmm }, PREFIX_OPCODE }, + { "vmovups", { EXxS, XM }, 0 }, + { "vmovss", { EXdS, VexScalarR, XMScalar }, 0 }, + { "vmovupd", { EXxS, XM }, 0 }, + { "vmovsd", { EXqS, VexScalarR, XMScalar }, 0 }, }, - /* PREFIX_0F38CD */ + /* PREFIX_VEX_0F12 */ { - { "sha256msg2", { XM, EXxmm }, PREFIX_OPCODE }, + { MOD_TABLE (MOD_VEX_0F12_PREFIX_0) }, + { "vmovsldup", { XM, EXx }, 0 }, + { MOD_TABLE (MOD_VEX_0F12_PREFIX_2) }, + { "vmovddup", { XM, EXymmq }, 0 }, }, - /* PREFIX_0F38CF */ + /* PREFIX_VEX_0F16 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "gf2p8mulb", { XM, EXxmm }, PREFIX_OPCODE }, + { MOD_TABLE (MOD_VEX_0F16_PREFIX_0) }, + { "vmovshdup", { XM, EXx }, 0 }, + { MOD_TABLE (MOD_VEX_0F16_PREFIX_2) }, }, - /* PREFIX_0F38DB */ + /* PREFIX_VEX_0F2A */ { { Bad_Opcode }, + { "vcvtsi2ss{%LQ|}", { XMScalar, VexScalar, Edq }, 0 }, { Bad_Opcode }, - { "aesimc", { XM, EXx }, PREFIX_OPCODE }, + { "vcvtsi2sd{%LQ|}", { XMScalar, VexScalar, Edq }, 0 }, }, - /* PREFIX_0F38DC */ + /* PREFIX_VEX_0F2C */ { { Bad_Opcode }, + { "vcvttss2si", { Gdq, EXxmm_md, EXxEVexS }, 0 }, { Bad_Opcode }, - { "aesenc", { XM, EXx }, PREFIX_OPCODE }, + { "vcvttsd2si", { Gdq, EXxmm_mq, EXxEVexS }, 0 }, }, - /* PREFIX_0F38DD */ + /* PREFIX_VEX_0F2D */ { { Bad_Opcode }, + { "vcvtss2si", { Gdq, EXxmm_md, EXxEVexR }, 0 }, { Bad_Opcode }, - { "aesenclast", { XM, EXx }, PREFIX_OPCODE }, + { "vcvtsd2si", { Gdq, EXxmm_mq, EXxEVexR }, 0 }, }, - /* PREFIX_0F38DE */ + /* PREFIX_VEX_0F2E */ { + { "vucomisX", { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE }, { Bad_Opcode }, - { Bad_Opcode }, - { "aesdec", { XM, EXx }, PREFIX_OPCODE }, + { "vucomisX", { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE }, }, - /* PREFIX_0F38DF */ + /* PREFIX_VEX_0F2F */ { + { "vcomisX", { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE }, { Bad_Opcode }, - { Bad_Opcode }, - { "aesdeclast", { XM, EXx }, PREFIX_OPCODE }, + { "vcomisX", { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE }, }, - /* PREFIX_0F38F0 */ + /* PREFIX_VEX_0F41 */ { - { "movbeS", { Gv, Mv }, PREFIX_OPCODE }, + { VEX_LEN_TABLE (VEX_LEN_0F41_P_0) }, { Bad_Opcode }, - { "movbeS", { Gv, Mv }, PREFIX_OPCODE }, - { "crc32A", { Gdq, Eb }, PREFIX_OPCODE }, + { VEX_LEN_TABLE (VEX_LEN_0F41_P_2) }, }, - /* PREFIX_0F38F1 */ + /* PREFIX_VEX_0F42 */ { - { "movbeS", { Mv, Gv }, PREFIX_OPCODE }, + { VEX_LEN_TABLE (VEX_LEN_0F42_P_0) }, { Bad_Opcode }, - { "movbeS", { Mv, Gv }, PREFIX_OPCODE }, - { "crc32Q", { Gdq, Ev }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F38F5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_0F38F5_PREFIX_2) }, - }, - - /* PREFIX_0F38F6 */ - { - { MOD_TABLE (MOD_0F38F6_PREFIX_0) }, - { "adoxS", { Gdq, Edq}, PREFIX_OPCODE }, - { "adcxS", { Gdq, Edq}, PREFIX_OPCODE }, - { Bad_Opcode }, - }, - - /* PREFIX_0F38F8 */ - { - { Bad_Opcode }, - { MOD_TABLE (MOD_0F38F8_PREFIX_1) }, - { MOD_TABLE (MOD_0F38F8_PREFIX_2) }, - { MOD_TABLE (MOD_0F38F8_PREFIX_3) }, - }, - - /* PREFIX_0F38F9 */ - { - { MOD_TABLE (MOD_0F38F9_PREFIX_0) }, - }, - - /* PREFIX_0F3A08 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "roundps", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A09 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "roundpd", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A0A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "roundss", { XM, EXd, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A0B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "roundsd", { XM, EXq, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A0C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "blendps", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A0D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "blendpd", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A0E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pblendw", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A14 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pextrb", { Edqb, XM, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A15 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pextrw", { Edqw, XM, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A16 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pextrK", { Edq, XM, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A17 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "extractps", { Edqd, XM, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A20 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pinsrb", { XM, Edqb, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A21 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "insertps", { XM, EXd, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A22 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pinsrK", { XM, Edq, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A40 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "dpps", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A41 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "dppd", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A42 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "mpsadbw", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A44 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pclmulqdq", { XM, EXx, PCLMUL }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A60 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pcmpestrm!%LQ", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A61 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pcmpestri!%LQ", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A62 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pcmpistrm", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3A63 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pcmpistri", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3ACC */ - { - { "sha1rnds4", { XM, EXxmm, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3ACE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "gf2p8affineqb", { XM, EXxmm, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3ACF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "gf2p8affineinvqb", { XM, EXxmm, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3ADF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "aeskeygenassist", { XM, EXx, Ib }, PREFIX_OPCODE }, - }, - - /* PREFIX_VEX_0F10 */ - { - { "vmovups", { XM, EXx }, 0 }, - { "vmovss", { XMScalar, VexScalarR, EXxmm_md }, 0 }, - { "vmovupd", { XM, EXx }, 0 }, - { "vmovsd", { XMScalar, VexScalarR, EXxmm_mq }, 0 }, - }, - - /* PREFIX_VEX_0F11 */ - { - { "vmovups", { EXxS, XM }, 0 }, - { "vmovss", { EXdS, VexScalarR, XMScalar }, 0 }, - { "vmovupd", { EXxS, XM }, 0 }, - { "vmovsd", { EXqS, VexScalarR, XMScalar }, 0 }, - }, - - /* PREFIX_VEX_0F12 */ - { - { MOD_TABLE (MOD_VEX_0F12_PREFIX_0) }, - { "vmovsldup", { XM, EXx }, 0 }, - { MOD_TABLE (MOD_VEX_0F12_PREFIX_2) }, - { "vmovddup", { XM, EXymmq }, 0 }, - }, - - /* PREFIX_VEX_0F16 */ - { - { MOD_TABLE (MOD_VEX_0F16_PREFIX_0) }, - { "vmovshdup", { XM, EXx }, 0 }, - { MOD_TABLE (MOD_VEX_0F16_PREFIX_2) }, - }, - - /* PREFIX_VEX_0F2A */ - { - { Bad_Opcode }, - { "vcvtsi2ss{%LQ|}", { XMScalar, VexScalar, Edq }, 0 }, - { Bad_Opcode }, - { "vcvtsi2sd{%LQ|}", { XMScalar, VexScalar, Edq }, 0 }, - }, - - /* PREFIX_VEX_0F2C */ - { - { Bad_Opcode }, - { "vcvttss2si", { Gdq, EXxmm_md, EXxEVexS }, 0 }, - { Bad_Opcode }, - { "vcvttsd2si", { Gdq, EXxmm_mq, EXxEVexS }, 0 }, - }, - - /* PREFIX_VEX_0F2D */ - { - { Bad_Opcode }, - { "vcvtss2si", { Gdq, EXxmm_md, EXxEVexR }, 0 }, - { Bad_Opcode }, - { "vcvtsd2si", { Gdq, EXxmm_mq, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F2E */ - { - { "vucomisX", { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE }, - { Bad_Opcode }, - { "vucomisX", { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE }, - }, - - /* PREFIX_VEX_0F2F */ - { - { "vcomisX", { XMScalar, EXxmm_md, EXxEVexS }, PREFIX_OPCODE }, - { Bad_Opcode }, - { "vcomisX", { XMScalar, EXxmm_mq, EXxEVexS }, PREFIX_OPCODE }, - }, - - /* PREFIX_VEX_0F41 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F41_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F41_P_2) }, - }, - - /* PREFIX_VEX_0F42 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F42_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F42_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F42_P_2) }, }, /* PREFIX_VEX_0F44 */ { - { VEX_LEN_TABLE (VEX_LEN_0F44_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F44_P_2) }, - }, - - /* PREFIX_VEX_0F45 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F45_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F45_P_2) }, - }, - - /* PREFIX_VEX_0F46 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F46_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F46_P_2) }, - }, - - /* PREFIX_VEX_0F47 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F47_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F47_P_2) }, - }, - - /* PREFIX_VEX_0F4A */ - { - { VEX_LEN_TABLE (VEX_LEN_0F4A_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F4A_P_2) }, - }, - - /* PREFIX_VEX_0F4B */ - { - { VEX_LEN_TABLE (VEX_LEN_0F4B_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F4B_P_2) }, - }, - - /* PREFIX_VEX_0F51 */ - { - { "vsqrtps", { XM, EXx }, 0 }, - { "vsqrtss", { XMScalar, VexScalar, EXxmm_md }, 0 }, - { "vsqrtpd", { XM, EXx }, 0 }, - { "vsqrtsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, - }, - - /* PREFIX_VEX_0F52 */ - { - { "vrsqrtps", { XM, EXx }, 0 }, - { "vrsqrtss", { XMScalar, VexScalar, EXxmm_md }, 0 }, - }, - - /* PREFIX_VEX_0F53 */ - { - { "vrcpps", { XM, EXx }, 0 }, - { "vrcpss", { XMScalar, VexScalar, EXxmm_md }, 0 }, - }, - - /* PREFIX_VEX_0F58 */ - { - { "vaddps", { XM, Vex, EXx }, 0 }, - { "vaddss", { XMScalar, VexScalar, EXxmm_md }, 0 }, - { "vaddpd", { XM, Vex, EXx }, 0 }, - { "vaddsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, - }, - - /* PREFIX_VEX_0F59 */ - { - { "vmulps", { XM, Vex, EXx }, 0 }, - { "vmulss", { XMScalar, VexScalar, EXxmm_md }, 0 }, - { "vmulpd", { XM, Vex, EXx }, 0 }, - { "vmulsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, - }, - - /* PREFIX_VEX_0F5A */ - { - { "vcvtps2pd", { XM, EXxmmq }, 0 }, - { "vcvtss2sd", { XMScalar, VexScalar, EXxmm_md }, 0 }, - { "vcvtpd2ps%XY",{ XMM, EXx }, 0 }, - { "vcvtsd2ss", { XMScalar, VexScalar, EXxmm_mq }, 0 }, - }, - - /* PREFIX_VEX_0F5B */ - { - { "vcvtdq2ps", { XM, EXx }, 0 }, - { "vcvttps2dq", { XM, EXx }, 0 }, - { "vcvtps2dq", { XM, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F5C */ - { - { "vsubps", { XM, Vex, EXx }, 0 }, - { "vsubss", { XMScalar, VexScalar, EXxmm_md }, 0 }, - { "vsubpd", { XM, Vex, EXx }, 0 }, - { "vsubsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, - }, - - /* PREFIX_VEX_0F5D */ - { - { "vminps", { XM, Vex, EXx }, 0 }, - { "vminss", { XMScalar, VexScalar, EXxmm_md }, 0 }, - { "vminpd", { XM, Vex, EXx }, 0 }, - { "vminsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, - }, - - /* PREFIX_VEX_0F5E */ - { - { "vdivps", { XM, Vex, EXx }, 0 }, - { "vdivss", { XMScalar, VexScalar, EXxmm_md }, 0 }, - { "vdivpd", { XM, Vex, EXx }, 0 }, - { "vdivsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, - }, - - /* PREFIX_VEX_0F5F */ - { - { "vmaxps", { XM, Vex, EXx }, 0 }, - { "vmaxss", { XMScalar, VexScalar, EXxmm_md }, 0 }, - { "vmaxpd", { XM, Vex, EXx }, 0 }, - { "vmaxsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, - }, - - /* PREFIX_VEX_0F60 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpcklbw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F61 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpcklwd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F62 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpckldq", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F63 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpacksswb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F64 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpgtb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F65 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpgtw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F66 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpgtd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F67 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpackuswb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F68 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpckhbw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F69 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpckhwd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F6A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpckhdq", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F6B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpackssdw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F6C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpcklqdq", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F6D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpunpckhqdq", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F6E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F6E_P_2) }, - }, - - /* PREFIX_VEX_0F6F */ - { - { Bad_Opcode }, - { "vmovdqu", { XM, EXx }, 0 }, - { "vmovdqa", { XM, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F70 */ - { - { Bad_Opcode }, - { "vpshufhw", { XM, EXx, Ib }, 0 }, - { "vpshufd", { XM, EXx, Ib }, 0 }, - { "vpshuflw", { XM, EXx, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F71_REG_2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrlw", { Vex, XS, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F71_REG_4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsraw", { Vex, XS, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F71_REG_6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsllw", { Vex, XS, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F72_REG_2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrld", { Vex, XS, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F72_REG_4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrad", { Vex, XS, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F72_REG_6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpslld", { Vex, XS, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F73_REG_2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrlq", { Vex, XS, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F73_REG_3 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrldq", { Vex, XS, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F73_REG_6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsllq", { Vex, XS, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F73_REG_7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpslldq", { Vex, XS, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F74 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpeqb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F75 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpeqw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F76 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpeqd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F77 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F77_P_0) }, - }, - - /* PREFIX_VEX_0F7C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vhaddpd", { XM, Vex, EXx }, 0 }, - { "vhaddps", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F7D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vhsubpd", { XM, Vex, EXx }, 0 }, - { "vhsubps", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F7E */ - { - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F7E_P_1) }, - { VEX_LEN_TABLE (VEX_LEN_0F7E_P_2) }, - }, - - /* PREFIX_VEX_0F7F */ - { - { Bad_Opcode }, - { "vmovdqu", { EXxS, XM }, 0 }, - { "vmovdqa", { EXxS, XM }, 0 }, - }, - - /* PREFIX_VEX_0F90 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F90_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F90_P_2) }, - }, - - /* PREFIX_VEX_0F91 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F91_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F91_P_2) }, - }, - - /* PREFIX_VEX_0F92 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F92_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F92_P_2) }, - { VEX_LEN_TABLE (VEX_LEN_0F92_P_3) }, - }, - - /* PREFIX_VEX_0F93 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F93_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F93_P_2) }, - { VEX_LEN_TABLE (VEX_LEN_0F93_P_3) }, - }, - - /* PREFIX_VEX_0F98 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F98_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F98_P_2) }, - }, - - /* PREFIX_VEX_0F99 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F99_P_0) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F99_P_2) }, - }, - - /* PREFIX_VEX_0FC2 */ - { - { "vcmpps", { XM, Vex, EXx, CMP }, 0 }, - { "vcmpss", { XMScalar, VexScalar, EXxmm_md, CMP }, 0 }, - { "vcmppd", { XM, Vex, EXx, CMP }, 0 }, - { "vcmpsd", { XMScalar, VexScalar, EXxmm_mq, CMP }, 0 }, - }, - - /* PREFIX_VEX_0FC4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0FC4_P_2) }, - }, - - /* PREFIX_VEX_0FC5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0FC5_P_2) }, - }, - - /* PREFIX_VEX_0FD0 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vaddsubpd", { XM, Vex, EXx }, 0 }, - { "vaddsubps", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FD1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrlw", { XM, Vex, EXxmm }, 0 }, - }, - - /* PREFIX_VEX_0FD2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrld", { XM, Vex, EXxmm }, 0 }, - }, - - /* PREFIX_VEX_0FD3 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrlq", { XM, Vex, EXxmm }, 0 }, - }, - - /* PREFIX_VEX_0FD4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddq", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FD5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmullw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FD6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0FD6_P_2) }, - }, - - /* PREFIX_VEX_0FD7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0FD7_PREFIX_2) }, - }, - - /* PREFIX_VEX_0FD8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubusb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FD9 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubusw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FDA */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpminub", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FDB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpand", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FDC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddusb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FDD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddusw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FDE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxub", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FDF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpandn", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FE0 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpavgb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FE1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsraw", { XM, Vex, EXxmm }, 0 }, - }, - - /* PREFIX_VEX_0FE2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrad", { XM, Vex, EXxmm }, 0 }, - }, - - /* PREFIX_VEX_0FE3 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpavgw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FE4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmulhuw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FE5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmulhw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FE6 */ - { - { Bad_Opcode }, - { "vcvtdq2pd", { XM, EXxmmq }, 0 }, - { "vcvttpd2dq%XY", { XMM, EXx }, 0 }, - { "vcvtpd2dq%XY", { XMM, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FE7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0FE7_PREFIX_2) }, - }, - - /* PREFIX_VEX_0FE8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubsb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FE9 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubsw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FEA */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpminsw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FEB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpor", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FEC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddsb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FED */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddsw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FEE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxsw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FEF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpxor", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FF0 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0FF0_PREFIX_3) }, - }, - - /* PREFIX_VEX_0FF1 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsllw", { XM, Vex, EXxmm }, 0 }, - }, - - /* PREFIX_VEX_0FF2 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpslld", { XM, Vex, EXxmm }, 0 }, - }, - - /* PREFIX_VEX_0FF3 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsllq", { XM, Vex, EXxmm }, 0 }, - }, - - /* PREFIX_VEX_0FF4 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmuludq", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FF5 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaddwd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FF6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsadbw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FF7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0FF7_P_2) }, - }, - - /* PREFIX_VEX_0FF8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FF9 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FFA */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FFB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsubq", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FFC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FFD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0FFE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpaddd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3800 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpshufb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3801 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vphaddw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3802 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vphaddd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3803 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vphaddsw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3804 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaddubsw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3805 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vphsubw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3806 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vphsubd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3807 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vphsubsw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3808 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsignb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3809 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsignw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F380A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsignd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F380B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmulhrsw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F380C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F380C_P_2) }, - }, - - /* PREFIX_VEX_0F380D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F380D_P_2) }, - }, - - /* PREFIX_VEX_0F380E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F380E_P_2) }, - }, - - /* PREFIX_VEX_0F380F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F380F_P_2) }, - }, - - /* PREFIX_VEX_0F3813 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3813_P_2) }, - }, - - /* PREFIX_VEX_0F3816 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3816_P_2) }, - }, - - /* PREFIX_VEX_0F3817 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vptest", { XM, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3818 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3818_P_2) }, - }, - - /* PREFIX_VEX_0F3819 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3819_P_2) }, - }, - - /* PREFIX_VEX_0F381A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F381A_PREFIX_2) }, - }, - - /* PREFIX_VEX_0F381C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpabsb", { XM, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F381D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpabsw", { XM, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F381E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpabsd", { XM, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3820 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovsxbw", { XM, EXxmmq }, 0 }, - }, - - /* PREFIX_VEX_0F3821 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovsxbd", { XM, EXxmmqd }, 0 }, - }, - - /* PREFIX_VEX_0F3822 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovsxbq", { XM, EXxmmdw }, 0 }, - }, - - /* PREFIX_VEX_0F3823 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovsxwd", { XM, EXxmmq }, 0 }, - }, - - /* PREFIX_VEX_0F3824 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovsxwq", { XM, EXxmmqd }, 0 }, - }, - - /* PREFIX_VEX_0F3825 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovsxdq", { XM, EXxmmq }, 0 }, - }, - - /* PREFIX_VEX_0F3828 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmuldq", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3829 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpeqq", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F382A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F382A_PREFIX_2) }, - }, - - /* PREFIX_VEX_0F382B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpackusdw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F382C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F382C_PREFIX_2) }, - }, - - /* PREFIX_VEX_0F382D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F382D_PREFIX_2) }, - }, - - /* PREFIX_VEX_0F382E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F382E_PREFIX_2) }, - }, - - /* PREFIX_VEX_0F382F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F382F_PREFIX_2) }, - }, - - /* PREFIX_VEX_0F3830 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovzxbw", { XM, EXxmmq }, 0 }, - }, - - /* PREFIX_VEX_0F3831 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovzxbd", { XM, EXxmmqd }, 0 }, - }, - - /* PREFIX_VEX_0F3832 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovzxbq", { XM, EXxmmdw }, 0 }, - }, - - /* PREFIX_VEX_0F3833 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovzxwd", { XM, EXxmmq }, 0 }, - }, - - /* PREFIX_VEX_0F3834 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovzxwq", { XM, EXxmmqd }, 0 }, - }, - - /* PREFIX_VEX_0F3835 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmovzxdq", { XM, EXxmmq }, 0 }, - }, - - /* PREFIX_VEX_0F3836 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3836_P_2) }, - }, - - /* PREFIX_VEX_0F3837 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpcmpgtq", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3838 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpminsb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3839 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpminsd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F383A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpminuw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F383B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpminud", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F383C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxsb", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F383D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxsd", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F383E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxuw", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F383F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmaxud", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3840 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpmulld", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3841 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3841_P_2) }, - }, - - /* PREFIX_VEX_0F3845 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsrlv%DQ", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3846 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3846_P_2) }, - }, - - /* PREFIX_VEX_0F3847 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpsllv%DQ", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F3849_X86_64 */ - { - { VEX_W_TABLE (VEX_W_0F3849_X86_64_P_0) }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3849_X86_64_P_2) }, - { VEX_W_TABLE (VEX_W_0F3849_X86_64_P_3) }, - }, - - /* PREFIX_VEX_0F384B_X86_64 */ - { - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F384B_X86_64_P_1) }, - { VEX_W_TABLE (VEX_W_0F384B_X86_64_P_2) }, - { VEX_W_TABLE (VEX_W_0F384B_X86_64_P_3) }, - }, - - /* PREFIX_VEX_0F3858 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3858_P_2) }, - }, - - /* PREFIX_VEX_0F3859 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3859_P_2) }, - }, - - /* PREFIX_VEX_0F385A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F385A_PREFIX_2) }, - }, - - /* PREFIX_VEX_0F385C_X86_64 */ - { - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F385C_X86_64_P_1) }, - { Bad_Opcode }, - }, - - /* PREFIX_VEX_0F385E_X86_64 */ - { - { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_0) }, - { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_1) }, - { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_2) }, - { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_3) }, - }, - - /* PREFIX_VEX_0F3878 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3878_P_2) }, - }, - - /* PREFIX_VEX_0F3879 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3879_P_2) }, - }, - - /* PREFIX_VEX_0F388C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F388C_PREFIX_2) }, - }, - - /* PREFIX_VEX_0F388E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { MOD_TABLE (MOD_VEX_0F388E_PREFIX_2) }, - }, - - /* PREFIX_VEX_0F3890 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpgatherd%DQ", { XM, MVexVSIBDWpX, Vex }, 0 }, - }, - - /* PREFIX_VEX_0F3891 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpgatherq%DQ", { XMGatherQ, MVexVSIBQWpX, VexGatherQ }, 0 }, - }, - - /* PREFIX_VEX_0F3892 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vgatherdp%XW", { XM, MVexVSIBDWpX, Vex }, 0 }, - }, - - /* PREFIX_VEX_0F3893 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vgatherqp%XW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ }, 0 }, - }, - - /* PREFIX_VEX_0F3896 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F3897 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F3898 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F3899 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F389A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub132p%XW", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F389B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, - }, - - /* PREFIX_VEX_0F389C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F389D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F389E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub132p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F389F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38A6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - { Bad_Opcode }, - }, - - /* PREFIX_VEX_0F38A7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38A8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38A9 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38AA */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub213p%XW", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F38AB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, 0 }, - }, - - /* PREFIX_VEX_0F38AC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38AD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38AE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub213p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38AF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38B6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38B7 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38B8 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38B9 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38BA */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38BB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38BC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38BD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38BE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub231p%XW", { XM, Vex, EXx, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38BF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar, EXxEVexR }, 0 }, - }, - - /* PREFIX_VEX_0F38CF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F38CF_P_2) }, - }, - - /* PREFIX_VEX_0F38DB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F38DB_P_2) }, - }, - - /* PREFIX_VEX_0F38DC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vaesenc", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F38DD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vaesenclast", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F38DE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vaesdec", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F38DF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vaesdeclast", { XM, Vex, EXx }, 0 }, - }, - - /* PREFIX_VEX_0F38F2 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F38F2_P_0) }, - }, - - /* PREFIX_VEX_0F38F3_REG_1 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_1_P_0) }, - }, - - /* PREFIX_VEX_0F38F3_REG_2 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_2_P_0) }, - }, - - /* PREFIX_VEX_0F38F3_REG_3 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_3_P_0) }, - }, - - /* PREFIX_VEX_0F38F5 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_0) }, - { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_1) }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_3) }, - }, - - /* PREFIX_VEX_0F38F6 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F38F6_P_3) }, - }, - - /* PREFIX_VEX_0F38F7 */ - { - { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_0) }, - { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_1) }, - { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_2) }, - { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_3) }, - }, - - /* PREFIX_VEX_0F3A00 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A00_P_2) }, - }, - - /* PREFIX_VEX_0F3A01 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A01_P_2) }, - }, - - /* PREFIX_VEX_0F3A02 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A02_P_2) }, - }, - - /* PREFIX_VEX_0F3A04 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A04_P_2) }, - }, - - /* PREFIX_VEX_0F3A05 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A05_P_2) }, - }, - - /* PREFIX_VEX_0F3A06 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A06_P_2) }, - }, - - /* PREFIX_VEX_0F3A08 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vroundps", { XM, EXx, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F3A09 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vroundpd", { XM, EXx, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F3A0A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vroundss", { XMScalar, VexScalar, EXxmm_md, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F3A0B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vroundsd", { XMScalar, VexScalar, EXxmm_mq, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F3A0C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vblendps", { XM, Vex, EXx, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F3A0D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vblendpd", { XM, Vex, EXx, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F3A0E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpblendw", { XM, Vex, EXx, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F3A0F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpalignr", { XM, Vex, EXx, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F3A14 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A14_P_2) }, - }, - - /* PREFIX_VEX_0F3A15 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A15_P_2) }, - }, - - /* PREFIX_VEX_0F3A16 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A16_P_2) }, - }, - - /* PREFIX_VEX_0F3A17 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A17_P_2) }, - }, - - /* PREFIX_VEX_0F3A18 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A18_P_2) }, - }, - - /* PREFIX_VEX_0F3A19 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A19_P_2) }, - }, - - /* PREFIX_VEX_0F3A1D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A1D_P_2) }, - }, - - /* PREFIX_VEX_0F3A20 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A20_P_2) }, - }, - - /* PREFIX_VEX_0F3A21 */ - { - { Bad_Opcode }, + { VEX_LEN_TABLE (VEX_LEN_0F44_P_0) }, { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A21_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F44_P_2) }, }, - /* PREFIX_VEX_0F3A22 */ + /* PREFIX_VEX_0F45 */ { + { VEX_LEN_TABLE (VEX_LEN_0F45_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A22_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F45_P_2) }, }, - /* PREFIX_VEX_0F3A30 */ + /* PREFIX_VEX_0F46 */ { + { VEX_LEN_TABLE (VEX_LEN_0F46_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A30_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F46_P_2) }, }, - /* PREFIX_VEX_0F3A31 */ + /* PREFIX_VEX_0F47 */ { + { VEX_LEN_TABLE (VEX_LEN_0F47_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A31_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F47_P_2) }, }, - /* PREFIX_VEX_0F3A32 */ + /* PREFIX_VEX_0F4A */ { + { VEX_LEN_TABLE (VEX_LEN_0F4A_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A32_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F4A_P_2) }, }, - /* PREFIX_VEX_0F3A33 */ + /* PREFIX_VEX_0F4B */ { + { VEX_LEN_TABLE (VEX_LEN_0F4B_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A33_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F4B_P_2) }, }, - /* PREFIX_VEX_0F3A38 */ + /* PREFIX_VEX_0F51 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A38_P_2) }, + { "vsqrtps", { XM, EXx }, 0 }, + { "vsqrtss", { XMScalar, VexScalar, EXxmm_md }, 0 }, + { "vsqrtpd", { XM, EXx }, 0 }, + { "vsqrtsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, }, - /* PREFIX_VEX_0F3A39 */ + /* PREFIX_VEX_0F52 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A39_P_2) }, + { "vrsqrtps", { XM, EXx }, 0 }, + { "vrsqrtss", { XMScalar, VexScalar, EXxmm_md }, 0 }, }, - /* PREFIX_VEX_0F3A40 */ + /* PREFIX_VEX_0F53 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vdpps", { XM, Vex, EXx, Ib }, 0 }, + { "vrcpps", { XM, EXx }, 0 }, + { "vrcpss", { XMScalar, VexScalar, EXxmm_md }, 0 }, }, - /* PREFIX_VEX_0F3A41 */ + /* PREFIX_VEX_0F58 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A41_P_2) }, + { "vaddps", { XM, Vex, EXx }, 0 }, + { "vaddss", { XMScalar, VexScalar, EXxmm_md }, 0 }, + { "vaddpd", { XM, Vex, EXx }, 0 }, + { "vaddsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, }, - /* PREFIX_VEX_0F3A42 */ + /* PREFIX_VEX_0F59 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vmpsadbw", { XM, Vex, EXx, Ib }, 0 }, + { "vmulps", { XM, Vex, EXx }, 0 }, + { "vmulss", { XMScalar, VexScalar, EXxmm_md }, 0 }, + { "vmulpd", { XM, Vex, EXx }, 0 }, + { "vmulsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, }, - /* PREFIX_VEX_0F3A44 */ + /* PREFIX_VEX_0F5A */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpclmulqdq", { XM, Vex, EXx, PCLMUL }, 0 }, + { "vcvtps2pd", { XM, EXxmmq }, 0 }, + { "vcvtss2sd", { XMScalar, VexScalar, EXxmm_md }, 0 }, + { "vcvtpd2ps%XY",{ XMM, EXx }, 0 }, + { "vcvtsd2ss", { XMScalar, VexScalar, EXxmm_mq }, 0 }, }, - /* PREFIX_VEX_0F3A46 */ + /* PREFIX_VEX_0F5B */ { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A46_P_2) }, + { "vcvtdq2ps", { XM, EXx }, 0 }, + { "vcvttps2dq", { XM, EXx }, 0 }, + { "vcvtps2dq", { XM, EXx }, 0 }, }, - /* PREFIX_VEX_0F3A48 */ + /* PREFIX_VEX_0F5C */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpermil2ps", { XM, Vex, EXx, XMVexI4, VexI4 }, 0 }, + { "vsubps", { XM, Vex, EXx }, 0 }, + { "vsubss", { XMScalar, VexScalar, EXxmm_md }, 0 }, + { "vsubpd", { XM, Vex, EXx }, 0 }, + { "vsubsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, }, - /* PREFIX_VEX_0F3A49 */ + /* PREFIX_VEX_0F5D */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpermil2pd", { XM, Vex, EXx, XMVexI4, VexI4 }, 0 }, + { "vminps", { XM, Vex, EXx }, 0 }, + { "vminss", { XMScalar, VexScalar, EXxmm_md }, 0 }, + { "vminpd", { XM, Vex, EXx }, 0 }, + { "vminsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, }, - /* PREFIX_VEX_0F3A4A */ + /* PREFIX_VEX_0F5E */ { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A4A_P_2) }, + { "vdivps", { XM, Vex, EXx }, 0 }, + { "vdivss", { XMScalar, VexScalar, EXxmm_md }, 0 }, + { "vdivpd", { XM, Vex, EXx }, 0 }, + { "vdivsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, }, - /* PREFIX_VEX_0F3A4B */ + /* PREFIX_VEX_0F5F */ { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A4B_P_2) }, + { "vmaxps", { XM, Vex, EXx }, 0 }, + { "vmaxss", { XMScalar, VexScalar, EXxmm_md }, 0 }, + { "vmaxpd", { XM, Vex, EXx }, 0 }, + { "vmaxsd", { XMScalar, VexScalar, EXxmm_mq }, 0 }, }, - /* PREFIX_VEX_0F3A4C */ + /* PREFIX_VEX_0F6F */ { { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A4C_P_2) }, + { "vmovdqu", { XM, EXx }, 0 }, + { "vmovdqa", { XM, EXx }, 0 }, }, - /* PREFIX_VEX_0F3A5C */ + /* PREFIX_VEX_0F70 */ { { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsubps", { XM, Vex, EXx, XMVexI4 }, 0 }, + { "vpshufhw", { XM, EXx, Ib }, 0 }, + { "vpshufd", { XM, EXx, Ib }, 0 }, + { "vpshuflw", { XM, EXx, Ib }, 0 }, }, - /* PREFIX_VEX_0F3A5D */ + /* PREFIX_VEX_0F77 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsubpd", { XM, Vex, EXx, XMVexI4 }, 0 }, + { VEX_LEN_TABLE (VEX_LEN_0F77_P_0) }, }, - /* PREFIX_VEX_0F3A5E */ + /* PREFIX_VEX_0F7C */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsubaddps", { XM, Vex, EXx, XMVexI4 }, 0 }, + { "vhaddpd", { XM, Vex, EXx }, 0 }, + { "vhaddps", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_VEX_0F3A5F */ + /* PREFIX_VEX_0F7D */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsubaddpd", { XM, Vex, EXx, XMVexI4 }, 0 }, + { "vhsubpd", { XM, Vex, EXx }, 0 }, + { "vhsubps", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_VEX_0F3A60 */ + /* PREFIX_VEX_0F7E */ { { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A60_P_2) }, - { Bad_Opcode }, + { VEX_LEN_TABLE (VEX_LEN_0F7E_P_1) }, + { VEX_LEN_TABLE (VEX_LEN_0F7E_P_2) }, }, - /* PREFIX_VEX_0F3A61 */ + /* PREFIX_VEX_0F7F */ { { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A61_P_2) }, + { "vmovdqu", { EXxS, XM }, 0 }, + { "vmovdqa", { EXxS, XM }, 0 }, }, - /* PREFIX_VEX_0F3A62 */ + /* PREFIX_VEX_0F90 */ { + { VEX_LEN_TABLE (VEX_LEN_0F90_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A62_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F90_P_2) }, }, - /* PREFIX_VEX_0F3A63 */ + /* PREFIX_VEX_0F91 */ { + { VEX_LEN_TABLE (VEX_LEN_0F91_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A63_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F91_P_2) }, }, - /* PREFIX_VEX_0F3A68 */ + /* PREFIX_VEX_0F92 */ { + { VEX_LEN_TABLE (VEX_LEN_0F92_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddps", { XM, Vex, EXx, XMVexI4 }, 0 }, + { VEX_LEN_TABLE (VEX_LEN_0F92_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F92_P_3) }, }, - /* PREFIX_VEX_0F3A69 */ + /* PREFIX_VEX_0F93 */ { + { VEX_LEN_TABLE (VEX_LEN_0F93_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddpd", { XM, Vex, EXx, XMVexI4 }, 0 }, + { VEX_LEN_TABLE (VEX_LEN_0F93_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F93_P_3) }, }, - /* PREFIX_VEX_0F3A6A */ + /* PREFIX_VEX_0F98 */ { + { VEX_LEN_TABLE (VEX_LEN_0F98_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, 0 }, + { VEX_LEN_TABLE (VEX_LEN_0F98_P_2) }, }, - /* PREFIX_VEX_0F3A6B */ + /* PREFIX_VEX_0F99 */ { + { VEX_LEN_TABLE (VEX_LEN_0F99_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, 0 }, + { VEX_LEN_TABLE (VEX_LEN_0F99_P_2) }, }, - /* PREFIX_VEX_0F3A6C */ + /* PREFIX_VEX_0FC2 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubps", { XM, Vex, EXx, XMVexI4 }, 0 }, + { "vcmpps", { XM, Vex, EXx, CMP }, 0 }, + { "vcmpss", { XMScalar, VexScalar, EXxmm_md, CMP }, 0 }, + { "vcmppd", { XM, Vex, EXx, CMP }, 0 }, + { "vcmpsd", { XMScalar, VexScalar, EXxmm_mq, CMP }, 0 }, }, - /* PREFIX_VEX_0F3A6D */ + /* PREFIX_VEX_0FD0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsubpd", { XM, Vex, EXx, XMVexI4 }, 0 }, + { "vaddsubpd", { XM, Vex, EXx }, 0 }, + { "vaddsubps", { XM, Vex, EXx }, 0 }, }, - /* PREFIX_VEX_0F3A6E */ + /* PREFIX_VEX_0FE6 */ { { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, 0 }, + { "vcvtdq2pd", { XM, EXxmmq }, 0 }, + { "vcvttpd2dq%XY", { XMM, EXx }, 0 }, + { "vcvtpd2dq%XY", { XMM, EXx }, 0 }, }, - /* PREFIX_VEX_0F3A6F */ + /* PREFIX_VEX_0FF0 */ { { Bad_Opcode }, { Bad_Opcode }, - { "vfmsubsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, 0 }, + { Bad_Opcode }, + { MOD_TABLE (MOD_VEX_0FF0_PREFIX_3) }, }, - /* PREFIX_VEX_0F3A78 */ + /* PREFIX_VEX_0F3849_X86_64 */ { + { VEX_W_TABLE (VEX_W_0F3849_X86_64_P_0) }, { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmaddps", { XM, Vex, EXx, XMVexI4 }, 0 }, + { VEX_W_TABLE (VEX_W_0F3849_X86_64_P_2) }, + { VEX_W_TABLE (VEX_W_0F3849_X86_64_P_3) }, }, - /* PREFIX_VEX_0F3A79 */ + /* PREFIX_VEX_0F384B_X86_64 */ { { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmaddpd", { XM, Vex, EXx, XMVexI4 }, 0 }, + { VEX_W_TABLE (VEX_W_0F384B_X86_64_P_1) }, + { VEX_W_TABLE (VEX_W_0F384B_X86_64_P_2) }, + { VEX_W_TABLE (VEX_W_0F384B_X86_64_P_3) }, }, - /* PREFIX_VEX_0F3A7A */ + /* PREFIX_VEX_0F385C_X86_64 */ { { Bad_Opcode }, + { VEX_W_TABLE (VEX_W_0F385C_X86_64_P_1) }, { Bad_Opcode }, - { "vfnmaddss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, 0 }, }, - /* PREFIX_VEX_0F3A7B */ + /* PREFIX_VEX_0F385E_X86_64 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmaddsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, 0 }, + { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_0) }, + { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_1) }, + { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_2) }, + { VEX_W_TABLE (VEX_W_0F385E_X86_64_P_3) }, }, - /* PREFIX_VEX_0F3A7C */ + /* PREFIX_VEX_0F38F2 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsubps", { XM, Vex, EXx, XMVexI4 }, 0 }, - { Bad_Opcode }, + { VEX_LEN_TABLE (VEX_LEN_0F38F2_P_0) }, }, - /* PREFIX_VEX_0F3A7D */ + /* PREFIX_VEX_0F38F3_REG_1 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsubpd", { XM, Vex, EXx, XMVexI4 }, 0 }, + { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_1_P_0) }, }, - /* PREFIX_VEX_0F3A7E */ + /* PREFIX_VEX_0F38F3_REG_2 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsubss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, 0 }, + { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_2_P_0) }, }, - /* PREFIX_VEX_0F3A7F */ + /* PREFIX_VEX_0F38F3_REG_3 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsubsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, 0 }, + { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_3_P_0) }, }, - /* PREFIX_VEX_0F3ACE */ + /* PREFIX_VEX_0F38F5 */ { + { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_0) }, + { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_1) }, { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3ACE_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_3) }, }, - /* PREFIX_VEX_0F3ACF */ + /* PREFIX_VEX_0F38F6 */ { { Bad_Opcode }, { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3ACF_P_2) }, + { Bad_Opcode }, + { VEX_LEN_TABLE (VEX_LEN_0F38F6_P_3) }, }, - /* PREFIX_VEX_0F3ADF */ + /* PREFIX_VEX_0F38F7 */ { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3ADF_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_0) }, + { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_1) }, + { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_2) }, + { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_3) }, }, /* PREFIX_VEX_0F3AF0 */ @@ -7006,14 +4305,14 @@ static const struct dis386 three_byte_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 10 */ - { PREFIX_TABLE (PREFIX_0F3810) }, + { "pblendvb", { XM, EXx, XMM0 }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F3814) }, - { PREFIX_TABLE (PREFIX_0F3815) }, + { "blendvps", { XM, EXx, XMM0 }, PREFIX_DATA }, + { "blendvpd", { XM, EXx, XMM0 }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F3817) }, + { "ptest", { XM, EXx }, PREFIX_DATA }, /* 18 */ { Bad_Opcode }, { Bad_Opcode }, @@ -7024,44 +4323,44 @@ static const struct dis386 three_byte_table[][256] = { { "pabsd", { MX, EM }, PREFIX_OPCODE }, { Bad_Opcode }, /* 20 */ - { PREFIX_TABLE (PREFIX_0F3820) }, - { PREFIX_TABLE (PREFIX_0F3821) }, - { PREFIX_TABLE (PREFIX_0F3822) }, - { PREFIX_TABLE (PREFIX_0F3823) }, - { PREFIX_TABLE (PREFIX_0F3824) }, - { PREFIX_TABLE (PREFIX_0F3825) }, + { "pmovsxbw", { XM, EXq }, PREFIX_DATA }, + { "pmovsxbd", { XM, EXd }, PREFIX_DATA }, + { "pmovsxbq", { XM, EXw }, PREFIX_DATA }, + { "pmovsxwd", { XM, EXq }, PREFIX_DATA }, + { "pmovsxwq", { XM, EXd }, PREFIX_DATA }, + { "pmovsxdq", { XM, EXq }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ - { PREFIX_TABLE (PREFIX_0F3828) }, - { PREFIX_TABLE (PREFIX_0F3829) }, - { PREFIX_TABLE (PREFIX_0F382A) }, - { PREFIX_TABLE (PREFIX_0F382B) }, + { "pmuldq", { XM, EXx }, PREFIX_DATA }, + { "pcmpeqq", { XM, EXx }, PREFIX_DATA }, + { MOD_TABLE (MOD_0F382A) }, + { "packusdw", { XM, EXx }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 30 */ - { PREFIX_TABLE (PREFIX_0F3830) }, - { PREFIX_TABLE (PREFIX_0F3831) }, - { PREFIX_TABLE (PREFIX_0F3832) }, - { PREFIX_TABLE (PREFIX_0F3833) }, - { PREFIX_TABLE (PREFIX_0F3834) }, - { PREFIX_TABLE (PREFIX_0F3835) }, - { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F3837) }, + { "pmovzxbw", { XM, EXq }, PREFIX_DATA }, + { "pmovzxbd", { XM, EXd }, PREFIX_DATA }, + { "pmovzxbq", { XM, EXw }, PREFIX_DATA }, + { "pmovzxwd", { XM, EXq }, PREFIX_DATA }, + { "pmovzxwq", { XM, EXd }, PREFIX_DATA }, + { "pmovzxdq", { XM, EXq }, PREFIX_DATA }, + { Bad_Opcode }, + { "pcmpgtq", { XM, EXx }, PREFIX_DATA }, /* 38 */ - { PREFIX_TABLE (PREFIX_0F3838) }, - { PREFIX_TABLE (PREFIX_0F3839) }, - { PREFIX_TABLE (PREFIX_0F383A) }, - { PREFIX_TABLE (PREFIX_0F383B) }, - { PREFIX_TABLE (PREFIX_0F383C) }, - { PREFIX_TABLE (PREFIX_0F383D) }, - { PREFIX_TABLE (PREFIX_0F383E) }, - { PREFIX_TABLE (PREFIX_0F383F) }, + { "pminsb", { XM, EXx }, PREFIX_DATA }, + { "pminsd", { XM, EXx }, PREFIX_DATA }, + { "pminuw", { XM, EXx }, PREFIX_DATA }, + { "pminud", { XM, EXx }, PREFIX_DATA }, + { "pmaxsb", { XM, EXx }, PREFIX_DATA }, + { "pmaxsd", { XM, EXx }, PREFIX_DATA }, + { "pmaxuw", { XM, EXx }, PREFIX_DATA }, + { "pmaxud", { XM, EXx }, PREFIX_DATA }, /* 40 */ - { PREFIX_TABLE (PREFIX_0F3840) }, - { PREFIX_TABLE (PREFIX_0F3841) }, + { "pmulld", { XM, EXx }, PREFIX_DATA }, + { "phminposuw", { XM, EXx }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -7132,9 +4431,9 @@ static const struct dis386 three_byte_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 80 */ - { PREFIX_TABLE (PREFIX_0F3880) }, - { PREFIX_TABLE (PREFIX_0F3881) }, - { PREFIX_TABLE (PREFIX_0F3882) }, + { "invept", { Gm, Mo }, PREFIX_DATA }, + { "invvpid", { Gm, Mo }, PREFIX_DATA }, + { "invpcid", { Gm, M }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -7220,7 +4519,7 @@ static const struct dis386 three_byte_table[][256] = { { PREFIX_TABLE (PREFIX_0F38CC) }, { PREFIX_TABLE (PREFIX_0F38CD) }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F38CF) }, + { "gf2p8mulb", { XM, EXxmm }, PREFIX_DATA }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -7234,11 +4533,11 @@ static const struct dis386 three_byte_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F38DB) }, - { PREFIX_TABLE (PREFIX_0F38DC) }, - { PREFIX_TABLE (PREFIX_0F38DD) }, - { PREFIX_TABLE (PREFIX_0F38DE) }, - { PREFIX_TABLE (PREFIX_0F38DF) }, + { "aesimc", { XM, EXx }, PREFIX_DATA }, + { "aesenc", { XM, EXx }, PREFIX_DATA }, + { "aesenclast", { XM, EXx }, PREFIX_DATA }, + { "aesdec", { XM, EXx }, PREFIX_DATA }, + { "aesdeclast", { XM, EXx }, PREFIX_DATA }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -7263,7 +4562,7 @@ static const struct dis386 three_byte_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F38F5) }, + { MOD_TABLE (MOD_0F38F5) }, { PREFIX_TABLE (PREFIX_0F38F6) }, { Bad_Opcode }, /* f8 */ @@ -7288,23 +4587,23 @@ static const struct dis386 three_byte_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 08 */ - { PREFIX_TABLE (PREFIX_0F3A08) }, - { PREFIX_TABLE (PREFIX_0F3A09) }, - { PREFIX_TABLE (PREFIX_0F3A0A) }, - { PREFIX_TABLE (PREFIX_0F3A0B) }, - { PREFIX_TABLE (PREFIX_0F3A0C) }, - { PREFIX_TABLE (PREFIX_0F3A0D) }, - { PREFIX_TABLE (PREFIX_0F3A0E) }, + { "roundps", { XM, EXx, Ib }, PREFIX_DATA }, + { "roundpd", { XM, EXx, Ib }, PREFIX_DATA }, + { "roundss", { XM, EXd, Ib }, PREFIX_DATA }, + { "roundsd", { XM, EXq, Ib }, PREFIX_DATA }, + { "blendps", { XM, EXx, Ib }, PREFIX_DATA }, + { "blendpd", { XM, EXx, Ib }, PREFIX_DATA }, + { "pblendw", { XM, EXx, Ib }, PREFIX_DATA }, { "palignr", { MX, EM, Ib }, PREFIX_OPCODE }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F3A14) }, - { PREFIX_TABLE (PREFIX_0F3A15) }, - { PREFIX_TABLE (PREFIX_0F3A16) }, - { PREFIX_TABLE (PREFIX_0F3A17) }, + { "pextrb", { Edqb, XM, Ib }, PREFIX_DATA }, + { "pextrw", { Edqw, XM, Ib }, PREFIX_DATA }, + { "pextrK", { Edq, XM, Ib }, PREFIX_DATA }, + { "extractps", { Edqd, XM, Ib }, PREFIX_DATA }, /* 18 */ { Bad_Opcode }, { Bad_Opcode }, @@ -7315,9 +4614,9 @@ static const struct dis386 three_byte_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 20 */ - { PREFIX_TABLE (PREFIX_0F3A20) }, - { PREFIX_TABLE (PREFIX_0F3A21) }, - { PREFIX_TABLE (PREFIX_0F3A22) }, + { "pinsrb", { XM, Edqb, Ib }, PREFIX_DATA }, + { "insertps", { XM, EXd, Ib }, PREFIX_DATA }, + { "pinsrK", { XM, Edq, Ib }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -7351,11 +4650,11 @@ static const struct dis386 three_byte_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 40 */ - { PREFIX_TABLE (PREFIX_0F3A40) }, - { PREFIX_TABLE (PREFIX_0F3A41) }, - { PREFIX_TABLE (PREFIX_0F3A42) }, + { "dpps", { XM, EXx, Ib }, PREFIX_DATA }, + { "dppd", { XM, EXx, Ib }, PREFIX_DATA }, + { "mpsadbw", { XM, EXx, Ib }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F3A44) }, + { "pclmulqdq", { XM, EXx, PCLMUL }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -7387,10 +4686,10 @@ static const struct dis386 three_byte_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 60 */ - { PREFIX_TABLE (PREFIX_0F3A60) }, - { PREFIX_TABLE (PREFIX_0F3A61) }, - { PREFIX_TABLE (PREFIX_0F3A62) }, - { PREFIX_TABLE (PREFIX_0F3A63) }, + { "pcmpestrm!%LQ", { XM, EXx, Ib }, PREFIX_DATA }, + { "pcmpestri!%LQ", { XM, EXx, Ib }, PREFIX_DATA }, + { "pcmpistrm", { XM, EXx, Ib }, PREFIX_DATA }, + { "pcmpistri", { XM, EXx, Ib }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -7510,8 +4809,8 @@ static const struct dis386 three_byte_table[][256] = { { Bad_Opcode }, { PREFIX_TABLE (PREFIX_0F3ACC) }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F3ACE) }, - { PREFIX_TABLE (PREFIX_0F3ACF) }, + { "gf2p8affineqb", { XM, EXxmm, Ib }, PREFIX_DATA }, + { "gf2p8affineinvqb", { XM, EXxmm, Ib }, PREFIX_DATA }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -7529,7 +4828,7 @@ static const struct dis386 three_byte_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F3ADF) }, + { "aeskeygenassist", { XM, EXx, Ib }, PREFIX_DATA }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -8557,31 +5856,31 @@ static const struct dis386 vex_table[][256] = { { PREFIX_TABLE (PREFIX_VEX_0F5E) }, { PREFIX_TABLE (PREFIX_VEX_0F5F) }, /* 60 */ - { PREFIX_TABLE (PREFIX_VEX_0F60) }, - { PREFIX_TABLE (PREFIX_VEX_0F61) }, - { PREFIX_TABLE (PREFIX_VEX_0F62) }, - { PREFIX_TABLE (PREFIX_VEX_0F63) }, - { PREFIX_TABLE (PREFIX_VEX_0F64) }, - { PREFIX_TABLE (PREFIX_VEX_0F65) }, - { PREFIX_TABLE (PREFIX_VEX_0F66) }, - { PREFIX_TABLE (PREFIX_VEX_0F67) }, + { "vpunpcklbw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpunpcklwd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpunpckldq", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpacksswb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpcmpgtb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpcmpgtw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpcmpgtd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpackuswb", { XM, Vex, EXx }, PREFIX_DATA }, /* 68 */ - { PREFIX_TABLE (PREFIX_VEX_0F68) }, - { PREFIX_TABLE (PREFIX_VEX_0F69) }, - { PREFIX_TABLE (PREFIX_VEX_0F6A) }, - { PREFIX_TABLE (PREFIX_VEX_0F6B) }, - { PREFIX_TABLE (PREFIX_VEX_0F6C) }, - { PREFIX_TABLE (PREFIX_VEX_0F6D) }, - { PREFIX_TABLE (PREFIX_VEX_0F6E) }, + { "vpunpckhbw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpunpckhwd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpunpckhdq", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpackssdw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpunpcklqdq", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpunpckhqdq", { XM, Vex, EXx }, PREFIX_DATA }, + { VEX_LEN_TABLE (VEX_LEN_0F6E) }, { PREFIX_TABLE (PREFIX_VEX_0F6F) }, /* 70 */ { PREFIX_TABLE (PREFIX_VEX_0F70) }, { REG_TABLE (REG_VEX_0F71) }, { REG_TABLE (REG_VEX_0F72) }, { REG_TABLE (REG_VEX_0F73) }, - { PREFIX_TABLE (PREFIX_VEX_0F74) }, - { PREFIX_TABLE (PREFIX_VEX_0F75) }, - { PREFIX_TABLE (PREFIX_VEX_0F76) }, + { "vpcmpeqb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpcmpeqw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpcmpeqd", { XM, Vex, EXx }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_VEX_0F77) }, /* 78 */ { Bad_Opcode }, @@ -8669,8 +5968,8 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { PREFIX_TABLE (PREFIX_VEX_0FC2) }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0FC4) }, - { PREFIX_TABLE (PREFIX_VEX_0FC5) }, + { VEX_LEN_TABLE (VEX_LEN_0FC4) }, + { VEX_LEN_TABLE (VEX_LEN_0FC5) }, { "vshufpX", { XM, Vex, EXx, Ib }, PREFIX_OPCODE }, { Bad_Opcode }, /* c8 */ @@ -8684,142 +5983,142 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, /* d0 */ { PREFIX_TABLE (PREFIX_VEX_0FD0) }, - { PREFIX_TABLE (PREFIX_VEX_0FD1) }, - { PREFIX_TABLE (PREFIX_VEX_0FD2) }, - { PREFIX_TABLE (PREFIX_VEX_0FD3) }, - { PREFIX_TABLE (PREFIX_VEX_0FD4) }, - { PREFIX_TABLE (PREFIX_VEX_0FD5) }, - { PREFIX_TABLE (PREFIX_VEX_0FD6) }, - { PREFIX_TABLE (PREFIX_VEX_0FD7) }, + { "vpsrlw", { XM, Vex, EXxmm }, PREFIX_DATA }, + { "vpsrld", { XM, Vex, EXxmm }, PREFIX_DATA }, + { "vpsrlq", { XM, Vex, EXxmm }, PREFIX_DATA }, + { "vpaddq", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmullw", { XM, Vex, EXx }, PREFIX_DATA }, + { VEX_LEN_TABLE (VEX_LEN_0FD6) }, + { MOD_TABLE (MOD_VEX_0FD7) }, /* d8 */ - { PREFIX_TABLE (PREFIX_VEX_0FD8) }, - { PREFIX_TABLE (PREFIX_VEX_0FD9) }, - { PREFIX_TABLE (PREFIX_VEX_0FDA) }, - { PREFIX_TABLE (PREFIX_VEX_0FDB) }, - { PREFIX_TABLE (PREFIX_VEX_0FDC) }, - { PREFIX_TABLE (PREFIX_VEX_0FDD) }, - { PREFIX_TABLE (PREFIX_VEX_0FDE) }, - { PREFIX_TABLE (PREFIX_VEX_0FDF) }, + { "vpsubusb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsubusw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpminub", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpand", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddusb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddusw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxub", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpandn", { XM, Vex, EXx }, PREFIX_DATA }, /* e0 */ - { PREFIX_TABLE (PREFIX_VEX_0FE0) }, - { PREFIX_TABLE (PREFIX_VEX_0FE1) }, - { PREFIX_TABLE (PREFIX_VEX_0FE2) }, - { PREFIX_TABLE (PREFIX_VEX_0FE3) }, - { PREFIX_TABLE (PREFIX_VEX_0FE4) }, - { PREFIX_TABLE (PREFIX_VEX_0FE5) }, + { "vpavgb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsraw", { XM, Vex, EXxmm }, PREFIX_DATA }, + { "vpsrad", { XM, Vex, EXxmm }, PREFIX_DATA }, + { "vpavgw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmulhuw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmulhw", { XM, Vex, EXx }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_VEX_0FE6) }, - { PREFIX_TABLE (PREFIX_VEX_0FE7) }, + { MOD_TABLE (MOD_VEX_0FE7) }, /* e8 */ - { PREFIX_TABLE (PREFIX_VEX_0FE8) }, - { PREFIX_TABLE (PREFIX_VEX_0FE9) }, - { PREFIX_TABLE (PREFIX_VEX_0FEA) }, - { PREFIX_TABLE (PREFIX_VEX_0FEB) }, - { PREFIX_TABLE (PREFIX_VEX_0FEC) }, - { PREFIX_TABLE (PREFIX_VEX_0FED) }, - { PREFIX_TABLE (PREFIX_VEX_0FEE) }, - { PREFIX_TABLE (PREFIX_VEX_0FEF) }, + { "vpsubsb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsubsw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpminsw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpor", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddsb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddsw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxsw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpxor", { XM, Vex, EXx }, PREFIX_DATA }, /* f0 */ { PREFIX_TABLE (PREFIX_VEX_0FF0) }, - { PREFIX_TABLE (PREFIX_VEX_0FF1) }, - { PREFIX_TABLE (PREFIX_VEX_0FF2) }, - { PREFIX_TABLE (PREFIX_VEX_0FF3) }, - { PREFIX_TABLE (PREFIX_VEX_0FF4) }, - { PREFIX_TABLE (PREFIX_VEX_0FF5) }, - { PREFIX_TABLE (PREFIX_VEX_0FF6) }, - { PREFIX_TABLE (PREFIX_VEX_0FF7) }, + { "vpsllw", { XM, Vex, EXxmm }, PREFIX_DATA }, + { "vpslld", { XM, Vex, EXxmm }, PREFIX_DATA }, + { "vpsllq", { XM, Vex, EXxmm }, PREFIX_DATA }, + { "vpmuludq", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaddwd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsadbw", { XM, Vex, EXx }, PREFIX_DATA }, + { VEX_LEN_TABLE (VEX_LEN_0FF7) }, /* f8 */ - { PREFIX_TABLE (PREFIX_VEX_0FF8) }, - { PREFIX_TABLE (PREFIX_VEX_0FF9) }, - { PREFIX_TABLE (PREFIX_VEX_0FFA) }, - { PREFIX_TABLE (PREFIX_VEX_0FFB) }, - { PREFIX_TABLE (PREFIX_VEX_0FFC) }, - { PREFIX_TABLE (PREFIX_VEX_0FFD) }, - { PREFIX_TABLE (PREFIX_VEX_0FFE) }, + { "vpsubb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsubw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsubd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsubq", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpaddd", { XM, Vex, EXx }, PREFIX_DATA }, { Bad_Opcode }, }, /* VEX_0F38 */ { /* 00 */ - { PREFIX_TABLE (PREFIX_VEX_0F3800) }, - { PREFIX_TABLE (PREFIX_VEX_0F3801) }, - { PREFIX_TABLE (PREFIX_VEX_0F3802) }, - { PREFIX_TABLE (PREFIX_VEX_0F3803) }, - { PREFIX_TABLE (PREFIX_VEX_0F3804) }, - { PREFIX_TABLE (PREFIX_VEX_0F3805) }, - { PREFIX_TABLE (PREFIX_VEX_0F3806) }, - { PREFIX_TABLE (PREFIX_VEX_0F3807) }, + { "vpshufb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vphaddw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vphaddd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vphaddsw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaddubsw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vphsubw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vphsubd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vphsubsw", { XM, Vex, EXx }, PREFIX_DATA }, /* 08 */ - { PREFIX_TABLE (PREFIX_VEX_0F3808) }, - { PREFIX_TABLE (PREFIX_VEX_0F3809) }, - { PREFIX_TABLE (PREFIX_VEX_0F380A) }, - { PREFIX_TABLE (PREFIX_VEX_0F380B) }, - { PREFIX_TABLE (PREFIX_VEX_0F380C) }, - { PREFIX_TABLE (PREFIX_VEX_0F380D) }, - { PREFIX_TABLE (PREFIX_VEX_0F380E) }, - { PREFIX_TABLE (PREFIX_VEX_0F380F) }, + { "vpsignb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsignw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpsignd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmulhrsw", { XM, Vex, EXx }, PREFIX_DATA }, + { VEX_W_TABLE (VEX_W_0F380C) }, + { VEX_W_TABLE (VEX_W_0F380D) }, + { VEX_W_TABLE (VEX_W_0F380E) }, + { VEX_W_TABLE (VEX_W_0F380F) }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3813) }, + { VEX_W_TABLE (VEX_W_0F3813) }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3816) }, - { PREFIX_TABLE (PREFIX_VEX_0F3817) }, + { VEX_LEN_TABLE (VEX_LEN_0F3816) }, + { "vptest", { XM, EXx }, PREFIX_DATA }, /* 18 */ - { PREFIX_TABLE (PREFIX_VEX_0F3818) }, - { PREFIX_TABLE (PREFIX_VEX_0F3819) }, - { PREFIX_TABLE (PREFIX_VEX_0F381A) }, + { VEX_W_TABLE (VEX_W_0F3818) }, + { VEX_LEN_TABLE (VEX_LEN_0F3819) }, + { MOD_TABLE (MOD_VEX_0F381A) }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F381C) }, - { PREFIX_TABLE (PREFIX_VEX_0F381D) }, - { PREFIX_TABLE (PREFIX_VEX_0F381E) }, + { "vpabsb", { XM, EXx }, PREFIX_DATA }, + { "vpabsw", { XM, EXx }, PREFIX_DATA }, + { "vpabsd", { XM, EXx }, PREFIX_DATA }, { Bad_Opcode }, /* 20 */ - { PREFIX_TABLE (PREFIX_VEX_0F3820) }, - { PREFIX_TABLE (PREFIX_VEX_0F3821) }, - { PREFIX_TABLE (PREFIX_VEX_0F3822) }, - { PREFIX_TABLE (PREFIX_VEX_0F3823) }, - { PREFIX_TABLE (PREFIX_VEX_0F3824) }, - { PREFIX_TABLE (PREFIX_VEX_0F3825) }, + { "vpmovsxbw", { XM, EXxmmq }, PREFIX_DATA }, + { "vpmovsxbd", { XM, EXxmmqd }, PREFIX_DATA }, + { "vpmovsxbq", { XM, EXxmmdw }, PREFIX_DATA }, + { "vpmovsxwd", { XM, EXxmmq }, PREFIX_DATA }, + { "vpmovsxwq", { XM, EXxmmqd }, PREFIX_DATA }, + { "vpmovsxdq", { XM, EXxmmq }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, /* 28 */ - { PREFIX_TABLE (PREFIX_VEX_0F3828) }, - { PREFIX_TABLE (PREFIX_VEX_0F3829) }, - { PREFIX_TABLE (PREFIX_VEX_0F382A) }, - { PREFIX_TABLE (PREFIX_VEX_0F382B) }, - { PREFIX_TABLE (PREFIX_VEX_0F382C) }, - { PREFIX_TABLE (PREFIX_VEX_0F382D) }, - { PREFIX_TABLE (PREFIX_VEX_0F382E) }, - { PREFIX_TABLE (PREFIX_VEX_0F382F) }, + { "vpmuldq", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpcmpeqq", { XM, Vex, EXx }, PREFIX_DATA }, + { MOD_TABLE (MOD_VEX_0F382A) }, + { "vpackusdw", { XM, Vex, EXx }, PREFIX_DATA }, + { MOD_TABLE (MOD_VEX_0F382C) }, + { MOD_TABLE (MOD_VEX_0F382D) }, + { MOD_TABLE (MOD_VEX_0F382E) }, + { MOD_TABLE (MOD_VEX_0F382F) }, /* 30 */ - { PREFIX_TABLE (PREFIX_VEX_0F3830) }, - { PREFIX_TABLE (PREFIX_VEX_0F3831) }, - { PREFIX_TABLE (PREFIX_VEX_0F3832) }, - { PREFIX_TABLE (PREFIX_VEX_0F3833) }, - { PREFIX_TABLE (PREFIX_VEX_0F3834) }, - { PREFIX_TABLE (PREFIX_VEX_0F3835) }, - { PREFIX_TABLE (PREFIX_VEX_0F3836) }, - { PREFIX_TABLE (PREFIX_VEX_0F3837) }, + { "vpmovzxbw", { XM, EXxmmq }, PREFIX_DATA }, + { "vpmovzxbd", { XM, EXxmmqd }, PREFIX_DATA }, + { "vpmovzxbq", { XM, EXxmmdw }, PREFIX_DATA }, + { "vpmovzxwd", { XM, EXxmmq }, PREFIX_DATA }, + { "vpmovzxwq", { XM, EXxmmqd }, PREFIX_DATA }, + { "vpmovzxdq", { XM, EXxmmq }, PREFIX_DATA }, + { VEX_LEN_TABLE (VEX_LEN_0F3836) }, + { "vpcmpgtq", { XM, Vex, EXx }, PREFIX_DATA }, /* 38 */ - { PREFIX_TABLE (PREFIX_VEX_0F3838) }, - { PREFIX_TABLE (PREFIX_VEX_0F3839) }, - { PREFIX_TABLE (PREFIX_VEX_0F383A) }, - { PREFIX_TABLE (PREFIX_VEX_0F383B) }, - { PREFIX_TABLE (PREFIX_VEX_0F383C) }, - { PREFIX_TABLE (PREFIX_VEX_0F383D) }, - { PREFIX_TABLE (PREFIX_VEX_0F383E) }, - { PREFIX_TABLE (PREFIX_VEX_0F383F) }, + { "vpminsb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpminsd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpminuw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpminud", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxsb", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxsd", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxuw", { XM, Vex, EXx }, PREFIX_DATA }, + { "vpmaxud", { XM, Vex, EXx }, PREFIX_DATA }, /* 40 */ - { PREFIX_TABLE (PREFIX_VEX_0F3840) }, - { PREFIX_TABLE (PREFIX_VEX_0F3841) }, + { "vpmulld", { XM, Vex, EXx }, PREFIX_DATA }, + { VEX_LEN_TABLE (VEX_LEN_0F3841) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3845) }, - { PREFIX_TABLE (PREFIX_VEX_0F3846) }, - { PREFIX_TABLE (PREFIX_VEX_0F3847) }, + { "vpsrlv%DQ", { XM, Vex, EXx }, PREFIX_DATA }, + { VEX_W_TABLE (VEX_W_0F3846) }, + { "vpsllv%DQ", { XM, Vex, EXx }, PREFIX_DATA }, /* 48 */ { Bad_Opcode }, { X86_64_TABLE (X86_64_VEX_0F3849) }, @@ -8839,9 +6138,9 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 58 */ - { PREFIX_TABLE (PREFIX_VEX_0F3858) }, - { PREFIX_TABLE (PREFIX_VEX_0F3859) }, - { PREFIX_TABLE (PREFIX_VEX_0F385A) }, + { VEX_W_TABLE (VEX_W_0F3858) }, + { VEX_W_TABLE (VEX_W_0F3859) }, + { MOD_TABLE (MOD_VEX_0F385A) }, { Bad_Opcode }, { X86_64_TABLE (X86_64_VEX_0F385C) }, { Bad_Opcode }, @@ -8875,8 +6174,8 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 78 */ - { PREFIX_TABLE (PREFIX_VEX_0F3878) }, - { PREFIX_TABLE (PREFIX_VEX_0F3879) }, + { VEX_W_TABLE (VEX_W_0F3878) }, + { VEX_W_TABLE (VEX_W_0F3879) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -8897,28 +6196,28 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F388C) }, + { MOD_TABLE (MOD_VEX_0F388C) }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F388E) }, + { MOD_TABLE (MOD_VEX_0F388E) }, { Bad_Opcode }, /* 90 */ - { PREFIX_TABLE (PREFIX_VEX_0F3890) }, - { PREFIX_TABLE (PREFIX_VEX_0F3891) }, - { PREFIX_TABLE (PREFIX_VEX_0F3892) }, - { PREFIX_TABLE (PREFIX_VEX_0F3893) }, + { "vpgatherd%DQ", { XM, MVexVSIBDWpX, Vex }, PREFIX_DATA }, + { "vpgatherq%DQ", { XMGatherQ, MVexVSIBQWpX, VexGatherQ }, PREFIX_DATA }, + { "vgatherdp%XW", { XM, MVexVSIBDWpX, Vex }, PREFIX_DATA }, + { "vgatherqp%XW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ }, PREFIX_DATA }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3896) }, - { PREFIX_TABLE (PREFIX_VEX_0F3897) }, + { "vfmaddsub132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfmsubadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, /* 98 */ - { PREFIX_TABLE (PREFIX_VEX_0F3898) }, - { PREFIX_TABLE (PREFIX_VEX_0F3899) }, - { PREFIX_TABLE (PREFIX_VEX_0F389A) }, - { PREFIX_TABLE (PREFIX_VEX_0F389B) }, - { PREFIX_TABLE (PREFIX_VEX_0F389C) }, - { PREFIX_TABLE (PREFIX_VEX_0F389D) }, - { PREFIX_TABLE (PREFIX_VEX_0F389E) }, - { PREFIX_TABLE (PREFIX_VEX_0F389F) }, + { "vfmadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfmsub132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmadd132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmsub132p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, /* a0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -8926,17 +6225,17 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F38A6) }, - { PREFIX_TABLE (PREFIX_VEX_0F38A7) }, + { "vfmaddsub213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfmsubadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, /* a8 */ - { PREFIX_TABLE (PREFIX_VEX_0F38A8) }, - { PREFIX_TABLE (PREFIX_VEX_0F38A9) }, - { PREFIX_TABLE (PREFIX_VEX_0F38AA) }, - { PREFIX_TABLE (PREFIX_VEX_0F38AB) }, - { PREFIX_TABLE (PREFIX_VEX_0F38AC) }, - { PREFIX_TABLE (PREFIX_VEX_0F38AD) }, - { PREFIX_TABLE (PREFIX_VEX_0F38AE) }, - { PREFIX_TABLE (PREFIX_VEX_0F38AF) }, + { "vfmadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfmsub213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmadd213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmsub213p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, /* b0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -8944,17 +6243,17 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F38B6) }, - { PREFIX_TABLE (PREFIX_VEX_0F38B7) }, + { "vfmaddsub231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfmsubadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, /* b8 */ - { PREFIX_TABLE (PREFIX_VEX_0F38B8) }, - { PREFIX_TABLE (PREFIX_VEX_0F38B9) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BA) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BB) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BC) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BD) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BE) }, - { PREFIX_TABLE (PREFIX_VEX_0F38BF) }, + { "vfmadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfmsub231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmadd231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, + { "vfnmsub231p%XW", { XM, Vex, EXx }, PREFIX_DATA }, + { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar }, PREFIX_DATA }, /* c0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -8972,7 +6271,7 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F38CF) }, + { VEX_W_TABLE (VEX_W_0F38CF) }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -8986,11 +6285,11 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F38DB) }, - { PREFIX_TABLE (PREFIX_VEX_0F38DC) }, - { PREFIX_TABLE (PREFIX_VEX_0F38DD) }, - { PREFIX_TABLE (PREFIX_VEX_0F38DE) }, - { PREFIX_TABLE (PREFIX_VEX_0F38DF) }, + { VEX_LEN_TABLE (VEX_LEN_0F38DB) }, + { "vaesenc", { XM, Vex, EXx }, PREFIX_DATA }, + { "vaesenclast", { XM, Vex, EXx }, PREFIX_DATA }, + { "vaesdec", { XM, Vex, EXx }, PREFIX_DATA }, + { "vaesdeclast", { XM, Vex, EXx }, PREFIX_DATA }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -9031,45 +6330,45 @@ static const struct dis386 vex_table[][256] = { /* VEX_0F3A */ { /* 00 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A00) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A01) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A02) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A00) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A01) }, + { VEX_W_TABLE (VEX_W_0F3A02) }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3A04) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A05) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A06) }, + { VEX_W_TABLE (VEX_W_0F3A04) }, + { VEX_W_TABLE (VEX_W_0F3A05) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A06) }, { Bad_Opcode }, /* 08 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A08) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A09) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A0A) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A0B) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A0C) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A0D) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A0E) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A0F) }, + { "vroundps", { XM, EXx, Ib }, PREFIX_DATA }, + { "vroundpd", { XM, EXx, Ib }, PREFIX_DATA }, + { "vroundss", { XMScalar, VexScalar, EXxmm_md, Ib }, PREFIX_DATA }, + { "vroundsd", { XMScalar, VexScalar, EXxmm_mq, Ib }, PREFIX_DATA }, + { "vblendps", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { "vblendpd", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { "vpblendw", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { "vpalignr", { XM, Vex, EXx, Ib }, PREFIX_DATA }, /* 10 */ { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3A14) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A15) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A16) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A17) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A14) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A15) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A16) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A17) }, /* 18 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A18) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A19) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A18) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A19) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3A1D) }, + { VEX_W_TABLE (VEX_W_0F3A1D) }, { Bad_Opcode }, { Bad_Opcode }, /* 20 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A20) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A21) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A22) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A20) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A21) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A22) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -9085,17 +6384,17 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 30 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A30) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A31) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A32) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A33) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A30) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A31) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A32) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A33) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 38 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A38) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A39) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A38) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A39) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -9103,20 +6402,20 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 40 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A40) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A41) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A42) }, + { "vdpps", { XM, Vex, EXx, Ib }, PREFIX_DATA }, + { VEX_LEN_TABLE (VEX_LEN_0F3A41) }, + { "vmpsadbw", { XM, Vex, EXx, Ib }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3A44) }, + { "vpclmulqdq", { XM, Vex, EXx, PCLMUL }, PREFIX_DATA }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3A46) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A46) }, { Bad_Opcode }, /* 48 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A48) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A49) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A4A) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A4B) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A4C) }, + { "vpermil2ps", { XM, Vex, EXx, XMVexI4, VexI4 }, PREFIX_DATA }, + { "vpermil2pd", { XM, Vex, EXx, XMVexI4, VexI4 }, PREFIX_DATA }, + { VEX_W_TABLE (VEX_W_0F3A4A) }, + { VEX_W_TABLE (VEX_W_0F3A4B) }, + { VEX_W_TABLE (VEX_W_0F3A4C) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -9134,28 +6433,28 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3A5C) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A5D) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A5E) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A5F) }, + { "vfmaddsubps", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfmaddsubpd", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfmsubaddps", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfmsubaddpd", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, /* 60 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A60) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A61) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A62) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A63) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A60) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A61) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A62) }, + { VEX_LEN_TABLE (VEX_LEN_0F3A63) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, /* 68 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A68) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A69) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A6A) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A6B) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A6C) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A6D) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A6E) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A6F) }, + { "vfmaddps", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfmaddpd", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfmaddss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, PREFIX_DATA }, + { "vfmaddsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, PREFIX_DATA }, + { "vfmsubps", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfmsubpd", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfmsubss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, PREFIX_DATA }, + { "vfmsubsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, PREFIX_DATA }, /* 70 */ { Bad_Opcode }, { Bad_Opcode }, @@ -9166,14 +6465,14 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, /* 78 */ - { PREFIX_TABLE (PREFIX_VEX_0F3A78) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A79) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A7A) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A7B) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A7C) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A7D) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A7E) }, - { PREFIX_TABLE (PREFIX_VEX_0F3A7F) }, + { "vfnmaddps", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfnmaddpd", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfnmaddss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, PREFIX_DATA }, + { "vfnmaddsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, PREFIX_DATA }, + { "vfnmsubps", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfnmsubpd", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, + { "vfnmsubss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, PREFIX_DATA }, + { "vfnmsubsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, PREFIX_DATA }, /* 80 */ { Bad_Opcode }, { Bad_Opcode }, @@ -9262,8 +6561,8 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE(PREFIX_VEX_0F3ACE) }, - { PREFIX_TABLE(PREFIX_VEX_0F3ACF) }, + { VEX_W_TABLE (VEX_W_0F3ACE) }, + { VEX_W_TABLE (VEX_W_0F3ACF) }, /* d0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -9281,7 +6580,7 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F3ADF) }, + { VEX_LEN_TABLE (VEX_LEN_0F3ADF) }, /* e0 */ { Bad_Opcode }, { Bad_Opcode }, @@ -9433,9 +6732,9 @@ static const struct dis386 vex_len_table[][2] = { { VEX_W_TABLE (VEX_W_0F4B_P_2_LEN_1) }, }, - /* VEX_LEN_0F6E_P_2 */ + /* VEX_LEN_0F6E */ { - { "vmovK", { XMScalar, Edq }, 0 }, + { "vmovK", { XMScalar, Edq }, PREFIX_DATA }, }, /* VEX_LEN_0F77_P_1 */ @@ -9534,53 +6833,53 @@ static const struct dis386 vex_len_table[][2] = { { "vstmxcsr", { Md }, 0 }, }, - /* VEX_LEN_0FC4_P_2 */ + /* VEX_LEN_0FC4 */ { - { "vpinsrw", { XM, Vex, Edqw, Ib }, 0 }, + { "vpinsrw", { XM, Vex, Edqw, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0FC5_P_2 */ + /* VEX_LEN_0FC5 */ { - { "vpextrw", { Gdq, XS, Ib }, 0 }, + { "vpextrw", { Gdq, XS, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0FD6_P_2 */ + /* VEX_LEN_0FD6 */ { - { "vmovq", { EXqS, XMScalar }, 0 }, + { "vmovq", { EXqS, XMScalar }, PREFIX_DATA }, }, - /* VEX_LEN_0FF7_P_2 */ + /* VEX_LEN_0FF7 */ { - { "vmaskmovdqu", { XM, XS }, 0 }, + { "vmaskmovdqu", { XM, XS }, PREFIX_DATA }, }, - /* VEX_LEN_0F3816_P_2 */ + /* VEX_LEN_0F3816 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3816_P_2) }, + { VEX_W_TABLE (VEX_W_0F3816_L_1) }, }, - /* VEX_LEN_0F3819_P_2 */ + /* VEX_LEN_0F3819 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3819_P_2) }, + { VEX_W_TABLE (VEX_W_0F3819_L_1) }, }, - /* VEX_LEN_0F381A_P_2_M_0 */ + /* VEX_LEN_0F381A_M_0 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F381A_P_2_M_0_L_0) }, + { VEX_W_TABLE (VEX_W_0F381A_M_0_L_1) }, }, - /* VEX_LEN_0F3836_P_2 */ + /* VEX_LEN_0F3836 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3836_P_2) }, + { VEX_W_TABLE (VEX_W_0F3836) }, }, - /* VEX_LEN_0F3841_P_2 */ + /* VEX_LEN_0F3841 */ { - { "vphminposuw", { XM, EXx }, 0 }, + { "vphminposuw", { XM, EXx }, PREFIX_DATA }, }, /* VEX_LEN_0F3849_X86_64_P_0_W_0_M_0 */ @@ -9617,10 +6916,10 @@ static const struct dis386 vex_len_table[][2] = { { "tileloadd", { TMM, MVexSIBMEM }, 0 }, }, - /* VEX_LEN_0F385A_P_2_M_0 */ + /* VEX_LEN_0F385A_M_0 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F385A_P_2_M_0_L_0) }, + { VEX_W_TABLE (VEX_W_0F385A_M_0_L_0) }, }, /* VEX_LEN_0F385C_X86_64_P_1_W_0_M_0 */ @@ -9648,9 +6947,9 @@ static const struct dis386 vex_len_table[][2] = { { "tdpbssd", {TMM, EXtmm, VexTmm }, 0 }, }, - /* VEX_LEN_0F38DB_P_2 */ + /* VEX_LEN_0F38DB */ { - { "vaesimc", { XM, EXx }, 0 }, + { "vaesimc", { XM, EXx }, PREFIX_DATA }, }, /* VEX_LEN_0F38F2_P_0 */ @@ -9713,137 +7012,137 @@ static const struct dis386 vex_len_table[][2] = { { "shrxS", { Gdq, Edq, VexGdq }, 0 }, }, - /* VEX_LEN_0F3A00_P_2 */ + /* VEX_LEN_0F3A00 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A00_P_2) }, + { VEX_W_TABLE (VEX_W_0F3A00_L_1) }, }, - /* VEX_LEN_0F3A01_P_2 */ + /* VEX_LEN_0F3A01 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A01_P_2) }, + { VEX_W_TABLE (VEX_W_0F3A01_L_1) }, }, - /* VEX_LEN_0F3A06_P_2 */ + /* VEX_LEN_0F3A06 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A06_P_2_L_0) }, + { VEX_W_TABLE (VEX_W_0F3A06_L_1) }, }, - /* VEX_LEN_0F3A14_P_2 */ + /* VEX_LEN_0F3A14 */ { - { "vpextrb", { Edqb, XM, Ib }, 0 }, + { "vpextrb", { Edqb, XM, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A15_P_2 */ + /* VEX_LEN_0F3A15 */ { - { "vpextrw", { Edqw, XM, Ib }, 0 }, + { "vpextrw", { Edqw, XM, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A16_P_2 */ + /* VEX_LEN_0F3A16 */ { - { "vpextrK", { Edq, XM, Ib }, 0 }, + { "vpextrK", { Edq, XM, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A17_P_2 */ + /* VEX_LEN_0F3A17 */ { - { "vextractps", { Edqd, XM, Ib }, 0 }, + { "vextractps", { Edqd, XM, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A18_P_2 */ + /* VEX_LEN_0F3A18 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A18_P_2_L_0) }, + { VEX_W_TABLE (VEX_W_0F3A18_L_1) }, }, - /* VEX_LEN_0F3A19_P_2 */ + /* VEX_LEN_0F3A19 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A19_P_2_L_0) }, + { VEX_W_TABLE (VEX_W_0F3A19_L_1) }, }, - /* VEX_LEN_0F3A20_P_2 */ + /* VEX_LEN_0F3A20 */ { - { "vpinsrb", { XM, Vex, Edqb, Ib }, 0 }, + { "vpinsrb", { XM, Vex, Edqb, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A21_P_2 */ + /* VEX_LEN_0F3A21 */ { - { "vinsertps", { XM, Vex, EXd, Ib }, 0 }, + { "vinsertps", { XM, Vex, EXd, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A22_P_2 */ + /* VEX_LEN_0F3A22 */ { - { "vpinsrK", { XM, Vex, Edq, Ib }, 0 }, + { "vpinsrK", { XM, Vex, Edq, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A30_P_2 */ + /* VEX_LEN_0F3A30 */ { - { VEX_W_TABLE (VEX_W_0F3A30_P_2_LEN_0) }, + { VEX_W_TABLE (VEX_W_0F3A30_L_0) }, }, - /* VEX_LEN_0F3A31_P_2 */ + /* VEX_LEN_0F3A31 */ { - { VEX_W_TABLE (VEX_W_0F3A31_P_2_LEN_0) }, + { VEX_W_TABLE (VEX_W_0F3A31_L_0) }, }, - /* VEX_LEN_0F3A32_P_2 */ + /* VEX_LEN_0F3A32 */ { - { VEX_W_TABLE (VEX_W_0F3A32_P_2_LEN_0) }, + { VEX_W_TABLE (VEX_W_0F3A32_L_0) }, }, - /* VEX_LEN_0F3A33_P_2 */ + /* VEX_LEN_0F3A33 */ { - { VEX_W_TABLE (VEX_W_0F3A33_P_2_LEN_0) }, + { VEX_W_TABLE (VEX_W_0F3A33_L_0) }, }, - /* VEX_LEN_0F3A38_P_2 */ + /* VEX_LEN_0F3A38 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A38_P_2_L_0) }, + { VEX_W_TABLE (VEX_W_0F3A38_L_1) }, }, - /* VEX_LEN_0F3A39_P_2 */ + /* VEX_LEN_0F3A39 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A39_P_2_L_0) }, + { VEX_W_TABLE (VEX_W_0F3A39_L_1) }, }, - /* VEX_LEN_0F3A41_P_2 */ + /* VEX_LEN_0F3A41 */ { - { "vdppd", { XM, Vex, EXx, Ib }, 0 }, + { "vdppd", { XM, Vex, EXx, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A46_P_2 */ + /* VEX_LEN_0F3A46 */ { { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A46_P_2_L_0) }, + { VEX_W_TABLE (VEX_W_0F3A46_L_1) }, }, - /* VEX_LEN_0F3A60_P_2 */ + /* VEX_LEN_0F3A60 */ { - { "vpcmpestrm!%LQ", { XM, EXx, Ib }, 0 }, + { "vpcmpestrm!%LQ", { XM, EXx, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A61_P_2 */ + /* VEX_LEN_0F3A61 */ { - { "vpcmpestri!%LQ", { XM, EXx, Ib }, 0 }, + { "vpcmpestri!%LQ", { XM, EXx, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A62_P_2 */ + /* VEX_LEN_0F3A62 */ { - { "vpcmpistrm", { XM, EXx, Ib }, 0 }, + { "vpcmpistrm", { XM, EXx, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3A63_P_2 */ + /* VEX_LEN_0F3A63 */ { - { "vpcmpistri", { XM, EXx, Ib }, 0 }, + { "vpcmpistri", { XM, EXx, Ib }, PREFIX_DATA }, }, - /* VEX_LEN_0F3ADF_P_2 */ + /* VEX_LEN_0F3ADF */ { - { "vaeskeygenassist", { XM, EXx, Ib }, 0 }, + { "vaeskeygenassist", { XM, EXx, Ib }, PREFIX_DATA }, }, /* VEX_LEN_0F3AF0_P_3 */ @@ -10281,64 +7580,64 @@ static const struct dis386 vex_w_table[][2] = { { MOD_TABLE (MOD_VEX_W_1_0F99_P_2_LEN_0) }, }, { - /* VEX_W_0F380C_P_2 */ - { "vpermilps", { XM, Vex, EXx }, 0 }, + /* VEX_W_0F380C */ + { "vpermilps", { XM, Vex, EXx }, PREFIX_DATA }, }, { - /* VEX_W_0F380D_P_2 */ - { "vpermilpd", { XM, Vex, EXx }, 0 }, + /* VEX_W_0F380D */ + { "vpermilpd", { XM, Vex, EXx }, PREFIX_DATA }, }, { - /* VEX_W_0F380E_P_2 */ - { "vtestps", { XM, EXx }, 0 }, + /* VEX_W_0F380E */ + { "vtestps", { XM, EXx }, PREFIX_DATA }, }, { - /* VEX_W_0F380F_P_2 */ - { "vtestpd", { XM, EXx }, 0 }, + /* VEX_W_0F380F */ + { "vtestpd", { XM, EXx }, PREFIX_DATA }, }, { - /* VEX_W_0F3813_P_2 */ - { "vcvtph2ps", { XM, EXxmmq }, 0 }, + /* VEX_W_0F3813 */ + { "vcvtph2ps", { XM, EXxmmq }, PREFIX_DATA }, }, { - /* VEX_W_0F3816_P_2 */ - { "vpermps", { XM, Vex, EXx }, 0 }, + /* VEX_W_0F3816_L_1 */ + { "vpermps", { XM, Vex, EXx }, PREFIX_DATA }, }, { - /* VEX_W_0F3818_P_2 */ - { "vbroadcastss", { XM, EXxmm_md }, 0 }, + /* VEX_W_0F3818 */ + { "vbroadcastss", { XM, EXxmm_md }, PREFIX_DATA }, }, { - /* VEX_W_0F3819_P_2 */ - { "vbroadcastsd", { XM, EXxmm_mq }, 0 }, + /* VEX_W_0F3819_L_1 */ + { "vbroadcastsd", { XM, EXxmm_mq }, PREFIX_DATA }, }, { - /* VEX_W_0F381A_P_2_M_0_L_0 */ - { "vbroadcastf128", { XM, Mxmm }, 0 }, + /* VEX_W_0F381A_M_0_L_1 */ + { "vbroadcastf128", { XM, Mxmm }, PREFIX_DATA }, }, { - /* VEX_W_0F382C_P_2_M_0 */ - { "vmaskmovps", { XM, Vex, Mx }, 0 }, + /* VEX_W_0F382C_M_0 */ + { "vmaskmovps", { XM, Vex, Mx }, PREFIX_DATA }, }, { - /* VEX_W_0F382D_P_2_M_0 */ - { "vmaskmovpd", { XM, Vex, Mx }, 0 }, + /* VEX_W_0F382D_M_0 */ + { "vmaskmovpd", { XM, Vex, Mx }, PREFIX_DATA }, }, { - /* VEX_W_0F382E_P_2_M_0 */ - { "vmaskmovps", { Mx, Vex, XM }, 0 }, + /* VEX_W_0F382E_M_0 */ + { "vmaskmovps", { Mx, Vex, XM }, PREFIX_DATA }, }, { - /* VEX_W_0F382F_P_2_M_0 */ - { "vmaskmovpd", { Mx, Vex, XM }, 0 }, + /* VEX_W_0F382F_M_0 */ + { "vmaskmovpd", { Mx, Vex, XM }, PREFIX_DATA }, }, { - /* VEX_W_0F3836_P_2 */ - { "vpermd", { XM, Vex, EXx }, 0 }, + /* VEX_W_0F3836 */ + { "vpermd", { XM, Vex, EXx }, PREFIX_DATA }, }, { - /* VEX_W_0F3846_P_2 */ - { "vpsravd", { XM, Vex, EXx }, 0 }, + /* VEX_W_0F3846 */ + { "vpsravd", { XM, Vex, EXx }, PREFIX_DATA }, }, { /* VEX_W_0F3849_X86_64_P_0 */ @@ -10365,16 +7664,16 @@ static const struct dis386 vex_w_table[][2] = { { MOD_TABLE (MOD_VEX_0F384B_X86_64_P_3_W_0) }, }, { - /* VEX_W_0F3858_P_2 */ - { "vpbroadcastd", { XM, EXxmm_md }, 0 }, + /* VEX_W_0F3858 */ + { "vpbroadcastd", { XM, EXxmm_md }, PREFIX_DATA }, }, { - /* VEX_W_0F3859_P_2 */ - { "vpbroadcastq", { XM, EXxmm_mq }, 0 }, + /* VEX_W_0F3859 */ + { "vpbroadcastq", { XM, EXxmm_mq }, PREFIX_DATA }, }, { - /* VEX_W_0F385A_P_2_M_0_L_0 */ - { "vbroadcasti128", { XM, Mxmm }, 0 }, + /* VEX_W_0F385A_M_0_L_0 */ + { "vbroadcasti128", { XM, Mxmm }, PREFIX_DATA }, }, { /* VEX_W_0F385C_X86_64_P_1 */ @@ -10397,108 +7696,108 @@ static const struct dis386 vex_w_table[][2] = { { MOD_TABLE (MOD_VEX_0F385E_X86_64_P_3_W_0) }, }, { - /* VEX_W_0F3878_P_2 */ - { "vpbroadcastb", { XM, EXxmm_mb }, 0 }, + /* VEX_W_0F3878 */ + { "vpbroadcastb", { XM, EXxmm_mb }, PREFIX_DATA }, }, { - /* VEX_W_0F3879_P_2 */ - { "vpbroadcastw", { XM, EXxmm_mw }, 0 }, + /* VEX_W_0F3879 */ + { "vpbroadcastw", { XM, EXxmm_mw }, PREFIX_DATA }, }, { - /* VEX_W_0F38CF_P_2 */ - { "vgf2p8mulb", { XM, Vex, EXx }, 0 }, + /* VEX_W_0F38CF */ + { "vgf2p8mulb", { XM, Vex, EXx }, PREFIX_DATA }, }, { - /* VEX_W_0F3A00_P_2 */ + /* VEX_W_0F3A00_L_1 */ { Bad_Opcode }, - { "vpermq", { XM, EXx, Ib }, 0 }, + { "vpermq", { XM, EXx, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A01_P_2 */ + /* VEX_W_0F3A01_L_1 */ { Bad_Opcode }, - { "vpermpd", { XM, EXx, Ib }, 0 }, + { "vpermpd", { XM, EXx, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A02_P_2 */ - { "vpblendd", { XM, Vex, EXx, Ib }, 0 }, + /* VEX_W_0F3A02 */ + { "vpblendd", { XM, Vex, EXx, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A04_P_2 */ - { "vpermilps", { XM, EXx, Ib }, 0 }, + /* VEX_W_0F3A04 */ + { "vpermilps", { XM, EXx, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A05_P_2 */ - { "vpermilpd", { XM, EXx, Ib }, 0 }, + /* VEX_W_0F3A05 */ + { "vpermilpd", { XM, EXx, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A06_P_2_L_0 */ - { "vperm2f128", { XM, Vex, EXx, Ib }, 0 }, + /* VEX_W_0F3A06_L_1 */ + { "vperm2f128", { XM, Vex, EXx, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A18_P_2_L_0 */ - { "vinsertf128", { XM, Vex, EXxmm, Ib }, 0 }, + /* VEX_W_0F3A18_L_1 */ + { "vinsertf128", { XM, Vex, EXxmm, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A19_P_2_L_0 */ - { "vextractf128", { EXxmm, XM, Ib }, 0 }, + /* VEX_W_0F3A19_L_1 */ + { "vextractf128", { EXxmm, XM, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A1D_P_2 */ - { "vcvtps2ph", { EXxmmq, XM, EXxEVexS, Ib }, 0 }, + /* VEX_W_0F3A1D */ + { "vcvtps2ph", { EXxmmq, XM, EXxEVexS, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A30_P_2_LEN_0 */ - { MOD_TABLE (MOD_VEX_W_0_0F3A30_P_2_LEN_0) }, - { MOD_TABLE (MOD_VEX_W_1_0F3A30_P_2_LEN_0) }, + /* VEX_W_0F3A30_L_0 */ + { MOD_TABLE (MOD_VEX_0F3A30_L_0_W_0) }, + { MOD_TABLE (MOD_VEX_0F3A30_L_0_W_1) }, }, { - /* VEX_W_0F3A31_P_2_LEN_0 */ - { MOD_TABLE (MOD_VEX_W_0_0F3A31_P_2_LEN_0) }, - { MOD_TABLE (MOD_VEX_W_1_0F3A31_P_2_LEN_0) }, + /* VEX_W_0F3A31_L_0 */ + { MOD_TABLE (MOD_VEX_0F3A31_L_0_W_0) }, + { MOD_TABLE (MOD_VEX_0F3A31_L_0_W_1) }, }, { - /* VEX_W_0F3A32_P_2_LEN_0 */ - { MOD_TABLE (MOD_VEX_W_0_0F3A32_P_2_LEN_0) }, - { MOD_TABLE (MOD_VEX_W_1_0F3A32_P_2_LEN_0) }, + /* VEX_W_0F3A32_L_0 */ + { MOD_TABLE (MOD_VEX_0F3A32_L_0_W_0) }, + { MOD_TABLE (MOD_VEX_0F3A32_L_0_W_1) }, }, { - /* VEX_W_0F3A33_P_2_LEN_0 */ - { MOD_TABLE (MOD_VEX_W_0_0F3A33_P_2_LEN_0) }, - { MOD_TABLE (MOD_VEX_W_1_0F3A33_P_2_LEN_0) }, + /* VEX_W_0F3A33_L_0 */ + { MOD_TABLE (MOD_VEX_0F3A33_L_0_W_0) }, + { MOD_TABLE (MOD_VEX_0F3A33_L_0_W_1) }, }, { - /* VEX_W_0F3A38_P_2_L_0 */ - { "vinserti128", { XM, Vex, EXxmm, Ib }, 0 }, + /* VEX_W_0F3A38_L_1 */ + { "vinserti128", { XM, Vex, EXxmm, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A39_P_2_L_0 */ - { "vextracti128", { EXxmm, XM, Ib }, 0 }, + /* VEX_W_0F3A39_L_1 */ + { "vextracti128", { EXxmm, XM, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A46_P_2_L_0 */ - { "vperm2i128", { XM, Vex, EXx, Ib }, 0 }, + /* VEX_W_0F3A46_L_1 */ + { "vperm2i128", { XM, Vex, EXx, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3A4A_P_2 */ - { "vblendvps", { XM, Vex, EXx, XMVexI4 }, 0 }, + /* VEX_W_0F3A4A */ + { "vblendvps", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, }, { - /* VEX_W_0F3A4B_P_2 */ - { "vblendvpd", { XM, Vex, EXx, XMVexI4 }, 0 }, + /* VEX_W_0F3A4B */ + { "vblendvpd", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, }, { - /* VEX_W_0F3A4C_P_2 */ - { "vpblendvb", { XM, Vex, EXx, XMVexI4 }, 0 }, + /* VEX_W_0F3A4C */ + { "vpblendvb", { XM, Vex, EXx, XMVexI4 }, PREFIX_DATA }, }, { - /* VEX_W_0F3ACE_P_2 */ + /* VEX_W_0F3ACE */ { Bad_Opcode }, - { "vgf2p8affineqb", { XM, Vex, EXx, Ib }, 0 }, + { "vgf2p8affineqb", { XM, Vex, EXx, Ib }, PREFIX_DATA }, }, { - /* VEX_W_0F3ACF_P_2 */ + /* VEX_W_0F3ACF */ { Bad_Opcode }, - { "vgf2p8affineinvqb", { XM, Vex, EXx, Ib }, 0 }, + { "vgf2p8affineinvqb", { XM, Vex, EXx, Ib }, PREFIX_DATA }, }, /* VEX_W_0FXOP_08_85_L_0 */ { @@ -10846,52 +8145,52 @@ static const struct dis386 mod_table[][2] = { { /* MOD_0F71_REG_2 */ { Bad_Opcode }, - { "psrlw", { MS, Ib }, 0 }, + { "psrlw", { MS, Ib }, PREFIX_OPCODE }, }, { /* MOD_0F71_REG_4 */ { Bad_Opcode }, - { "psraw", { MS, Ib }, 0 }, + { "psraw", { MS, Ib }, PREFIX_OPCODE }, }, { /* MOD_0F71_REG_6 */ { Bad_Opcode }, - { "psllw", { MS, Ib }, 0 }, + { "psllw", { MS, Ib }, PREFIX_OPCODE }, }, { /* MOD_0F72_REG_2 */ { Bad_Opcode }, - { "psrld", { MS, Ib }, 0 }, + { "psrld", { MS, Ib }, PREFIX_OPCODE }, }, { /* MOD_0F72_REG_4 */ { Bad_Opcode }, - { "psrad", { MS, Ib }, 0 }, + { "psrad", { MS, Ib }, PREFIX_OPCODE }, }, { /* MOD_0F72_REG_6 */ { Bad_Opcode }, - { "pslld", { MS, Ib }, 0 }, + { "pslld", { MS, Ib }, PREFIX_OPCODE }, }, { /* MOD_0F73_REG_2 */ { Bad_Opcode }, - { "psrlq", { MS, Ib }, 0 }, + { "psrlq", { MS, Ib }, PREFIX_OPCODE }, }, { /* MOD_0F73_REG_3 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F73_REG_3) }, + { "psrldq", { XS, Ib }, PREFIX_DATA }, }, { /* MOD_0F73_REG_6 */ { Bad_Opcode }, - { "psllq", { MS, Ib }, 0 }, + { "psllq", { MS, Ib }, PREFIX_OPCODE }, }, { /* MOD_0F73_REG_7 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_0F73_REG_7) }, + { "pslldq", { XS, Ib }, PREFIX_DATA }, }, { /* MOD_0FAE_REG_0 */ @@ -10985,8 +8284,8 @@ static const struct dis386 mod_table[][2] = { { "lddqu", { XM, M }, 0 }, }, { - /* MOD_0F382A_PREFIX_2 */ - { "movntdqa", { XM, Mx }, 0 }, + /* MOD_0F382A */ + { "movntdqa", { XM, Mx }, PREFIX_DATA }, }, { /* MOD_VEX_0F3849_X86_64_P_0_W_0 */ @@ -11040,8 +8339,8 @@ static const struct dis386 mod_table[][2] = { { VEX_LEN_TABLE (VEX_LEN_0F385E_X86_64_P_3_W_0_M_0) }, }, { - /* MOD_0F38F5_PREFIX_2 */ - { "wrussK", { M, Gdq }, PREFIX_OPCODE }, + /* MOD_0F38F5 */ + { "wrussK", { M, Gdq }, PREFIX_DATA }, }, { /* MOD_0F38F6_PREFIX_0 */ @@ -11271,52 +8570,52 @@ static const struct dis386 mod_table[][2] = { { /* MOD_VEX_0F71_REG_2 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F71_REG_2) }, + { "vpsrlw", { Vex, XS, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_0F71_REG_4 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F71_REG_4) }, + { "vpsraw", { Vex, XS, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_0F71_REG_6 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F71_REG_6) }, + { "vpsllw", { Vex, XS, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_0F72_REG_2 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F72_REG_2) }, + { "vpsrld", { Vex, XS, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_0F72_REG_4 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F72_REG_4) }, + { "vpsrad", { Vex, XS, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_0F72_REG_6 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F72_REG_6) }, + { "vpslld", { Vex, XS, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_0F73_REG_2 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F73_REG_2) }, + { "vpsrlq", { Vex, XS, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_0F73_REG_3 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F73_REG_3) }, + { "vpsrldq", { Vex, XS, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_0F73_REG_6 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F73_REG_6) }, + { "vpsllq", { Vex, XS, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_0F73_REG_7 */ { Bad_Opcode }, - { PREFIX_TABLE (PREFIX_VEX_0F73_REG_7) }, + { "vpslldq", { Vex, XS, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_W_0_0F91_P_0_LEN_0 */ @@ -11417,93 +8716,93 @@ static const struct dis386 mod_table[][2] = { { VEX_LEN_TABLE (VEX_LEN_0FAE_R_3_M_0) }, }, { - /* MOD_VEX_0FD7_PREFIX_2 */ + /* MOD_VEX_0FD7 */ { Bad_Opcode }, - { "vpmovmskb", { Gdq, XS }, 0 }, + { "vpmovmskb", { Gdq, XS }, PREFIX_DATA }, }, { - /* MOD_VEX_0FE7_PREFIX_2 */ - { "vmovntdq", { Mx, XM }, 0 }, + /* MOD_VEX_0FE7 */ + { "vmovntdq", { Mx, XM }, PREFIX_DATA }, }, { /* MOD_VEX_0FF0_PREFIX_3 */ { "vlddqu", { XM, M }, 0 }, }, { - /* MOD_VEX_0F381A_PREFIX_2 */ - { VEX_LEN_TABLE (VEX_LEN_0F381A_P_2_M_0) }, + /* MOD_VEX_0F381A */ + { VEX_LEN_TABLE (VEX_LEN_0F381A_M_0) }, }, { - /* MOD_VEX_0F382A_PREFIX_2 */ - { "vmovntdqa", { XM, Mx }, 0 }, + /* MOD_VEX_0F382A */ + { "vmovntdqa", { XM, Mx }, PREFIX_DATA }, }, { - /* MOD_VEX_0F382C_PREFIX_2 */ - { VEX_W_TABLE (VEX_W_0F382C_P_2_M_0) }, + /* MOD_VEX_0F382C */ + { VEX_W_TABLE (VEX_W_0F382C_M_0) }, }, { - /* MOD_VEX_0F382D_PREFIX_2 */ - { VEX_W_TABLE (VEX_W_0F382D_P_2_M_0) }, + /* MOD_VEX_0F382D */ + { VEX_W_TABLE (VEX_W_0F382D_M_0) }, }, { - /* MOD_VEX_0F382E_PREFIX_2 */ - { VEX_W_TABLE (VEX_W_0F382E_P_2_M_0) }, + /* MOD_VEX_0F382E */ + { VEX_W_TABLE (VEX_W_0F382E_M_0) }, }, { - /* MOD_VEX_0F382F_PREFIX_2 */ - { VEX_W_TABLE (VEX_W_0F382F_P_2_M_0) }, + /* MOD_VEX_0F382F */ + { VEX_W_TABLE (VEX_W_0F382F_M_0) }, }, { - /* MOD_VEX_0F385A_PREFIX_2 */ - { VEX_LEN_TABLE (VEX_LEN_0F385A_P_2_M_0) }, + /* MOD_VEX_0F385A */ + { VEX_LEN_TABLE (VEX_LEN_0F385A_M_0) }, }, { - /* MOD_VEX_0F388C_PREFIX_2 */ - { "vpmaskmov%DQ", { XM, Vex, Mx }, 0 }, + /* MOD_VEX_0F388C */ + { "vpmaskmov%DQ", { XM, Vex, Mx }, PREFIX_DATA }, }, { - /* MOD_VEX_0F388E_PREFIX_2 */ - { "vpmaskmov%DQ", { Mx, Vex, XM }, 0 }, + /* MOD_VEX_0F388E */ + { "vpmaskmov%DQ", { Mx, Vex, XM }, PREFIX_DATA }, }, { - /* MOD_VEX_W_0_0F3A30_P_2_LEN_0 */ + /* MOD_VEX_0F3A30_L_0_W_0 */ { Bad_Opcode }, - { "kshiftrb", { MaskG, MaskR, Ib }, 0 }, + { "kshiftrb", { MaskG, MaskR, Ib }, PREFIX_DATA }, }, { - /* MOD_VEX_W_1_0F3A30_P_2_LEN_0 */ + /* MOD_VEX_0F3A30_L_0_W_1 */ { Bad_Opcode }, - { "kshiftrw", { MaskG, MaskR, Ib }, 0 }, + { "kshiftrw", { MaskG, MaskR, Ib }, PREFIX_DATA }, }, { - /* MOD_VEX_W_0_0F3A31_P_2_LEN_0 */ + /* MOD_VEX_0F3A31_L_0_W_0 */ { Bad_Opcode }, - { "kshiftrd", { MaskG, MaskR, Ib }, 0 }, + { "kshiftrd", { MaskG, MaskR, Ib }, PREFIX_DATA }, }, { - /* MOD_VEX_W_1_0F3A31_P_2_LEN_0 */ + /* MOD_VEX_0F3A31_L_0_W_1 */ { Bad_Opcode }, - { "kshiftrq", { MaskG, MaskR, Ib }, 0 }, + { "kshiftrq", { MaskG, MaskR, Ib }, PREFIX_DATA }, }, { - /* MOD_VEX_W_0_0F3A32_P_2_LEN_0 */ + /* MOD_VEX_0F3A32_L_0_W_0 */ { Bad_Opcode }, - { "kshiftlb", { MaskG, MaskR, Ib }, 0 }, + { "kshiftlb", { MaskG, MaskR, Ib }, PREFIX_DATA }, }, { - /* MOD_VEX_W_1_0F3A32_P_2_LEN_0 */ + /* MOD_VEX_0F3A32_L_0_W_1 */ { Bad_Opcode }, - { "kshiftlw", { MaskG, MaskR, Ib }, 0 }, + { "kshiftlw", { MaskG, MaskR, Ib }, PREFIX_DATA }, }, { - /* MOD_VEX_W_0_0F3A33_P_2_LEN_0 */ + /* MOD_VEX_0F3A33_L_0_W_0 */ { Bad_Opcode }, - { "kshiftld", { MaskG, MaskR, Ib }, 0 }, + { "kshiftld", { MaskG, MaskR, Ib }, PREFIX_DATA }, }, { - /* MOD_VEX_W_1_0F3A33_P_2_LEN_0 */ + /* MOD_VEX_0F3A33_L_0_W_1 */ { Bad_Opcode }, - { "kshiftlq", { MaskG, MaskR, Ib }, 0 }, + { "kshiftlq", { MaskG, MaskR, Ib }, PREFIX_DATA }, }, { /* MOD_VEX_0FXOP_09_12 */ @@ -12742,6 +10041,46 @@ print_insn (bfd_vma pc, disassemble_info *info) return end_codep - priv.the_buffer; } + switch (dp->prefix_requirement) + { + case PREFIX_DATA: + /* If only the data prefix is marked as mandatory, its absence renders + the encoding invalid. Most other PREFIX_OPCODE rules still apply. */ + if (need_vex ? !vex.prefix : !(prefixes & PREFIX_DATA)) + { + (*info->fprintf_func) (info->stream, "(bad)"); + return end_codep - priv.the_buffer; + } + used_prefixes |= PREFIX_DATA; + /* Fall through. */ + case PREFIX_OPCODE: + /* If the mandatory PREFIX_REPZ/PREFIX_REPNZ/PREFIX_DATA prefix is + unused, opcode is invalid. Since the PREFIX_DATA prefix may be + used by putop and MMX/SSE operand and may be overridden by the + PREFIX_REPZ/PREFIX_REPNZ fix, we check the PREFIX_DATA prefix + separately. */ + if (((need_vex + ? vex.prefix == REPE_PREFIX_OPCODE + || vex.prefix == REPNE_PREFIX_OPCODE + : (prefixes + & (PREFIX_REPZ | PREFIX_REPNZ)) != 0) + && (used_prefixes + & (PREFIX_REPZ | PREFIX_REPNZ)) == 0) + || (((need_vex + ? vex.prefix == DATA_PREFIX_OPCODE + : ((prefixes + & (PREFIX_REPZ | PREFIX_REPNZ | PREFIX_DATA)) + == PREFIX_DATA)) + && (used_prefixes & PREFIX_DATA) == 0)) + || (vex.evex && dp->prefix_requirement != PREFIX_DATA + && !vex.w != !(used_prefixes & PREFIX_DATA))) + { + (*info->fprintf_func) (info->stream, "(bad)"); + return end_codep - priv.the_buffer; + } + break; + } + /* Check if the REX prefix is used. */ if ((rex ^ rex_used) == 0 && !need_vex && last_rex_prefix >= 0) all_prefixes[last_rex_prefix] = 0; @@ -12776,31 +10115,6 @@ print_insn (bfd_vma pc, disassemble_info *info) (*info->fprintf_func) (info->stream, "%s ", name); } - /* If the mandatory PREFIX_REPZ/PREFIX_REPNZ/PREFIX_DATA prefix is - unused, opcode is invalid. Since the PREFIX_DATA prefix may be - used by putop and MMX/SSE operand and may be overriden by the - PREFIX_REPZ/PREFIX_REPNZ fix, we check the PREFIX_DATA prefix - separately. */ - if (dp->prefix_requirement == PREFIX_OPCODE - && (((need_vex - ? vex.prefix == REPE_PREFIX_OPCODE - || vex.prefix == REPNE_PREFIX_OPCODE - : (prefixes - & (PREFIX_REPZ | PREFIX_REPNZ)) != 0) - && (used_prefixes - & (PREFIX_REPZ | PREFIX_REPNZ)) == 0) - || (((need_vex - ? vex.prefix == DATA_PREFIX_OPCODE - : ((prefixes - & (PREFIX_REPZ | PREFIX_REPNZ | PREFIX_DATA)) - == PREFIX_DATA)) - && (used_prefixes & PREFIX_DATA) == 0)) - || (vex.evex && !vex.w != !(used_prefixes & PREFIX_DATA)))) - { - (*info->fprintf_func) (info->stream, "(bad)"); - return end_codep - priv.the_buffer; - } - /* Check maximum code length. */ if ((codep - start_codep) > MAX_CODE_LENGTH) { -- cgit v1.1