[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.  */
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.