Add gather/scatter tests with incorrect memory operand
authorMichael Zolotukhin <michael.v.zolotukhin@gmail.com>
Fri, 31 Jan 2014 16:13:06 +0000 (08:13 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 31 Jan 2014 16:13:06 +0000 (08:13 -0800)
2014-01-31  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>

PR gas/16488
* gas/i386/inval-avx512f.s: Add test for incorrect memory operand
for gather/scatter instructions.
* gas/i386/x86-64-inval-avx512f.s: Likewise.
* gas/i386/inval-avx512f.l: Adjust correspondingly.
* gas/i386/x86-64-inval-avx512f.l: Likewise.

gas/testsuite/ChangeLog
gas/testsuite/gas/i386/inval-avx512f.l
gas/testsuite/gas/i386/inval-avx512f.s
gas/testsuite/gas/i386/x86-64-inval-avx512f.l
gas/testsuite/gas/i386/x86-64-inval-avx512f.s

index c45f647d46778dd083a5bd9d79e0f18951045b85..4941ba3944bbd45ae43463614d4498b341debf8c 100644 (file)
@@ -1,3 +1,12 @@
+2014-01-31  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>
+
+       PR gas/16488
+       * gas/i386/inval-avx512f.s: Add test for incorrect memory operand
+       for gather/scatter instructions.
+       * gas/i386/x86-64-inval-avx512f.s: Likewise.
+       * gas/i386/inval-avx512f.l: Adjust correspondingly.
+       * gas/i386/x86-64-inval-avx512f.l: Likewise.
+
 2014-01-30  Sandra Loosemore  <sandra@codesourcery.com>
 
        * gas/nios2/call26_noat.d: New.
index 6c525f0f7af8e163eedd539f81a8d7f3de69bf53..b49a1d598af4b8da61f178dc6dbf43f5d1c90e35 100644 (file)
@@ -1,77 +1,94 @@
 .*: Assembler messages:
-.*:4: Error: .*
 .*:5: Error: .*
 .*:6: Error: .*
 .*:7: Error: .*
 .*:8: Error: .*
 .*:9: Error: .*
-.*:11: Error: .*
+.*:10: Error: .*
 .*:12: Error: .*
-.*:14: Error: .*
+.*:13: Error: .*
 .*:15: Error: .*
-.*:17: Error: .*
+.*:16: Error: .*
+.*:18: Error: .*
+.*:19: Error: .*
 .*:20: Error: .*
 .*:21: Error: .*
 .*:22: Error: .*
-.*:23: Error: .*
-.*:23: Error: .*
-.*:24: Error: .*
-.*:24: Error: .*
-.*:25: Error: .*
 .*:25: Error: .*
+.*:26: Error: .*
 .*:27: Error: .*
 .*:28: Error: .*
+.*:28: Error: .*
+.*:29: Error: .*
+.*:29: Error: .*
+.*:30: Error: .*
 .*:30: Error: .*
-.*:31: Error: .*
+.*:32: Error: .*
 .*:33: Error: .*
 .*:35: Error: .*
 .*:36: Error: .*
-.*:37: Error: .*
 .*:38: Error: .*
 .*:39: Error: .*
 .*:40: Error: .*
 .*:41: Error: .*
+.*:42: Error: .*
+.*:44: Error: .*
+.*:45: Error: .*
+.*:46: Error: .*
+.*:47: Error: .*
+.*:48: Error: .*
+.*:49: Error: .*
+.*:50: Error: .*
 GAS LISTING .*
 
 
 [      ]*1[    ]+# Check illegal AVX512F instructions
 [      ]*2[    ]+\.text
-[      ]*3[    ]+_start:
-[      ]*4[    ]+mov \{sae\}, %eax\{%k1\}
-[      ]*5[    ]+mov \{sae\}, %eax
-[      ]*6[    ]+mov %ebx, %eax\{%k2\}
-[      ]*7[    ]+vaddps %zmm3, %zmm1, %zmm2\{z\}\{%k1\}\{z\}
-[      ]*8[    ]+vaddps %zmm3, %zmm1\{%k3\}, %zmm2\{z\}
-[      ]*9[    ]+vaddps %zmm3, %zmm1\{%k1\}, %zmm2\{%k2\}
-[      ]*10[   ]+
-[      ]*11[   ]+vcvtps2pd \(%eax\), %zmm1\{1to8\}
-[      ]*12[   ]+vcvtps2pd \(%eax\)\{1to16\}, %zmm1
-[      ]*13[   ]+
-[      ]*14[   ]+vcvtps2pd \(%eax\)\{%k1\}, %zmm1
-[      ]*15[   ]+vcvtps2pd \(%eax\)\{z\}, %zmm1
-[      ]*16[   ]+
-[      ]*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\]
+[      ]*3[    ]+\.allow_index_reg
+[      ]*4[    ]+_start:
+[      ]*5[    ]+mov \{sae\}, %eax\{%k1\}
+[      ]*6[    ]+mov \{sae\}, %eax
+[      ]*7[    ]+mov %ebx, %eax\{%k2\}
+[      ]*8[    ]+vaddps %zmm3, %zmm1, %zmm2\{z\}\{%k1\}\{z\}
+[      ]*9[    ]+vaddps %zmm3, %zmm1\{%k3\}, %zmm2\{z\}
+[      ]*10[   ]+vaddps %zmm3, %zmm1\{%k1\}, %zmm2\{%k2\}
+[      ]*11[   ]+
+[      ]*12[   ]+vcvtps2pd \(%eax\), %zmm1\{1to8\}
+[      ]*13[   ]+vcvtps2pd \(%eax\)\{1to16\}, %zmm1
+[      ]*14[   ]+
+[      ]*15[   ]+vcvtps2pd \(%eax\)\{%k1\}, %zmm1
+[      ]*16[   ]+vcvtps2pd \(%eax\)\{z\}, %zmm1
+[      ]*17[   ]+
+[      ]*18[   ]+vgatherqpd \(%rdi,%zmm2,8\),%zmm6
+[      ]*19[   ]+vgatherqpd \(%edi\),%zmm6\{%k1\}
+[      ]*20[   ]+vgatherqpd \(%zmm2\),%zmm6\{%k1\}
+[      ]*21[   ]+vpscatterdd %zmm6,\(%edi\)\{%k1\}
+[      ]*22[   ]+vpscatterdd %zmm6,\(%zmm2\)\{%k1\}
+[      ]*23[   ]+
+[      ]*24[   ]+\.intel_syntax noprefix
+[      ]*25[   ]+mov eax\{k1\}, \{sae\}
+[      ]*26[   ]+mov eax, \{sae\}
+[      ]*27[   ]+mov eax\{k2\}, ebx
+[      ]*28[   ]+vaddps zmm2\{z\}\{k1\}\{z\}, zmm1, zmm3
+[      ]*29[   ]+vaddps zmm2\{z\}, zmm1\{k3\}, zmm3
+[      ]*30[   ]+vaddps zmm2\{k2\}, zmm1\{k1\}, zmm3
+[      ]*31[   ]+
+[      ]*32[   ]+vcvtps2pd zmm1\{1to8\}, \[eax\]
+[      ]*33[   ]+vcvtps2pd zmm1, \[eax\]\{1to16\}
 [      ]*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\]
