diff options
author | Jan Beulich <jbeulich@suse.com> | 2022-07-06 15:40:04 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2022-07-06 15:40:04 +0200 |
commit | 8bd915b770e12eff67f6218f2d727069d04d5752 (patch) | |
tree | 33f15463f72a7894f528757b209b85aab3ffec5a /opcodes/i386-opc.h | |
parent | 3d0738af2a6dac3c729126f2ceb3af6529da7348 (diff) | |
download | fsf-binutils-gdb-8bd915b770e12eff67f6218f2d727069d04d5752.zip fsf-binutils-gdb-8bd915b770e12eff67f6218f2d727069d04d5752.tar.gz fsf-binutils-gdb-8bd915b770e12eff67f6218f2d727069d04d5752.tar.bz2 |
x86: make D attribute usable for XOP and FMA4 insns
This once again allows to reduce redundancy in (and size of) the opcode
table.
Don't go as far as also making D work on the two 5-operand XOP insns:
This would significantly complicate the code, as there the first
(immediate) operand would need special treatment in several places.
Note that the .s suffix isn't being enabled to have any effect, for
being deprecated. Whereas neither {load} nor {store} pseudo prefixes
make sense here, as the respective operands are inputs (loads) only
anyway, regardless of order. Hence there is (as before) no way for the
programmer to request the alternative encoding to be used for register-
only insns.
Note further that it is always the first original template which is
retained (and altered), to make sure the same encoding as before is
used for register-only insns. This has the slightly odd (but pre-
existing) effect of XOP register-only insns having XOP.W clear, but FMA4
ones having VEX.W set.
Diffstat (limited to 'opcodes/i386-opc.h')
-rw-r--r-- | opcodes/i386-opc.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/opcodes/i386-opc.h b/opcodes/i386-opc.h index f3ef713..76d9dcb 100644 --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -925,6 +925,9 @@ typedef struct insn_template #define Opcode_FloatD 0x400 /* Direction bit for float insns. */ #define Opcode_SIMD_FloatD 0x1 /* Direction bit for SIMD fp insns. */ #define Opcode_SIMD_IntD 0x10 /* Direction bit for SIMD int insns. */ +/* The next value is arbitrary, as long as it's non-zero and distinct + from all other values above. */ +#define Opcode_VexW 0xf /* Operand order controlled by VEX.W. */ /* (Fake) base opcode value for pseudo prefixes. */ #define PSEUDO_PREFIX 0 |