aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2018-11-06 11:40:25 +0100
committerJan Beulich <jbeulich@suse.com>2018-11-06 11:40:25 +0100
commit563c7eef61a1835973b857eaa7372ec66fc91d64 (patch)
tree9b836e6a846c1b12f06e12493b1769e8818e8219 /gas
parent0aaca1d90a2f9f075852b2ea5907937cca037044 (diff)
downloadbinutils-563c7eef61a1835973b857eaa7372ec66fc91d64.zip
binutils-563c7eef61a1835973b857eaa7372ec66fc91d64.tar.gz
binutils-563c7eef61a1835973b857eaa7372ec66fc91d64.tar.bz2
x86: allow {store} to select alternative {,}PEXTRW encoding
The 0F C5 encoding is indeed a load type one (just that memory operands are not permitted), while the 0F 3A 15 encoding is obviously a store. Allow the pseudo prefixes to be used to select between them. Also move (without any change) the secondary AVX512BW templates next to the primary one.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/testsuite/gas/i386/pseudos.d11
-rw-r--r--gas/testsuite/gas/i386/pseudos.s12
-rw-r--r--gas/testsuite/gas/i386/x86-64-pseudos.d11
-rw-r--r--gas/testsuite/gas/i386/x86-64-pseudos.s12
5 files changed, 51 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 07d2b93..673e8d7 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,12 @@
2018-11-06 Jan Beulich <jbeulich@suse.com>
+ * testsuite/gas/i386/pseudos.s,
+ testsuite/gas/i386/x86-64-pseudos.s: Add pextrw / vpextrw cases.
+ * testsuite/gas/i386/pseudos.d,
+ testsuite/gas/i386/x86-64-pseudos.d: Adjust expectations.
+
+2018-11-06 Jan Beulich <jbeulich@suse.com>
+
* testsuite/gas/i386/avx-wig.s,
testsuite/gas/i386/x86-64-avx-wig.s: Add vandp*, vandnp*, vorp*,
vcmpeq*, and vcvtss2sd cases.
diff --git a/gas/testsuite/gas/i386/pseudos.d b/gas/testsuite/gas/i386/pseudos.d
index 65531bf..18804b2 100644
--- a/gas/testsuite/gas/i386/pseudos.d
+++ b/gas/testsuite/gas/i386/pseudos.d
@@ -1,5 +1,5 @@
#objdump: -drw
-#name: pseudo prefxes
+#name: pseudo prefixes
.*: +file format .*
@@ -264,6 +264,15 @@ Disassembly of section .text:
+[a-f0-9]+: 62 f1 fe 08 7e f8 vmovq %xmm0,%xmm7
+[a-f0-9]+: 62 f1 fe 08 7e f8 vmovq %xmm0,%xmm7
+[a-f0-9]+: 62 f1 fd 08 d6 c7 vmovq %xmm0,%xmm7
+ +[a-f0-9]+: 66 0f c5 f8 00 pextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: 66 0f c5 f8 00 pextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: 66 0f 3a 15 c7 00 pextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: c5 f9 c5 f8 00 vpextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: c5 f9 c5 f8 00 vpextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: c4 e3 79 15 c7 00 vpextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: 62 f1 7d 08 c5 f8 00 vpextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: 62 f1 7d 08 c5 f8 00 vpextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: 62 f3 7d 08 15 c7 00 vpextrw \$0x0,%xmm0,%edi
+[a-f0-9]+: 66 0f 1a c3 bndmov %bnd3,%bnd0
+[a-f0-9]+: 66 0f 1a c3 bndmov %bnd3,%bnd0
+[a-f0-9]+: 66 0f 1b d8 bndmov %bnd3,%bnd0
diff --git a/gas/testsuite/gas/i386/pseudos.s b/gas/testsuite/gas/i386/pseudos.s
index 95da66c..419a4c5 100644
--- a/gas/testsuite/gas/i386/pseudos.s
+++ b/gas/testsuite/gas/i386/pseudos.s
@@ -265,6 +265,18 @@ _start:
{load} {evex} vmovq %xmm0, %xmm7
{store} {evex} vmovq %xmm0, %xmm7
+ pextrw $0, %xmm0, %edi
+ {load} pextrw $0, %xmm0, %edi
+ {store} pextrw $0, %xmm0, %edi
+
+ vpextrw $0, %xmm0, %edi
+ {load} vpextrw $0, %xmm0, %edi
+ {store} vpextrw $0, %xmm0, %edi
+
+ {evex} vpextrw $0, %xmm0, %edi
+ {load} {evex} vpextrw $0, %xmm0, %edi
+ {store} {evex} vpextrw $0, %xmm0, %edi
+
bndmov %bnd3, %bnd0
{load} bndmov %bnd3, %bnd0
{store} bndmov %bnd3, %bnd0
diff --git a/gas/testsuite/gas/i386/x86-64-pseudos.d b/gas/testsuite/gas/i386/x86-64-pseudos.d
index d38f837..55c42a0 100644
--- a/gas/testsuite/gas/i386/x86-64-pseudos.d
+++ b/gas/testsuite/gas/i386/x86-64-pseudos.d
@@ -1,5 +1,5 @@
#objdump: -drw
-#name: x86-64 pseudo prefxes
+#name: x86-64 pseudo prefixes
.*: +file format .*
@@ -276,6 +276,15 @@ Disassembly of section .text:
+[a-f0-9]+: 62 f1 fe 08 7e f8 vmovq %xmm0,%xmm7
+[a-f0-9]+: 62 f1 fe 08 7e f8 vmovq %xmm0,%xmm7
+[a-f0-9]+: 62 f1 fd 08 d6 c7 vmovq %xmm0,%xmm7
+ +[a-f0-9]+: 66 0f c5 f8 00 pextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: 66 0f c5 f8 00 pextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: 66 0f 3a 15 c7 00 pextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: c5 f9 c5 f8 00 vpextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: c5 f9 c5 f8 00 vpextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: c4 e3 79 15 c7 00 vpextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: 62 f1 7d 08 c5 f8 00 vpextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: 62 f1 7d 08 c5 f8 00 vpextrw \$0x0,%xmm0,%edi
+ +[a-f0-9]+: 62 f3 7d 08 15 c7 00 vpextrw \$0x0,%xmm0,%edi
+[a-f0-9]+: 66 0f 1a c3 bndmov %bnd3,%bnd0
+[a-f0-9]+: 66 0f 1a c3 bndmov %bnd3,%bnd0
+[a-f0-9]+: 66 0f 1b d8 bndmov %bnd3,%bnd0
diff --git a/gas/testsuite/gas/i386/x86-64-pseudos.s b/gas/testsuite/gas/i386/x86-64-pseudos.s
index b5d9a8c..33712d3 100644
--- a/gas/testsuite/gas/i386/x86-64-pseudos.s
+++ b/gas/testsuite/gas/i386/x86-64-pseudos.s
@@ -277,6 +277,18 @@ _start:
{load} {evex} vmovq %xmm0, %xmm7
{store} {evex} vmovq %xmm0, %xmm7
+ pextrw $0, %xmm0, %edi
+ {load} pextrw $0, %xmm0, %edi
+ {store} pextrw $0, %xmm0, %edi
+
+ vpextrw $0, %xmm0, %edi
+ {load} vpextrw $0, %xmm0, %edi
+ {store} vpextrw $0, %xmm0, %edi
+
+ {evex} vpextrw $0, %xmm0, %edi
+ {load} {evex} vpextrw $0, %xmm0, %edi
+ {store} {evex} vpextrw $0, %xmm0, %edi
+
bndmov %bnd3, %bnd0
{load} bndmov %bnd3, %bnd0
{store} bndmov %bnd3, %bnd0