diff options
Diffstat (limited to 'opcodes/i386-dis.c')
-rw-r--r-- | opcodes/i386-dis.c | 55 |
1 files changed, 52 insertions, 3 deletions
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index ecd8cca..224540e 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -741,6 +741,10 @@ enum PREFIX_0F7D, PREFIX_0F7E, PREFIX_0F7F, + PREFIX_0FAE_REG_0, + PREFIX_0FAE_REG_1, + PREFIX_0FAE_REG_2, + PREFIX_0FAE_REG_3, PREFIX_0FB8, PREFIX_0FBD, PREFIX_0FC2, @@ -936,6 +940,7 @@ enum PREFIX_VEX_380D, PREFIX_VEX_380E, PREFIX_VEX_380F, + PREFIX_VEX_3813, PREFIX_VEX_3817, PREFIX_VEX_3818, PREFIX_VEX_3819, @@ -1026,6 +1031,7 @@ enum PREFIX_VEX_3A17, PREFIX_VEX_3A18, PREFIX_VEX_3A19, + PREFIX_VEX_3A1D, PREFIX_VEX_3A20, PREFIX_VEX_3A21, PREFIX_VEX_3A22, @@ -3033,6 +3039,30 @@ static const struct dis386 prefix_table[][4] = { { "movdqa", { EXxS, XM } }, }, + /* PREFIX_0FAE_REG_0 */ + { + { Bad_Opcode }, + { "rdfsbase", { Ev } }, + }, + + /* PREFIX_0FAE_REG_1 */ + { + { Bad_Opcode }, + { "rdgsbase", { Ev } }, + }, + + /* PREFIX_0FAE_REG_2 */ + { + { Bad_Opcode }, + { "wrfsbase", { Ev } }, + }, + + /* PREFIX_0FAE_REG_3 */ + { + { Bad_Opcode }, + { "wrgsbase", { Ev } }, + }, + /* PREFIX_0FB8 */ { { Bad_Opcode }, @@ -4419,6 +4449,13 @@ static const struct dis386 prefix_table[][4] = { { VEX_W_TABLE (VEX_W_380F_P_2) }, }, + /* PREFIX_VEX_3813 */ + { + { Bad_Opcode }, + { Bad_Opcode }, + { "vcvtph2ps", { XM, EXxmmq } }, + }, + /* PREFIX_VEX_3817 */ { { Bad_Opcode }, @@ -5050,6 +5087,13 @@ static const struct dis386 prefix_table[][4] = { { VEX_LEN_TABLE (VEX_LEN_3A19_P_2) }, }, + /* PREFIX_VEX_3A1D */ + { + { Bad_Opcode }, + { Bad_Opcode }, + { "vcvtps2ph", { EXxmmq, XM, Ib } }, + }, + /* PREFIX_VEX_3A20 */ { { Bad_Opcode }, @@ -7533,7 +7577,7 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { Bad_Opcode }, + { PREFIX_TABLE (PREFIX_VEX_3813) }, { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, @@ -7835,7 +7879,7 @@ static const struct dis386 vex_table[][256] = { { Bad_Opcode }, { Bad_Opcode }, { Bad_Opcode }, - { Bad_Opcode }, + { PREFIX_TABLE (PREFIX_VEX_3A1D) }, { Bad_Opcode }, { Bad_Opcode }, /* 20 */ @@ -10355,18 +10399,22 @@ static const struct dis386 mod_table[][2] = { { /* MOD_0FAE_REG_0 */ { "fxsave", { FXSAVE } }, + { PREFIX_TABLE (PREFIX_0FAE_REG_0) }, }, { /* MOD_0FAE_REG_1 */ { "fxrstor", { FXSAVE } }, + { PREFIX_TABLE (PREFIX_0FAE_REG_1) }, }, { /* MOD_0FAE_REG_2 */ { "ldmxcsr", { Md } }, + { PREFIX_TABLE (PREFIX_0FAE_REG_2) }, }, { /* MOD_0FAE_REG_3 */ { "stmxcsr", { Md } }, + { PREFIX_TABLE (PREFIX_0FAE_REG_3) }, }, { /* MOD_0FAE_REG_4 */ @@ -10379,7 +10427,7 @@ static const struct dis386 mod_table[][2] = { }, { /* MOD_0FAE_REG_6 */ - { Bad_Opcode }, + { "xsaveopt", { FXSAVE } }, { RM_TABLE (RM_0FAE_REG_6) }, }, { @@ -10402,6 +10450,7 @@ static const struct dis386 mod_table[][2] = { { /* MOD_0FC7_REG_6 */ { PREFIX_TABLE (PREFIX_0FC7_REG_6) }, + { "rdrnd", { Ev } }, }, { /* MOD_0FC7_REG_7 */ |