+[      ]*35[   ]+vcvtps2pd zmm1, \[eax\]\{k1\}
+[      ]*36[   ]+vcvtps2pd zmm1, \[eax\]\{z\}
+[      ]*37[   ]+
+[      ]*38[   ]+vgatherqpd zmm6, ZMMWORD PTR \[rdi\+zmm2\*8\]
+[      ]*39[   ]+vgatherqpd zmm6\{k1\}, ZMMWORD PTR \[edi\]
+[      ]*40[   ]+vgatherqpd zmm6\{k1\}, ZMMWORD PTR \[zmm2\+eiz\]
+[      ]*41[   ]+vpscatterdd ZMMWORD PTR \[edi\]\{k1\}, zmm6
+[      ]*42[   ]+vpscatterdd ZMMWORD PTR \[zmm2\+eiz\]\{k1\}, zmm6
+[      ]*43[   ]+
+[      ]*44[   ]+vaddps zmm2, zmm1, QWORD PTR \[eax\]\{1to8\}
+[      ]*45[   ]+vaddps zmm2, zmm1, QWORD PTR \[eax\]\{1to16\}
+[      ]*46[   ]+vaddpd zmm2, zmm1, DWORD PTR \[eax\]\{1to8\}
+[      ]*47[   ]+vaddpd zmm2, zmm1, DWORD PTR \[eax\]\{1to16\}
+[      ]*48[   ]+vaddps zmm2, zmm1, ZMMWORD PTR \[eax\]\{1to16\}
+[      ]*49[   ]+vaddps zmm2, zmm1, DWORD PTR \[eax\]
+[      ]*50[   ]+vaddpd zmm2, zmm1, QWORD PTR \[eax\]
index b1ddba440772bdea09f39a0f254b632b20598946..f723c5ad1eb466451e36d9d6e585973ec1972209 100644 (file)
@@ -1,5 +1,6 @@
 # Check illegal AVX512F instructions
        .text
