This is the mail archive of the binutils@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]

[PATCH] PR gas/16489: GAS doesn't complain about same register used for destination and index in AVX512 gather insn


Hi,

Here is a fix for PR16489.  Is it ok for trunk?

gas/Changelog:
2014-01-21  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>

	PR gas/16489
	* config/tc-i386.c (check_VecOperands): Add check for invalid
	register set in AVX512 gathers.

gas/testsuite/Changelog:
2014-01-21  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>

	PR gas/16489
	* gas/i386/vgather-check.s: Add tests for AVX512 gathers.
	* gas/i386/x86-64-vgather-check.s: Likewise.
	* gas/i386/vgather-check-error.l: Update correspondingly.
	* gas/i386/vgather-check-none.d: Likewise.
	* gas/i386/vgather-check-warn.d: Likewise.
	* gas/i386/vgather-check-warn.e: Likewise.
	* gas/i386/vgather-check.d: Likewise.
	* gas/i386/x86-64-vgather-check-error.l: Likewise.
	* gas/i386/x86-64-vgather-check-none.d: Likewise.
	* gas/i386/x86-64-vgather-check-warn.d: Likewise.
	* gas/i386/x86-64-vgather-check-warn.e: Likewise.
	* gas/i386/x86-64-vgather-check.d: Likewise.

Thanks,
Michael


diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 147acdf..7f35f05 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -4374,11 +4374,9 @@ check_VecOperands (const insn_template *t)
       if (i.reg_operands == 2 && !i.mask)
 	{
 	  gas_assert (i.types[0].bitfield.regxmm
-		      || i.types[0].bitfield.regymm
-		      || i.types[0].bitfield.regzmm);
+		      || i.types[0].bitfield.regymm);
 	  gas_assert (i.types[2].bitfield.regxmm
-		      || i.types[2].bitfield.regymm
-		      || i.types[2].bitfield.regzmm);
+		      || i.types[2].bitfield.regymm);
 	  if (operand_check == check_none)
 	    return 0;
 	  if (register_number (i.op[0].regs)
@@ -4395,6 +4393,22 @@ check_VecOperands (const insn_template *t)
 	    }
 	  as_warn (_("mask, index, and destination registers should be distinct"));
 	}
