Reorder invalid default mask check
authorMichael Zolotukhin <michael.v.zolotukhin@gmail.com>
Fri, 15 Nov 2013 13:22:32 +0000 (05:22 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 15 Nov 2013 13:22:32 +0000 (05:22 -0800)
gas/

2013-11-15  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>

* config/tc-i386.c (check_VecOperands): Reorder checks.

gas/testsuite/

2013-11-15  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>

* gas/i386/inval-avx512f.s: Add invalid test for gather instruction
with default mask.
* gas/i386/inval-avx512f.l: Update correspondingly.

gas/ChangeLog
gas/config/tc-i386.c
gas/testsuite/ChangeLog
gas/testsuite/gas/i386/inval-avx512f.l
gas/testsuite/gas/i386/inval-avx512f.s

index 2b8ac6e9330b27f93630aeea183e9e024a63d346..57fb668f129c66749ca44049e9ab3078ec932d0d 100644 (file)
@@ -1,3 +1,7 @@
+2013-11-15  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>
+
+       * config/tc-i386.c (check_VecOperands): Reorder checks.
+
 2013-11-11  Catherine Moore  <clm@codesourcery.com>
 
        * config/mips/tc-mips.c (convert_reg_type): Use
index 973ebe4474fc10d9dfae05ecf7fde3d589ac5120..4ce772ca298476c71a9c5aed18c3b4be2285c636 100644 (file)
@@ -4345,6 +4345,14 @@ check_VecOperands (const insn_template *t)
       return 1;
     }
 
+  /* Check if default mask is allowed.  */
+  if (t->opcode_modifier.nodefmask
+      && (!i.mask || i.mask->mask->reg_num == 0))
+    {
+      i.error = no_default_mask;
+      return 1;
+    }
+
   /* For VSIB byte, we need a vector register for index, and all vector
      registers must be distinct.  */
   if (t->opcode_modifier.vecsib)
@@ -4462,14 +4470,6 @@ check_VecOperands (const insn_template *t)
       return 1;
     }
 