+       .allow_index_reg
 _start:
        mov {sae}, %eax{%k1}
        mov {sae}, %eax
@@ -15,6 +16,10 @@ _start:
        vcvtps2pd (%eax){z}, %zmm1
 
        vgatherqpd (%rdi,%zmm2,8),%zmm6
+       vgatherqpd (%edi),%zmm6{%k1}
+       vgatherqpd (%zmm2),%zmm6{%k1}
+       vpscatterdd %zmm6,(%edi){%k1}
+       vpscatterdd %zmm6,(%zmm2){%k1}
 
        .intel_syntax noprefix
        mov eax{k1}, {sae}
@@ -31,6 +36,10 @@ _start:
        vcvtps2pd zmm1, [eax]{z}
 
        vgatherqpd zmm6, ZMMWORD PTR [rdi+zmm2*8]
+       vgatherqpd zmm6{k1}, ZMMWORD PTR [edi]
+       vgatherqpd zmm6{k1}, ZMMWORD PTR [zmm2+eiz]
+       vpscatterdd ZMMWORD PTR [edi]{k1}, zmm6
+       vpscatterdd ZMMWORD PTR [zmm2+eiz]{k1}, zmm6
 
        vaddps zmm2, zmm1, QWORD PTR [eax]{1to8}
        vaddps zmm2, zmm1, QWORD PTR [eax]{1to16}
index 436acb0e625b9b6ff80e0beac517714c120eff17..21c4906815169542d5564f50a0b29453a6b25a9c 100644 (file)
@@ -1,71 +1,90 @@
 .*: Assembler messages:
-.*:4: Error: .*
 .*:5: Error: .*
 .*:6: Error: .*
 .*:7: Error: .*
 .*:8: Error: .*
 .*:9: Error: .*
-.*:11: Error: .*
+.*:10: Error: .*
 .*:12: Error: .*
-.*:14: Error: .*
+.*:13: Error: .*
 .*:15: Error: .*
+.*:16: Error: .*
 .*:18: Error: .*
 .*:19: Error: .*
 .*:20: Error: .*
 .*:21: Error: .*
-.*:21: Error: .*
-.*:22: Error: .*
-.*:22: Error: .*
-.*:23: Error: .*
-.*:23: Error: .*
+.*:24: Error: .*
 .*:25: Error: .*
 .*:26: Error: .*
+.*:27: Error: .*
+.*:27: Error: .*
+.*:28: Error: .*
 .*:28: Error: .*
 .*:29: Error: .*
+.*:29: Error: .*
 .*:31: Error: .*
 .*:32: Error: .*
-.*:33: Error: .*
 .*:34: Error: .*
 .*:35: Error: .*
-.*:36: Error: .*
 .*:37: Error: .*
+.*:38: Error: .*
+.*:39: Error: .*
+.*:40: Error: .*
+.*:42: Error: .*
+.*:43: Error: .*
+.*:44: Error: .*
+.*:45: Error: .*
+.*:46: Error: .*
+.*:47: Error: .*
+.*:48: Error: .*
 GAS LISTING .*
 
 
 [      ]*1[    ]+# Check illegal AVX512F instructions
 [      ]*2[    ]+\.text
