diff options
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r-- | opcodes/i386-dis.c | 4262 |
1 files changed, 788 insertions, 3474 deletions
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,244 +3584,6 @@ 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 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pminud", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F383C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmaxsb", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F383D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmaxsd", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F383E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmaxuw", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F383F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmaxud", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3840 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "pmulld", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3841 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "phminposuw", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3880 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "invept", { Gm, Mo }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3881 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "invvpid", { Gm, Mo }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F3882 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "invpcid", { Gm, M }, PREFIX_OPCODE }, - }, - /* PREFIX_0F38C8 */ { { "sha1nexte", { XM, EXxmm }, PREFIX_OPCODE }, @@ -4352,48 +3614,6 @@ static const struct dis386 prefix_table[][4] = { { "sha256msg2", { XM, EXxmm }, PREFIX_OPCODE }, }, - /* PREFIX_0F38CF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "gf2p8mulb", { XM, EXxmm }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F38DB */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "aesimc", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F38DC */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "aesenc", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F38DD */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "aesenclast", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F38DE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "aesdec", { XM, EXx }, PREFIX_OPCODE }, - }, - - /* PREFIX_0F38DF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "aesdeclast", { XM, EXx }, PREFIX_OPCODE }, - }, - /* PREFIX_0F38F0 */ { { "movbeS", { Gv, Mv }, PREFIX_OPCODE }, @@ -4410,13 +3630,6 @@ static const struct dis386 prefix_table[][4] = { { "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) }, @@ -4438,186 +3651,11 @@ static const struct dis386 prefix_table[][4] = { { 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 }, @@ -4826,111 +3864,6 @@ static const struct dis386 prefix_table[][4] = { { "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 }, @@ -4946,97 +3879,6 @@ static const struct dis386 prefix_table[][4] = { { "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) }, @@ -5124,20 +3966,6 @@ static const struct dis386 prefix_table[][4] = { { "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 }, @@ -5146,153 +3974,6 @@ static const struct dis386 prefix_table[][4] = { { "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 }, @@ -5301,69 +3982,6 @@ static const struct dis386 prefix_table[][4] = { { "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 }, @@ -5372,524 +3990,6 @@ static const struct dis386 prefix_table[][4] = { { 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) }, @@ -5906,27 +4006,6 @@ static const struct dis386 prefix_table[][4] = { { 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 }, @@ -5942,315 +4021,6 @@ static const struct dis386 prefix_table[][4] = { { 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) }, @@ -6295,477 +4065,6 @@ static const struct dis386 prefix_table[][4] = { { 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 }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A21_P_2) }, - }, - - /* PREFIX_VEX_0F3A22 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A22_P_2) }, - }, - - /* PREFIX_VEX_0F3A30 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A30_P_2) }, - }, - - /* PREFIX_VEX_0F3A31 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A31_P_2) }, - }, - - /* PREFIX_VEX_0F3A32 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A32_P_2) }, - }, - - /* PREFIX_VEX_0F3A33 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A33_P_2) }, - }, - - /* PREFIX_VEX_0F3A38 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A38_P_2) }, - }, - - /* PREFIX_VEX_0F3A39 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A39_P_2) }, - }, - - /* PREFIX_VEX_0F3A40 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vdpps", { XM, Vex, EXx, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F3A41 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A41_P_2) }, - }, - - /* PREFIX_VEX_0F3A42 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vmpsadbw", { XM, Vex, EXx, Ib }, 0 }, - }, - - /* PREFIX_VEX_0F3A44 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpclmulqdq", { XM, Vex, EXx, PCLMUL }, 0 }, - }, - - /* PREFIX_VEX_0F3A46 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A46_P_2) }, - }, - - /* PREFIX_VEX_0F3A48 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpermil2ps", { XM, Vex, EXx, XMVexI4, VexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A49 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vpermil2pd", { XM, Vex, EXx, XMVexI4, VexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A4A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A4A_P_2) }, - }, - - /* PREFIX_VEX_0F3A4B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A4B_P_2) }, - }, - - /* PREFIX_VEX_0F3A4C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3A4C_P_2) }, - }, - - /* PREFIX_VEX_0F3A5C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsubps", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A5D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsubpd", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A5E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubaddps", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A5F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubaddpd", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A60 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A60_P_2) }, - { Bad_Opcode }, - }, - - /* PREFIX_VEX_0F3A61 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A61_P_2) }, - }, - - /* PREFIX_VEX_0F3A62 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A62_P_2) }, - }, - - /* PREFIX_VEX_0F3A63 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3A63_P_2) }, - }, - - /* PREFIX_VEX_0F3A68 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddps", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A69 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddpd", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A6A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A6B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmaddsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A6C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubps", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A6D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubpd", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A6E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A6F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfmsubsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A78 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmaddps", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A79 */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmaddpd", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A7A */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmaddss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A7B */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmaddsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A7C */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsubps", { XM, Vex, EXx, XMVexI4 }, 0 }, - { Bad_Opcode }, - }, - - /* PREFIX_VEX_0F3A7D */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsubpd", { XM, Vex, EXx, XMVexI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A7E */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsubss", { XMScalar, VexScalar, EXxmm_md, XMVexScalarI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3A7F */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { "vfnmsubsd", { XMScalar, VexScalar, EXxmm_mq, XMVexScalarI4 }, 0 }, - }, - - /* PREFIX_VEX_0F3ACE */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3ACE_P_2) }, - }, - - /* PREFIX_VEX_0F3ACF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_W_TABLE (VEX_W_0F3ACF_P_2) }, - }, - - /* PREFIX_VEX_0F3ADF */ - { - { Bad_Opcode }, - { Bad_Opcode }, - { VEX_LEN_TABLE (VEX_LEN_0F3ADF_P_2) }, - }, - /* PREFIX_VEX_0F3AF0 */ { { Bad_Opcode }, @@ -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) { |