[PATCH 9/9] x86: correctly handle VPBROADCASTD with EVEX.W set outside of 64-bit mode

Jan Beulich JBeulich@suse.com
Thu Oct 11 06:59:00 GMT 2018


For the flavor having a GPR operand EVEX.W is ignored outside of 64-bit
mode. The mnemonic should therefore not be VPBROADCASTQ.

gas/
2018-10-10  Jan Beulich  <jbeulich@suse.com>

	* testsuite/gas/i386/evex-wig.s: Add vpbroadcastd cases.
	* testsuite/gas/i386/evex-wig.d,
	testsuite/gas/i386/evex-wig1-intel.d: Adjust expectations.

opcodes/
2018-10-10  Jan Beulich  <jbeulich@suse.com>

	* i386-dis-evex.h (evex_table): Use K suffix instead of %LW for
	vpbroadcast{d,q} with GPR operand.

--- a/gas/testsuite/gas/i386/evex-wig.s
+++ b/gas/testsuite/gas/i386/evex-wig.s
@@ -41,6 +41,8 @@ _start:
 	{evex} vmovd %xmm0, %eax
 	{evex} vmovd %xmm0, 4(%eax)
 
+	vpbroadcastd %eax, %xmm0
+
 	{evex} vpextrb $0, %xmm0, %eax
 	{evex} vpextrb $0, %xmm0, 1(%eax)
 
--- a/gas/testsuite/gas/i386/evex-wig1-intel.d
+++ b/gas/testsuite/gas/i386/evex-wig1-intel.d
@@ -31,6 +31,7 @@ Disassembly of section .text:
 [ 	]*[a-f0-9]+:	62 f1 fd 08 6e 40 01 	vmovd  xmm0,DWORD PTR \[eax\+0x4\]
 [ 	]*[a-f0-9]+:	62 f1 fd 08 7e c0    	vmovd  eax,xmm0
 [ 	]*[a-f0-9]+:	62 f1 fd 08 7e 40 01 	vmovd  DWORD PTR \[eax\+0x4\],xmm0
+[ 	]*[a-f0-9]+:	62 f2 fd 08 7c c0    	vpbroadcastd xmm0,eax
 [ 	]*[a-f0-9]+:	62 f3 fd 08 14 c0 00 	vpextrb eax,xmm0,0x0
 [ 	]*[a-f0-9]+:	62 f3 fd 08 14 40 01 00 	vpextrb BYTE PTR \[eax\+0x1\],xmm0,0x0
 [ 	]*[a-f0-9]+:	62 f3 fd 08 16 c0 00 	vpextrd eax,xmm0,0x0
--- a/gas/testsuite/gas/i386/evex-wig1.d
+++ b/gas/testsuite/gas/i386/evex-wig1.d
@@ -31,6 +31,7 @@ Disassembly of section .text:
 [ 	]*[a-f0-9]+:	62 f1 fd 08 6e 40 01 	vmovd  0x4\(%eax\),%xmm0
 [ 	]*[a-f0-9]+:	62 f1 fd 08 7e c0    	vmovd  %xmm0,%eax
 [ 	]*[a-f0-9]+:	62 f1 fd 08 7e 40 01 	vmovd  %xmm0,0x4\(%eax\)
+[ 	]*[a-f0-9]+:	62 f2 fd 08 7c c0    	vpbroadcastd %eax,%xmm0
 [ 	]*[a-f0-9]+:	62 f3 fd 08 14 c0 00 	vpextrb \$0x0,%xmm0,%eax
 [ 	]*[a-f0-9]+:	62 f3 fd 08 14 40 01 00 	vpextrb \$0x0,%xmm0,0x1\(%eax\)
 [ 	]*[a-f0-9]+:	62 f3 fd 08 16 c0 00 	vpextrd \$0x0,%xmm0,%eax
--- a/opcodes/i386-dis-evex.h
+++ b/opcodes/i386-dis-evex.h
@@ -2167,7 +2167,7 @@ static const struct dis386 evex_table[][
   {
     { Bad_Opcode },
     { Bad_Opcode },
-    { "vpbroadcast%LW",	{ XM, Rdq }, 0 },
+    { "vpbroadcastK",	{ XM, Rdq }, 0 },
   },
   /* PREFIX_EVEX_0F387D */
   {






More information about the Binutils mailing list