-[      ]*3[    ]+_start:
-[      ]*4[    ]+mov \{sae\}, %rax\{%k1\}
-[      ]*5[    ]+mov \{sae\}, %rax
-[      ]*6[    ]+mov %rbx, %rax\{%k2\}
-[      ]*7[    ]+vaddps %zmm3, %zmm1, %zmm2\{z\}\{%k1\}\{z\}
-[      ]*8[    ]+vaddps %zmm3, %zmm1\{%k3\}, %zmm2\{z\}
-[      ]*9[    ]+vaddps %zmm3, %zmm1\{%k1\}, %zmm2\{%k2\}
-[      ]*10[   ]+
-[      ]*11[   ]+vcvtps2pd \(%rax\), %zmm1\{1to8\}
-[      ]*12[   ]+vcvtps2pd \(%rax\)\{1to16\}, %zmm1
-[      ]*13[   ]+
-[      ]*14[   ]+vcvtps2pd \(%rax\)\{%k1\}, %zmm1
-[      ]*15[   ]+vcvtps2pd \(%rax\)\{z\}, %zmm1
-[      ]*16[   ]+
-[      ]*17[   ]+\.intel_syntax noprefix
-[      ]*18[   ]+mov rax\{k1\}, \{sae\}
-[      ]*19[   ]+mov rax, \{sae\}
-[      ]*20[   ]+mov rax\{k2\}, rbx
-[      ]*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\}, \[rax\]
-[      ]*26[   ]+vcvtps2pd zmm1, \[rax\]\{1to16\}
-[      ]*27[   ]+
-[      ]*28[   ]+vcvtps2pd zmm1, \[rax\]\{k1\}
-[      ]*29[   ]+vcvtps2pd zmm1, \[rax\]\{z\}
+[      ]*3[    ]+\.allow_index_reg
+[      ]*4[    ]+_start:
+[      ]*5[    ]+mov \{sae\}, %rax\{%k1\}
+[      ]*6[    ]+mov \{sae\}, %rax
+[      ]*7[    ]+mov %rbx, %rax\{%k2\}
+[      ]*8[    ]+vaddps %zmm3, %zmm1, %zmm2\{z\}\{%k1\}\{z\}
+[      ]*9[    ]+vaddps %zmm3, %zmm1\{%k3\}, %zmm2\{z\}
+[      ]*10[   ]+vaddps %zmm3, %zmm1\{%k1\}, %zmm2\{%k2\}
+[      ]*11[   ]+
+[      ]*12[   ]+vcvtps2pd \(%rax\), %zmm1\{1to8\}
+[      ]*13[   ]+vcvtps2pd \(%rax\)\{1to16\}, %zmm1
+[      ]*14[   ]+
+[      ]*15[   ]+vcvtps2pd \(%rax\)\{%k1\}, %zmm1
+[      ]*16[   ]+vcvtps2pd \(%rax\)\{z\}, %zmm1
+[      ]*17[   ]+
+[      ]*18[   ]+vgatherqpd \(%rdi\),%zmm6\{%k1\}
+[      ]*19[   ]+vgatherqpd \(%zmm2\),%zmm6\{%k1\}
+[      ]*20[   ]+vpscatterdd %zmm6,\(%rdi\)\{%k1\}
+[      ]*21[   ]+vpscatterdd %zmm6,\(%zmm2\)\{%k1\}
+[      ]*22[   ]+
+[      ]*23[   ]+\.intel_syntax noprefix
+[      ]*24[   ]+mov rax\{k1\}, \{sae\}
+[      ]*25[   ]+mov rax, \{sae\}
+[      ]*26[   ]+mov rax\{k2\}, rbx
+[      ]*27[   ]+vaddps zmm2\{z\}\{k1\}\{z\}, zmm1, zmm3
+[      ]*28[   ]+vaddps zmm2\{z\}, zmm1\{k3\}, zmm3
+[      ]*29[   ]+vaddps zmm2\{k2\}, zmm1\{k1\}, zmm3
 [      ]*30[   ]+