+      else if (i.reg_operands == 1 && i.mask)
+	{
+	  if ((i.types[1].bitfield.regymm
+	       || i.types[1].bitfield.regzmm)
+	      && (register_number (i.op[1].regs)
+		  == register_number (i.index_reg)))
+	    {
+	      if (operand_check == check_error)
+		{
+		  i.error = invalid_vector_register_set;
+		  return 1;
+		}
+	      if (operand_check != check_none)
+		as_warn (_("index and destination registers should be distinct"));
+	    }
+	}
     }
 
   /* Check if broadcast is supported by the instruction and is applied
diff --git a/gas/testsuite/gas/i386/vgather-check-error.l b/gas/testsuite/gas/i386/vgather-check-error.l
index 41273dc..a86ccd5 100644
--- a/gas/testsuite/gas/i386/vgather-check-error.l
+++ b/gas/testsuite/gas/i386/vgather-check-error.l
@@ -2,3 +2,11 @@
 .*:6: Error: .*
 .*:7: Error: .*
 .*:8: Error: .*
+.*:12: Error: .*
+.*:14: Error: .*
+.*:16: Error: .*
+.*:18: Error: .*
+.*:20: Error: .*
+.*:22: Error: .*
+.*:24: Error: .*
+.*:26: Error: .*
diff --git a/gas/testsuite/gas/i386/vgather-check-none.d b/gas/testsuite/gas/i386/vgather-check-none.d
index b51cc94..8abdfcb 100644
--- a/gas/testsuite/gas/i386/vgather-check-none.d
+++ b/gas/testsuite/gas/i386/vgather-check-none.d
@@ -11,4 +11,22 @@ Disassembly of section .text:
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 69 92 14 48[ 	]+vgatherdps %xmm2,\(%eax,%xmm1,2\),%xmm2
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 71 92 04 88[ 	]+vgatherdps %xmm1,\(%eax,%xmm1,4\),%xmm0
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 69 92 0c c8[ 	]+vgatherdps %xmm2,\(%eax,%xmm1,8\),%xmm1
+
+00000018 <avx512vgather>:
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 92 b4 fd 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%ebp,%ymm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 92 b4 f5 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%ebp,%ymm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 92 b4 fd 7b 00 00 00[ 	]+vgatherdps 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 92 b4 f5 7b 00 00 00[ 	]+vgatherdps 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 93 b4 fd 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 93 b4 f5 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 93 b4 fd 7b 00 00 00[ 	]+vgatherqps 0x7b\(%ebp,%zmm7,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 93 b4 f5 7b 00 00 00[ 	]+vgatherqps 0x7b\(%ebp,%zmm6,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 90 b4 fd 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 90 b4 f5 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 90 b4 fd 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%ebp,%ymm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 90 b4 f5 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%ebp,%ymm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 91 b4 fd 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%ebp,%zmm7,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 91 b4 f5 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%ebp,%zmm6,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 91 b4 fd 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 91 b4 f5 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
 #pass
diff --git a/gas/testsuite/gas/i386/vgather-check-warn.d b/gas/testsuite/gas/i386/vgather-check-warn.d
index 22be247..985f713 100644
--- a/gas/testsuite/gas/i386/vgather-check-warn.d
+++ b/gas/testsuite/gas/i386/vgather-check-warn.d
@@ -12,4 +12,22 @@ Disassembly of section .text:
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 69 92 14 48[ 	]+vgatherdps %xmm2,\(%eax,%xmm1,2\),%xmm2
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 71 92 04 88[ 	]+vgatherdps %xmm1,\(%eax,%xmm1,4\),%xmm0
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 69 92 0c c8[ 	]+vgatherdps %xmm2,\(%eax,%xmm1,8\),%xmm1
+
+00000018 <avx512vgather>:
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 92 b4 fd 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%ebp,%ymm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 92 b4 f5 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%ebp,%ymm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 92 b4 fd 7b 00 00 00[ 	]+vgatherdps 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 92 b4 f5 7b 00 00 00[ 	]+vgatherdps 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 93 b4 fd 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 93 b4 f5 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 93 b4 fd 7b 00 00 00[ 	]+vgatherqps 0x7b\(%ebp,%zmm7,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 93 b4 f5 7b 00 00 00[ 	]+vgatherqps 0x7b\(%ebp,%zmm6,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 90 b4 fd 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 90 b4 f5 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 90 b4 fd 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%ebp,%ymm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 90 b4 f5 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%ebp,%ymm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 91 b4 fd 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%ebp,%zmm7,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 91 b4 f5 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%ebp,%zmm6,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 91 b4 fd 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 91 b4 f5 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
 #pass
diff --git a/gas/testsuite/gas/i386/vgather-check-warn.e b/gas/testsuite/gas/i386/vgather-check-warn.e
index 095840b..efd2e0b 100644
--- a/gas/testsuite/gas/i386/vgather-check-warn.e
+++ b/gas/testsuite/gas/i386/vgather-check-warn.e
@@ -2,3 +2,11 @@
 .*:6: Warning: .*
 .*:7: Warning: .*
 .*:8: Warning: .*
+.*:12: Warning: .*
+.*:14: Warning: .*
+.*:16: Warning: .*
+.*:18: Warning: .*
+.*:20: Warning: .*
+.*:22: Warning: .*
+.*:24: Warning: .*
+.*:26: Warning: .*
diff --git a/gas/testsuite/gas/i386/vgather-check.d b/gas/testsuite/gas/i386/vgather-check.d
index 25042f4..c3505f9 100644
--- a/gas/testsuite/gas/i386/vgather-check.d
+++ b/gas/testsuite/gas/i386/vgather-check.d
@@ -11,4 +11,22 @@ Disassembly of section .text:
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 69 92 14 48[ 	]+vgatherdps %xmm2,\(%eax,%xmm1,2\),%xmm2
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 71 92 04 88[ 	]+vgatherdps %xmm1,\(%eax,%xmm1,4\),%xmm0
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 69 92 0c c8[ 	]+vgatherdps %xmm2,\(%eax,%xmm1,8\),%xmm1
+
+00000018 <avx512vgather>:
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 92 b4 fd 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%ebp,%ymm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 92 b4 f5 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%ebp,%ymm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 92 b4 fd 7b 00 00 00[ 	]+vgatherdps 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 92 b4 f5 7b 00 00 00[ 	]+vgatherdps 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 93 b4 fd 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 93 b4 f5 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 93 b4 fd 7b 00 00 00[ 	]+vgatherqps 0x7b\(%ebp,%zmm7,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 93 b4 f5 7b 00 00 00[ 	]+vgatherqps 0x7b\(%ebp,%zmm6,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 90 b4 fd 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 90 b4 f5 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 90 b4 fd 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%ebp,%ymm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 90 b4 f5 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%ebp,%ymm6,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 91 b4 fd 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%ebp,%zmm7,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 7d 49 91 b4 f5 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%ebp,%zmm6,8\),%ymm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 91 b4 fd 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%ebp,%zmm7,8\),%zmm6\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 f2 fd 49 91 b4 f5 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%ebp,%zmm6,8\),%zmm6\{%k1\}
 #pass
diff --git a/gas/testsuite/gas/i386/vgather-check.s b/gas/testsuite/gas/i386/vgather-check.s
index c784029..b2735e7 100644
--- a/gas/testsuite/gas/i386/vgather-check.s
+++ b/gas/testsuite/gas/i386/vgather-check.s
@@ -6,3 +6,21 @@ vgather:
 	vgatherdps %xmm2,(%eax,%xmm1,2),%xmm2
 	vgatherdps %xmm1,(%eax,%xmm1,4),%xmm0
 	vgatherdps %xmm2,(%eax,%xmm1,8),%xmm1
+
+avx512vgather:
+	vgatherdpd	123(%ebp,%ymm7,8), %zmm6{%k1}
+	vgatherdpd	123(%ebp,%ymm6,8), %zmm6{%k1}
+	vgatherdps	123(%ebp,%zmm7,8), %zmm6{%k1}
+	vgatherdps	123(%ebp,%zmm6,8), %zmm6{%k1}
+	vgatherqpd	123(%ebp,%zmm7,8), %zmm6{%k1}
+	vgatherqpd	123(%ebp,%zmm6,8), %zmm6{%k1}
+	vgatherqps	123(%ebp,%zmm7,8), %ymm6{%k1}
+	vgatherqps	123(%ebp,%zmm6,8), %ymm6{%k1}
+	vpgatherdd	123(%ebp,%zmm7,8), %zmm6{%k1}
+	vpgatherdd	123(%ebp,%zmm6,8), %zmm6{%k1}
+	vpgatherdq	123(%ebp,%ymm7,8), %zmm6{%k1}
+	vpgatherdq	123(%ebp,%ymm6,8), %zmm6{%k1}
+	vpgatherqd	123(%ebp,%zmm7,8), %ymm6{%k1}
+	vpgatherqd	123(%ebp,%zmm6,8), %ymm6{%k1}
+	vpgatherqq	123(%ebp,%zmm7,8), %zmm6{%k1}
+	vpgatherqq	123(%ebp,%zmm6,8), %zmm6{%k1}
diff --git a/gas/testsuite/gas/i386/x86-64-vgather-check-error.l b/gas/testsuite/gas/i386/x86-64-vgather-check-error.l
index d5c7205..28fa824 100644
--- a/gas/testsuite/gas/i386/x86-64-vgather-check-error.l
+++ b/gas/testsuite/gas/i386/x86-64-vgather-check-error.l
@@ -2,3 +2,11 @@
 .*:6: Error: .*
 .*:8: Error: .*
 .*:10: Error: .*
+.*:15: Error: .*
+.*:17: Error: .*
+.*:19: Error: .*
+.*:21: Error: .*
+.*:23: Error: .*
+.*:25: Error: .*
+.*:27: Error: .*
+.*:29: Error: .*
diff --git a/gas/testsuite/gas/i386/x86-64-vgather-check-none.d b/gas/testsuite/gas/i386/x86-64-vgather-check-none.d
index e235e00..a1062f7 100644
--- a/gas/testsuite/gas/i386/x86-64-vgather-check-none.d
+++ b/gas/testsuite/gas/i386/x86-64-vgather-check-none.d
@@ -14,4 +14,22 @@ Disassembly of section .text:
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 31 92 04 88[ 	]+vgatherdps %xmm9,\(%rax,%xmm1,4\),%xmm0
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 69 92 0c c8[ 	]+vgatherdps %xmm2,\(%rax,%xmm1,8\),%xmm1
 [ 	]*[a-f0-9]+:[ 	]+c4 62 69 92 0c c8[ 	]+vgatherdps %xmm2,\(%rax,%xmm1,8\),%xmm9
+
+000000000000002a <avx512vgather>:
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 92 84 cd 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%rbp,%ymm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 92 84 c5 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%rbp,%ymm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 92 84 cd 7b 00 00 00[ 	]+vgatherdps 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 92 84 c5 7b 00 00 00[ 	]+vgatherdps 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 93 84 cd 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 93 84 c5 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 93 84 cd 7b 00 00 00[ 	]+vgatherqps 0x7b\(%rbp,%zmm17,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 93 84 c5 7b 00 00 00[ 	]+vgatherqps 0x7b\(%rbp,%zmm16,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 90 84 cd 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 90 84 c5 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 90 84 cd 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%rbp,%ymm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 90 84 c5 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%rbp,%ymm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 91 84 cd 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%rbp,%zmm17,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 91 84 c5 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%rbp,%zmm16,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 91 84 cd 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 91 84 c5 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
 #pass
diff --git a/gas/testsuite/gas/i386/x86-64-vgather-check-warn.d b/gas/testsuite/gas/i386/x86-64-vgather-check-warn.d
index 33846d2..3d7a249 100644
--- a/gas/testsuite/gas/i386/x86-64-vgather-check-warn.d
+++ b/gas/testsuite/gas/i386/x86-64-vgather-check-warn.d
@@ -15,4 +15,22 @@ Disassembly of section .text:
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 31 92 04 88[ 	]+vgatherdps %xmm9,\(%rax,%xmm1,4\),%xmm0
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 69 92 0c c8[ 	]+vgatherdps %xmm2,\(%rax,%xmm1,8\),%xmm1
 [ 	]*[a-f0-9]+:[ 	]+c4 62 69 92 0c c8[ 	]+vgatherdps %xmm2,\(%rax,%xmm1,8\),%xmm9
+
+000000000000002a <avx512vgather>:
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 92 84 cd 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%rbp,%ymm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 92 84 c5 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%rbp,%ymm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 92 84 cd 7b 00 00 00[ 	]+vgatherdps 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 92 84 c5 7b 00 00 00[ 	]+vgatherdps 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 93 84 cd 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 93 84 c5 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 93 84 cd 7b 00 00 00[ 	]+vgatherqps 0x7b\(%rbp,%zmm17,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 93 84 c5 7b 00 00 00[ 	]+vgatherqps 0x7b\(%rbp,%zmm16,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 90 84 cd 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 90 84 c5 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 90 84 cd 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%rbp,%ymm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 90 84 c5 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%rbp,%ymm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 91 84 cd 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%rbp,%zmm17,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 91 84 c5 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%rbp,%zmm16,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 91 84 cd 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 91 84 c5 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
 #pass
diff --git a/gas/testsuite/gas/i386/x86-64-vgather-check-warn.e b/gas/testsuite/gas/i386/x86-64-vgather-check-warn.e
index 24e6a57..b17f423 100644
--- a/gas/testsuite/gas/i386/x86-64-vgather-check-warn.e
+++ b/gas/testsuite/gas/i386/x86-64-vgather-check-warn.e
@@ -2,3 +2,11 @@
 .*:6: Warning: .*
 .*:8: Warning: .*
 .*:10: Warning: .*
+.*:15: Warning: .*
+.*:17: Warning: .*
+.*:19: Warning: .*
+.*:21: Warning: .*
+.*:23: Warning: .*
+.*:25: Warning: .*
+.*:27: Warning: .*
+.*:29: Warning: .*
diff --git a/gas/testsuite/gas/i386/x86-64-vgather-check.d b/gas/testsuite/gas/i386/x86-64-vgather-check.d
index bd8ce57..d51f670 100644
--- a/gas/testsuite/gas/i386/x86-64-vgather-check.d
+++ b/gas/testsuite/gas/i386/x86-64-vgather-check.d
@@ -14,4 +14,22 @@ Disassembly of section .text:
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 31 92 04 88[ 	]+vgatherdps %xmm9,\(%rax,%xmm1,4\),%xmm0
 [ 	]*[a-f0-9]+:[ 	]+c4 e2 69 92 0c c8[ 	]+vgatherdps %xmm2,\(%rax,%xmm1,8\),%xmm1
 [ 	]*[a-f0-9]+:[ 	]+c4 62 69 92 0c c8[ 	]+vgatherdps %xmm2,\(%rax,%xmm1,8\),%xmm9
+
+000000000000002a <avx512vgather>:
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 92 84 cd 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%rbp,%ymm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 92 84 c5 7b 00 00 00[ 	]+vgatherdpd 0x7b\(%rbp,%ymm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 92 84 cd 7b 00 00 00[ 	]+vgatherdps 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 92 84 c5 7b 00 00 00[ 	]+vgatherdps 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 93 84 cd 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 93 84 c5 7b 00 00 00[ 	]+vgatherqpd 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 93 84 cd 7b 00 00 00[ 	]+vgatherqps 0x7b\(%rbp,%zmm17,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 93 84 c5 7b 00 00 00[ 	]+vgatherqps 0x7b\(%rbp,%zmm16,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 90 84 cd 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 90 84 c5 7b 00 00 00[ 	]+vpgatherdd 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 90 84 cd 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%rbp,%ymm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 90 84 c5 7b 00 00 00[ 	]+vpgatherdq 0x7b\(%rbp,%ymm16,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 91 84 cd 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%rbp,%zmm17,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 7d 41 91 84 c5 7b 00 00 00[ 	]+vpgatherqd 0x7b\(%rbp,%zmm16,8\),%ymm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 91 84 cd 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%rbp,%zmm17,8\),%zmm16\{%k1\}
+[ 	]+[a-f0-9]+:[ 	]+62 e2 fd 41 91 84 c5 7b 00 00 00[ 	]+vpgatherqq 0x7b\(%rbp,%zmm16,8\),%zmm16\{%k1\}
 #pass
diff --git a/gas/testsuite/gas/i386/x86-64-vgather-check.s b/gas/testsuite/gas/i386/x86-64-vgather-check.s
index 43b058b..9d5872c 100644
--- a/gas/testsuite/gas/i386/x86-64-vgather-check.s
+++ b/gas/testsuite/gas/i386/x86-64-vgather-check.s
@@ -9,3 +9,21 @@ vgather:
 	vgatherdps %xmm9,(%rax,%xmm1,4),%xmm0
 	vgatherdps %xmm2,(%rax,%xmm1,8),%xmm1
 	vgatherdps %xmm2,(%rax,%xmm1,8),%xmm9
+
+avx512vgather:
+	vgatherdpd	123(%rbp,%ymm17,8), %zmm16{%k1}
+	vgatherdpd	123(%rbp,%ymm16,8), %zmm16{%k1}
+	vgatherdps	123(%rbp,%zmm17,8), %zmm16{%k1}
+	vgatherdps	123(%rbp,%zmm16,8), %zmm16{%k1}
+	vgatherqpd	123(%rbp,%zmm17,8), %zmm16{%k1}
+	vgatherqpd	123(%rbp,%zmm16,8), %zmm16{%k1}
+	vgatherqps	123(%rbp,%zmm17,8), %ymm16{%k1}
+	vgatherqps	123(%rbp,%zmm16,8), %ymm16{%k1}
+	vpgatherdd	123(%rbp,%zmm17,8), %zmm16{%k1}
+	vpgatherdd	123(%rbp,%zmm16,8), %zmm16{%k1}
+	vpgatherdq	123(%rbp,%ymm17,8), %zmm16{%k1}
+	vpgatherdq	123(%rbp,%ymm16,8), %zmm16{%k1}
+	vpgatherqd	123(%rbp,%zmm17,8), %ymm16{%k1}
+	vpgatherqd	123(%rbp,%zmm16,8), %ymm16{%k1}
+	vpgatherqq	123(%rbp,%zmm17,8), %zmm16{%k1}
+	vpgatherqq	123(%rbp,%zmm16,8), %zmm16{%k1}


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