This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] x86: change AVX512VL handling in cpu_flags_match()
- From: Jan Beulich <jbeulich at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 8 Mar 2018 07:49:11 -0000
- Subject: [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;
}