-  /* Check if default mask is allowed.  */
-  if (t->opcode_modifier.nodefmask
-      && (!i.mask || i.mask->mask->reg_num == 0))
-    {
-      i.error = no_default_mask;
-      return 1;
-    }
-
   /* Check RC/SAE.  */
   if (i.rounding)
     {
index c0f5fc36dd366b021c0ce7a5d11f86ab7541075d..bce81e52302180d1aa2eb53e5c02733ea7eee179 100644 (file)
@@ -1,3 +1,9 @@
+2013-11-15  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>
+
+       * gas/i386/inval-avx512f.s: Add invalid test for gather instruction
+       with default mask.
+       * gas/i386/inval-avx512f.l: Update correspondingly.
+
 2013-11-05  Yufeng Zhang  <yufeng.zhang@arm.com>
 
        * gas/aarch64/deprecated.d: New file.
index 9b46fae19b4d5cf14b2febf3adf9e33232d389eb..6c525f0f7af8e163eedd539f81a8d7f3de69bf53 100644 (file)
@@ -9,26 +9,28 @@
 .*:12: Error: .*
 .*:14: Error: .*
 .*:15: Error: .*
-.*:18: Error: .*
-.*:19: Error: .*
+.*:17: Error: .*
 .*:20: Error: .*
 .*:21: Error: .*
-.*:21: Error: .*
-.*:22: Error: .*
 .*:22: Error: .*
 .*:23: Error: .*
 .*:23: Error: .*
+.*:24: Error: .*
+.*:24: Error: .*
+.*:25: Error: .*
 .*:25: Error: .*
-.*:26: Error: .*
+.*:27: Error: .*
 .*:28: Error: .*
-.*:29: Error: .*
+.*:30: Error: .*
 .*:31: Error: .*
-.*:32: Error: .*
 .*:33: Error: .*
-.*:34: Error: .*
 .*:35: Error: .*
 .*:36: Error: .*
 .*:37: Error: .*
+.*:38: Error: .*
+.*:39: Error: .*
+.*:40: Error: .*
+.*:41: Error: .*
 GAS LISTING .*
 
 
@@ -48,24 +50,28 @@ GAS LISTING .*
 [      ]*14[   ]+vcvtps2pd \(%eax\)\{%k1\}, %zmm1
 [      ]*15[   ]+vcvtps2pd \(%eax\)\{z\}, %zmm1
 [      ]*16[   ]+
-[      ]*17[   ]+\.intel_syntax noprefix
-[      ]*18[   ]+mov eax\{k1\}, \{sae\}
-[      ]*19[   ]+mov eax, \{sae\}
-[      ]*20[   ]+mov eax\{k2\}, ebx
-[      ]*21[   ]+vaddps zmm2\{z\}\{k1\}\{z\}, zmm1, zmm3
-[      ]*22[   ]+vaddps zmm2\{z\}, zmm1\{k3\}, zmm3
-[      ]*23[   ]+vaddps zmm2\{k2\}, zmm1\{k1\}, zmm3
-[      ]*24[   ]+
-[      ]*25[   ]+vcvtps2pd zmm1\{1to8\}, \[eax\]
-[      ]*26[   ]+vcvtps2pd zmm1, \[eax\]\{1to16\}
-[      ]*27[   ]+
-[      ]*28[   ]+vcvtps2pd zmm1, \[eax\]\{k1\}
-[      ]*29[   ]+vcvtps2pd zmm1, \[eax\]\{z\}
-[      ]*30[   ]+
-[      ]*31[   ]+vaddps zmm2, zmm1, QWORD PTR \[eax\]\{1to8\}
-[      ]*32[   ]+vaddps zmm2, zmm1, QWORD PTR \[eax\]\{1to16\}
-[      ]*33[   ]+vaddpd zmm2, zmm1, DWORD PTR \[eax\]\{1to8\}
-[      ]*34[   ]+vaddpd zmm2, zmm1, DWORD PTR \[eax\]\{1to16\}
-[      ]*35[   ]+vaddps zmm2, zmm1, ZMMWORD PTR \[eax\]\{1to16\}
-[      ]*36[   ]+vaddps zmm2, zmm1, DWORD PTR \[eax\]
-[      ]*37[   ]+vaddpd zmm2, zmm1, QWORD PTR \[eax\]
+[      ]*17[   ]+vgatherqpd \(%rdi,%zmm2,8\),%zmm6
+[      ]*18[   ]+
+[      ]*19[   ]+\.intel_syntax noprefix
+[      ]*20[   ]+mov eax\{k1\}, \{sae\}
+[      ]*21[   ]+mov eax, \{sae\}
+[      ]*22[   ]+mov eax\{k2\}, ebx
+[      ]*23[   ]+vaddps zmm2\{z\}\{k1\}\{z\}, zmm1, zmm3
+[      ]*24[   ]+vaddps zmm2\{z\}, zmm1\{k3\}, zmm3
+[      ]*25[   ]+vaddps zmm2\{k2\}, zmm1\{k1\}, zmm3
+[      ]*26[   ]+
+[      ]*27[   ]+vcvtps2pd zmm1\{1to8\}, \[eax\]
+[      ]*28[   ]+vcvtps2pd zmm1, \[eax\]\{1to16\}
+[      ]*29[   ]+
+[      ]*30[   ]+vcvtps2pd zmm1, \[eax\]\{k1\}
+[      ]*31[   ]+vcvtps2pd zmm1, \[eax\]\{z\}
+[      ]*32[   ]+
+[      ]*33[   ]+vgatherqpd zmm6, ZMMWORD PTR \[rdi\+zmm2\*8\]
+[      ]*34[   ]+
+[      ]*35[   ]+vaddps zmm2, zmm1, QWORD PTR \[eax\]\{1to8\}
+[      ]*36[   ]+vaddps zmm2, zmm1, QWORD PTR \[eax\]\{1to16\}
+[      ]*37[   ]+vaddpd zmm2, zmm1, DWORD PTR \[eax\]\{1to8\}
+[      ]*38[   ]+vaddpd zmm2, zmm1, DWORD PTR \[eax\]\{1to16\}
+[      ]*39[   ]+vaddps zmm2, zmm1, ZMMWORD PTR \[eax\]\{1to16\}
+[      ]*40[   ]+vaddps zmm2, zmm1, DWORD PTR \[eax\]
+[      ]*41[   ]+vaddpd zmm2, zmm1, QWORD PTR \[eax\]
index c2ab50e6c8d104296d5aa205d19d6ef9adfaf0ee..b1ddba440772bdea09f39a0f254b632b20598946 100644 (file)
@@ -14,6 +14,8 @@ _start:
        vcvtps2pd (%eax){%k1}, %zmm1
        vcvtps2pd (%eax){z}, %zmm1
 
+       vgatherqpd (%rdi,%zmm2,8),%zmm6
+
        .intel_syntax noprefix
        mov eax{k1}, {sae}
        mov eax, {sae}
@@ -28,6 +30,8 @@ _start:
        vcvtps2pd zmm1, [eax]{k1}
        vcvtps2pd zmm1, [eax]{z}
 
+       vgatherqpd zmm6, ZMMWORD PTR [rdi+zmm2*8]
+
        vaddps zmm2, zmm1, QWORD PTR [eax]{1to8}
        vaddps zmm2, zmm1, QWORD PTR [eax]{1to16}
        vaddpd zmm2, zmm1, DWORD PTR [eax]{1to8}