summaryrefslogtreecommitdiff
path: root/opcodes/i386-gen.c
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2022-07-18 11:19:58 +0200
committerJan Beulich <jbeulich@suse.com>2022-07-18 11:19:58 +0200
commit37cea58867dd1d0df263e82670fd2e7607539d84 (patch)
tree7c9f97a350ce39184d9b9d1bb54b1fa06aecf144 /opcodes/i386-gen.c
parent4319180c8139e579a6337eb020309c95fa1e00b3 (diff)
downloadbinutils-gdb-37cea58867dd1d0df263e82670fd2e7607539d84.tar.gz
x86: re-order insn template fields
This saves quite a number of shift instructions: The "operands" field can now be retrieved by just masking (no shift), and extracting the "extension_opcode" field now only requires a (signed) right shift, with no prereq left one. (Of course there may be architectures where, in a cross build, there might be no difference at all, e.g. when there are suitable bitfield extraction insns.)
Diffstat (limited to 'opcodes/i386-gen.c')
-rw-r--r--opcodes/i386-gen.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/opcodes/i386-gen.c b/opcodes/i386-gen.c
index 36cab20a1dd..3390d82f59b 100644
--- a/opcodes/i386-gen.c
+++ b/opcodes/i386-gen.c
@@ -1444,8 +1444,8 @@ output_i386_opcode (FILE *table, const char *name, char *str,
fail (_("%s:%d: %s: residual opcode (0x%0*llx) too large\n"),
filename, lineno, name, 2 * length, opcode);
- fprintf (table, " { \"%s\", 0x%0*llx%s, %s, %lu,\n",
- name, 2 * (int)length, opcode, end, extension_opcode, i);
+ fprintf (table, " { \"%s\", 0x%0*llx%s, %lu, %s,\n",
+ name, 2 * (int)length, opcode, end, i, extension_opcode);
process_i386_opcode_modifier (table, opcode_modifier, space, prefix,
operand_types, lineno);