-[      ]*31[   ]+vaddps zmm2, zmm1, QWORD PTR \[rax\]\{1to8\}
-[      ]*32[   ]+vaddps zmm2, zmm1, QWORD PTR \[rax\]\{1to16\}
-[      ]*33[   ]+vaddpd zmm2, zmm1, DWORD PTR \[rax\]\{1to8\}
-[      ]*34[   ]+vaddpd zmm2, zmm1, DWORD PTR \[rax\]\{1to16\}
-[      ]*35[   ]+vaddps zmm2, zmm1, ZMMWORD PTR \[rax\]\{1to16\}
-[      ]*36[   ]+vaddps zmm2, zmm1, DWORD PTR \[rax\]
-[      ]*37[   ]+vaddpd zmm2, zmm1, QWORD PTR \[rax\]
+[      ]*31[   ]+vcvtps2pd zmm1\{1to8\}, \[rax\]
+[      ]*32[   ]+vcvtps2pd zmm1, \[rax\]\{1to16\}
+[      ]*33[   ]+
+[      ]*34[   ]+vcvtps2pd zmm1, \[rax\]\{k1\}
+[      ]*35[   ]+vcvtps2pd zmm1, \[rax\]\{z\}
+[      ]*36[   ]+
+[      ]*37[   ]+vgatherqpd zmm6\{k1\}, ZMMWORD PTR \[rdi\]
+[      ]*38[   ]+vgatherqpd zmm6\{k1\}, ZMMWORD PTR \[zmm2\+riz\]
+[      ]*39[   ]+vpscatterdd ZMMWORD PTR \[rdi\]\{k1\}, zmm6
+[      ]*40[   ]+vpscatterdd ZMMWORD PTR \[zmm2\+riz\]\{k1\}, zmm6
+[      ]*41[   ]+
+[      ]*42[   ]+vaddps zmm2, zmm1, QWORD PTR \[rax\]\{1to8\}
+[      ]*43[   ]+vaddps zmm2, zmm1, QWORD PTR \[rax\]\{1to16\}
+[      ]*44[   ]+vaddpd zmm2, zmm1, DWORD PTR \[rax\]\{1to8\}
+[      ]*45[   ]+vaddpd zmm2, zmm1, DWORD PTR \[rax\]\{1to16\}
+[      ]*46[   ]+vaddps zmm2, zmm1, ZMMWORD PTR \[rax\]\{1to16\}
+[      ]*47[   ]+vaddps zmm2, zmm1, DWORD PTR \[rax\]
+[      ]*48[   ]+vaddpd zmm2, zmm1, QWORD PTR \[rax\]
index 5ac73498334f15c6dc3e393c1e2ee55a8cd3e0e5..835f677033de1d0799d75c23c4054b0d854abf7e 100644 (file)
@@ -1,5 +1,6 @@
 # Check illegal AVX512F instructions
        .text
+       .allow_index_reg
 _start:
        mov {sae}, %rax{%k1}
        mov {sae}, %rax
@@ -14,6 +15,11 @@ _start:
        vcvtps2pd (%rax){%k1}, %zmm1
        vcvtps2pd (%rax){z}, %zmm1
 
+       vgatherqpd (%rdi),%zmm6{%k1}
+       vgatherqpd (%zmm2),%zmm6{%k1}
+       vpscatterdd %zmm6,(%rdi){%k1}
+       vpscatterdd %zmm6,(%zmm2){%k1}
+
        .intel_syntax noprefix
        mov rax{k1}, {sae}
        mov rax, {sae}
@@ -28,6 +34,11 @@ _start:
        vcvtps2pd zmm1, [rax]{k1}
        vcvtps2pd zmm1, [rax]{z}
 
+       vgatherqpd zmm6{k1}, ZMMWORD PTR [rdi]
+       vgatherqpd zmm6{k1}, ZMMWORD PTR [zmm2+riz]
+       vpscatterdd ZMMWORD PTR [rdi]{k1}, zmm6
+       vpscatterdd ZMMWORD PTR [zmm2+riz]{k1}, zmm6
+
        vaddps zmm2, zmm1, QWORD PTR [rax]{1to8}
        vaddps zmm2, zmm1, QWORD PTR [rax]{1to16}
        vaddpd zmm2, zmm1, DWORD PTR [rax]{1to8}