diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2009-11-06 23:17:26 +0000 |
---|---|---|
committer | Sebastian Pop <sebastian.pop@amd.com> | 2009-11-06 23:17:26 +0000 |
commit | c48244a521d54d2a8aaf7362e376b8aa551954da (patch) | |
tree | f180bbc3e4cd07790c1e0c9c533360103d16e16f /opcodes | |
parent | 7580967a3481f17bfcf5c9281a85be52f0cdc6e4 (diff) | |
download | fsf-binutils-gdb-c48244a521d54d2a8aaf7362e376b8aa551954da.zip fsf-binutils-gdb-c48244a521d54d2a8aaf7362e376b8aa551954da.tar.gz fsf-binutils-gdb-c48244a521d54d2a8aaf7362e376b8aa551954da.tar.bz2 |
2009-11-06 Sebastian Pop <sebastian.pop@amd.com>
* 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.
Diffstat (limited to 'opcodes')
-rw-r--r-- | opcodes/ChangeLog | 9 | ||||
-rw-r--r-- | opcodes/i386-dis.c | 15 |
2 files changed, 15 insertions, 9 deletions
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 <sebastian.pop@amd.com> + + * 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 <sebastian.pop@amd.com> Quentin Neill <quentin.neill@amd.com> 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: |