From c48244a521d54d2a8aaf7362e376b8aa551954da Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Fri, 6 Nov 2009 23:17:26 +0000 Subject: 2009-11-06 Sebastian Pop * opcodes/i386-dis.c (reg_table): Add XOP_8F_TABLE (XOP_09) to reg_table[REG_8F][1]: for XOP instructions, ModRM.reg first points to B.mm in the RXB.mmmmm byte, and so when B is set, we still should use the xop_table. (get_valid_dis386): Removed unused condition (from cut/n/paste) for XOP instructions. * gas/testsuite/gas/i386/x86-64-lwp.s: Updated to also contain patterns with r[8-15] registers. * gas/testsuite/gas/i386/x86-64-lwp.d: Same. --- opcodes/ChangeLog | 9 +++++++++ opcodes/i386-dis.c | 15 ++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) (limited to 'opcodes') diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 7053cb3..f8be7a3 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,12 @@ +2009-11-06 Sebastian Pop + + * i386-dis.c (reg_table): Add XOP_8F_TABLE (XOP_09) to + reg_table[REG_8F][1]: for XOP instructions, ModRM.reg first points to + B.mm in the RXB.mmmmm byte, and so when B is set, we still should use + the xop_table. + (get_valid_dis386): Removed unused condition (from cut/n/paste) for + XOP instructions. + 2009-11-05 Sebastian Pop Quentin Neill diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 8c2ea7f..b411c83 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -2132,7 +2132,7 @@ static const struct dis386 reg_table[][8] = { /* REG_8F */ { { "popU", { stackEv } }, - { "(bad)", { XX } }, + { XOP_8F_TABLE (XOP_09) }, { "(bad)", { XX } }, { "(bad)", { XX } }, { "(bad)", { XX } }, @@ -9983,14 +9983,11 @@ get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) codep++; index = *codep++; dp = &xop_table[vex_table_index][index]; - /* There is no MODRM byte for VEX [82|77]. */ - if (index != 0x77 && index != 0x82) - { - FETCH_DATA (info, codep + 1); - modrm.mod = (*codep >> 6) & 3; - modrm.reg = (*codep >> 3) & 7; - modrm.rm = *codep & 7; - } + + FETCH_DATA (info, codep + 1); + modrm.mod = (*codep >> 6) & 3; + modrm.reg = (*codep >> 3) & 7; + modrm.rm = *codep & 7; break; case USE_VEX_C4_TABLE: -- cgit v1.1