This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] x86: change AVX512VL handling in cpu_flags_match()


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ab592e757ed0a4117f68c6b722803e8ba108bf66

commit ab592e757ed0a4117f68c6b722803e8ba108bf66
Author: Jan Beulich <jbeulich@novell.com>
Date:   Thu Mar 8 08:45:56 2018 +0100

    x86: change AVX512VL handling in cpu_flags_match()
    
    In order to add an AVX512F counterpart to the present AVX checking, it
    is better to move the AVX512VL check out of the conditional it's
    currently in.

Diff:
---
 gas/ChangeLog        |  4 ++++
 gas/config/tc-i386.c | 16 +++++-----------
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 144edef..bd58786 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,9 @@
 2018-03-08  Jan Beulich  <jbeulich@suse.com>
 
+	* config/tc-i386.c (cpu_flags_match): Move AVX512VL check ahead.
+
+2018-03-08  Jan Beulich  <jbeulich@suse.com>
+
 	* config/tc-i386.c (CPU_FLAGS_32BIT_MATCH): Delete.
 	(cpu_flags_match): Use CPU_FLAGS_ARCH_MATCH instead of
 	CPU_FLAGS_32BIT_MATCH.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index dee3644..7f2bd2d 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -1712,6 +1712,11 @@ cpu_flags_match (const insn_template *t)
       /* This instruction is available only on some archs.  */
       i386_cpu_flags cpu = cpu_arch_flags;
 
+      /* AVX512VL is no standalone feature - match it and then strip it.  */
+      if (x.bitfield.cpuavx512vl && !cpu.bitfield.cpuavx512vl)
+	return match;
+      x.bitfield.cpuavx512vl = 0;
+
       cpu = cpu_flags_and (x, cpu);
       if (!cpu_flags_all_zero (&cpu))
 	{
@@ -1724,17 +1729,6 @@ cpu_flags_match (const insn_template *t)
 		  && (!x.bitfield.cpupclmul || cpu.bitfield.cpupclmul))
 		match |= CPU_FLAGS_ARCH_MATCH;
 	    }
-	  else if (x.bitfield.cpuavx512vl)
-	    {
-	      /* Match AVX512VL.  */
-	      if (cpu.bitfield.cpuavx512vl)
-		{
-		  /* Need another match.  */
-		  cpu.bitfield.cpuavx512vl = 0;
-		  if (!cpu_flags_all_zero (&cpu))
-		    match |= CPU_FLAGS_ARCH_MATCH;
-		}
-	    }
 	  else
 	    match |= CPU_FLAGS_ARCH_MATCH;
 	}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]