x86: simplify AVX checks in cpu_flags_match()
authorJan Beulich <jbeulich@novell.com>
Thu, 8 Mar 2018 07:44:52 +0000 (08:44 +0100)
committerJan Beulich <jbeulich@suse.com>
Thu, 8 Mar 2018 07:44:52 +0000 (08:44 +0100)
No caller cares about the specifics of CPU_FLAGS_{AES,AVX,PCLMUL}_MATCH,
so drop those and fold the nested if()-s.

gas/ChangeLog
gas/config/tc-i386.c

index 683d1bce9a456d5b9ac2ea4fdefd8ba344d48fe1..60460115c1e658ca18aafe263d1c42d35186888f 100644 (file)
@@ -1,3 +1,11 @@
+2018-03-08  Jan Beulich  <jbeulich@suse.com>
+
+       * config/tc-i386.c (CPU_FLAGS_AES_MATCH, CPU_FLAGS_AVX_MATCH,
+       CPU_FLAGS_PCLMUL_MATCH): Delete.
+       (CPU_FLAGS_32BIT_MATCH): Drop uses of deleted CPU_FLAGS_*_MATCH.
+       (cpu_flags_match): Combine AVX checks into
+       single if().
+
 2018-03-08  Jan Beulich  <jbeulich@suse.com>
 
        * config/tc-i386.c (cpu_flags_match): Drop "else" branches
index 0c0b591cbfe24cc0f0a60e83d0e8d3c5d71adb96..818281cd6ec46c2ec9046292d9399590158233d0 100644 (file)
@@ -1687,13 +1687,8 @@ cpu_flags_and_not (i386_cpu_flags x, i386_cpu_flags y)
 
 #define CPU_FLAGS_ARCH_MATCH           0x1
 #define CPU_FLAGS_64BIT_MATCH          0x2
-#define CPU_FLAGS_AES_MATCH            0x4
-#define CPU_FLAGS_PCLMUL_MATCH         0x8
-#define CPU_FLAGS_AVX_MATCH           0x10
 
-#define CPU_FLAGS_32BIT_MATCH \
-  (CPU_FLAGS_ARCH_MATCH | CPU_FLAGS_AES_MATCH \
-   | CPU_FLAGS_PCLMUL_MATCH | CPU_FLAGS_AVX_MATCH)
+#define CPU_FLAGS_32BIT_MATCH CPU_FLAGS_ARCH_MATCH
 #define CPU_FLAGS_PERFECT_MATCH \
   (CPU_FLAGS_32BIT_MATCH | CPU_FLAGS_64BIT_MATCH)
 
@@ -1724,22 +1719,11 @@ cpu_flags_match (const insn_template *t)
          if (x.bitfield.cpuavx)
            {
              /* We only need to check AES/PCLMUL/SSE2AVX with AVX.  */
-             if (cpu.bitfield.cpuavx)
-               {
-                 /* Check SSE2AVX.  */
-                 if (!t->opcode_modifier.sse2avx|| sse2avx)
-                   {
-                     match |= (CPU_FLAGS_ARCH_MATCH
-                               | CPU_FLAGS_AVX_MATCH);
-                     /* Check AES.  */
-                     if (!x.bitfield.cpuaes || cpu.bitfield.cpuaes)
-                       match |= CPU_FLAGS_AES_MATCH;
-                     /* Check PCLMUL.  */
-                     if (!x.bitfield.cpupclmul
-                         || cpu.bitfield.cpupclmul)
-                       match |= CPU_FLAGS_PCLMUL_MATCH;
-                   }
-               }
+             if (cpu.bitfield.cpuavx
+                 && (!t->opcode_modifier.sse2avx || sse2avx)
+                 && (!x.bitfield.cpuaes || cpu.bitfield.cpuaes)
+                 && (!x.bitfield.cpupclmul || cpu.bitfield.cpupclmul))
+               match |= CPU_FLAGS_ARCH_MATCH;
            }
          else if (x.bitfield.cpuavx512vl)
            {