[binutils-gdb] x86/APX: handle EVEX.V4 in build_evex_prefix()
Jan Beulich via Binutils-cvs <[email protected]>
| Newsgroups | gmane.comp.gnu.binutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a6bc3a9813eb308d60e2549f3634cdc8cc5cdc80 commit a6bc3a9813eb308d60e2549f3634cdc8cc5cdc80 Author: Jan Beulich <[email protected]> Date: Fri Aug 28 09:21:33 2026 +0200 x86/APX: handle EVEX.V4 in build_evex_prefix() There's no need to defer to the more expensive build_apx_evex_prefix(). This way is_apx_evex_encoding() ends up simpler / cheaper as well. Diff: --- gas/config/tc-i386.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 1f93f7f3dc6..de217fdc479 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -4548,9 +4548,7 @@ is_any_vex_encoding (const insn_template *t) static INLINE bool is_apx_evex_encoding (void) { - return i.rex2 || i.tm.opcode_space == SPACE_MAP4 || pp.has_nf - || (i.vex.register_specifier - && (i.vex.register_specifier->reg_flags & RegRex2)); + return i.rex2 || i.tm.opcode_space == SPACE_MAP4 || pp.has_nf; } static INLINE bool @@ -4650,7 +4648,7 @@ build_evex_prefix (void) register_specifier += 8; /* The upper 16 registers are encoded in the fourth byte of the EVEX prefix. */ - if (!(i.vex.register_specifier->reg_flags & RegVRex)) + if (!(i.vex.register_specifier->reg_flags & (RegVRex | RegRex2))) i.vex.bytes[3] = 0x8; register_specifier = ~register_specifier & 0xf; } @@ -4880,9 +4878,6 @@ build_apx_evex_prefix (bool force_nd) gas_assert (i.rm.mode != 3); i.vex.bytes[2] &= ~0x04; } - if (i.vex.register_specifier - && i.vex.register_specifier->reg_flags & RegRex2) - i.vex.bytes[3] &= ~0x08; /* Encode the NDD bit of the instruction promoted from the legacy space. ZU shares the same bit with NDD. */