aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2007-10-04 22:02:10 +0000
committerH.J. Lu <hjl.tools@gmail.com>2007-10-04 22:02:10 +0000
commitf2a421c44585a21234dd7e742a680fc36130f721 (patch)
tree9d8b18a1045345e06d81a22b3b946d6d467448ff
parentc8ab98e0eb4ece1bde68bc45c16a2f6db8ac065f (diff)
downloadgdb-f2a421c44585a21234dd7e742a680fc36130f721.zip
gdb-f2a421c44585a21234dd7e742a680fc36130f721.tar.gz
gdb-f2a421c44585a21234dd7e742a680fc36130f721.tar.bz2
gas/testsuite/
2007-10-04 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/simd.s: Add tests for unpckhpd and unpckhps. * gas/i386/x86-64-simd.s: Likewise. * gas/i386/simd-intel.d: Updated. * gas/i386/simd.d: Likewise. * gas/i386/x86-64-simd-intel.d: Likewise. * gas/i386/x86-64-simd.d: Likewise. opcodes/ 2007-10-04 H.J. Lu <hongjiu.lu@intel.com> * i386-dis.c (dis386_twobyte): Use EXx instead of EXq on unpckhpX and unpckhpX.
-rw-r--r--gas/testsuite/ChangeLog10
-rw-r--r--gas/testsuite/gas/i386/simd-intel.d8
-rw-r--r--gas/testsuite/gas/i386/simd.d8
-rw-r--r--gas/testsuite/gas/i386/simd.s9
-rw-r--r--gas/testsuite/gas/i386/x86-64-simd-intel.d74
-rw-r--r--gas/testsuite/gas/i386/x86-64-simd.d74
-rw-r--r--gas/testsuite/gas/i386/x86-64-simd.s9
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/i386-dis.c4
9 files changed, 133 insertions, 68 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index b097e1c..dbf13ee 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2007-10-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gas/i386/simd.s: Add tests for unpckhpd and unpckhps.
+ * gas/i386/x86-64-simd.s: Likewise.
+
+ * gas/i386/simd-intel.d: Updated.
+ * gas/i386/simd.d: Likewise.
+ * gas/i386/x86-64-simd-intel.d: Likewise.
+ * gas/i386/x86-64-simd.d: Likewise.
+
2007-10-04 David Daney <ddaney@avtrex.com>
* gas/mips/odd-float.d, gas/mips/odd-float.s: New test.
diff --git a/gas/testsuite/gas/i386/simd-intel.d b/gas/testsuite/gas/i386/simd-intel.d
index a8503a4..9e3a080 100644
--- a/gas/testsuite/gas/i386/simd-intel.d
+++ b/gas/testsuite/gas/i386/simd-intel.d
@@ -85,6 +85,10 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 66 0f 38 34 00 pmovzxwq xmm0,DWORD PTR \[eax\]
[ ]*[a-f0-9]+: 66 0f 38 35 00 pmovzxdq xmm0,QWORD PTR \[eax\]
[ ]*[a-f0-9]+: 66 0f 3a 21 00 00 insertps xmm0,DWORD PTR \[eax\],0x0
+[ ]*[a-f0-9]+: 66 0f 15 08 unpckhpd xmm1,XMMWORD PTR \[eax\]
+[ ]*[a-f0-9]+: 0f 15 08 unpckhps xmm1,XMMWORD PTR \[eax\]
+[ ]*[a-f0-9]+: 66 0f 14 08 unpcklpd xmm1,XMMWORD PTR \[eax\]
+[ ]*[a-f0-9]+: 0f 14 08 unpcklps xmm1,XMMWORD PTR \[eax\]
[ ]*[a-f0-9]+: f2 0f d0 0d 78 56 34 12 addsubps xmm1,XMMWORD PTR ds:0x12345678
[ ]*[a-f0-9]+: 66 0f 2f 0d 78 56 34 12 comisd xmm1,QWORD PTR ds:0x12345678
[ ]*[a-f0-9]+: 0f 2f 0d 78 56 34 12 comiss xmm1,DWORD PTR ds:0x12345678
@@ -162,4 +166,8 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 66 0f 38 34 00 pmovzxwq xmm0,DWORD PTR \[eax\]
[ ]*[a-f0-9]+: 66 0f 38 35 00 pmovzxdq xmm0,QWORD PTR \[eax\]
[ ]*[a-f0-9]+: 66 0f 3a 21 00 00 insertps xmm0,DWORD PTR \[eax\],0x0
+[ ]*[a-f0-9]+: 66 0f 15 00 unpckhpd xmm0,XMMWORD PTR \[eax\]
+[ ]*[a-f0-9]+: 0f 15 00 unpckhps xmm0,XMMWORD PTR \[eax\]
+[ ]*[a-f0-9]+: 66 0f 14 00 unpcklpd xmm0,XMMWORD PTR \[eax\]
+[ ]*[a-f0-9]+: 0f 14 00 unpcklps xmm0,XMMWORD PTR \[eax\]
#pass
diff --git a/gas/testsuite/gas/i386/simd.d b/gas/testsuite/gas/i386/simd.d
index 1e76bb1..d16d3c5 100644
--- a/gas/testsuite/gas/i386/simd.d
+++ b/gas/testsuite/gas/i386/simd.d
@@ -84,6 +84,10 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 66 0f 38 34 00 pmovzxwq \(%eax\),%xmm0
[ ]*[a-f0-9]+: 66 0f 38 35 00 pmovzxdq \(%eax\),%xmm0
[ ]*[a-f0-9]+: 66 0f 3a 21 00 00 insertps \$0x0,\(%eax\),%xmm0
+[ ]*[a-f0-9]+: 66 0f 15 08 unpckhpd \(%eax\),%xmm1
+[ ]*[a-f0-9]+: 0f 15 08 unpckhps \(%eax\),%xmm1
+[ ]*[a-f0-9]+: 66 0f 14 08 unpcklpd \(%eax\),%xmm1
+[ ]*[a-f0-9]+: 0f 14 08 unpcklps \(%eax\),%xmm1
[ ]*[a-f0-9]+: f2 0f d0 0d 78 56 34 12 addsubps 0x12345678,%xmm1
[ ]*[a-f0-9]+: 66 0f 2f 0d 78 56 34 12 comisd 0x12345678,%xmm1
[ ]*[a-f0-9]+: 0f 2f 0d 78 56 34 12 comiss 0x12345678,%xmm1
@@ -161,4 +165,8 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 66 0f 38 34 00 pmovzxwq \(%eax\),%xmm0
[ ]*[a-f0-9]+: 66 0f 38 35 00 pmovzxdq \(%eax\),%xmm0
[ ]*[a-f0-9]+: 66 0f 3a 21 00 00 insertps \$0x0,\(%eax\),%xmm0
+[ ]*[a-f0-9]+: 66 0f 15 00 unpckhpd \(%eax\),%xmm0
+[ ]*[a-f0-9]+: 0f 15 00 unpckhps \(%eax\),%xmm0
+[ ]*[a-f0-9]+: 66 0f 14 00 unpcklpd \(%eax\),%xmm0
+[ ]*[a-f0-9]+: 0f 14 00 unpcklps \(%eax\),%xmm0
#pass
diff --git a/gas/testsuite/gas/i386/simd.s b/gas/testsuite/gas/i386/simd.s
index b600a6d..dc7bae1 100644
--- a/gas/testsuite/gas/i386/simd.s
+++ b/gas/testsuite/gas/i386/simd.s
@@ -80,6 +80,11 @@ _start:
pmovzxdq (%eax),%xmm0
insertps $0x0,(%eax),%xmm0
+ unpckhpd (%eax),%xmm1
+ unpckhps (%eax),%xmm1
+ unpcklpd (%eax),%xmm1
+ unpcklps (%eax),%xmm1
+
.intel_syntax noprefix
addsubps xmm1,XMMWORD PTR ds:0x12345678
@@ -159,3 +164,7 @@ pmovzxwd xmm0,QWORD PTR [eax]
pmovzxwq xmm0,DWORD PTR [eax]
pmovzxdq xmm0,QWORD PTR [eax]
insertps xmm0,DWORD PTR [eax],0x0
+unpckhpd xmm0,XMMWORD PTR [eax]
+unpckhps xmm0,XMMWORD PTR [eax]
+unpcklpd xmm0,XMMWORD PTR [eax]
+unpcklps xmm0,XMMWORD PTR [eax]
diff --git a/gas/testsuite/gas/i386/x86-64-simd-intel.d b/gas/testsuite/gas/i386/x86-64-simd-intel.d
index 89d0b27..dea1fc0 100644
--- a/gas/testsuite/gas/i386/x86-64-simd-intel.d
+++ b/gas/testsuite/gas/i386/x86-64-simd-intel.d
@@ -91,39 +91,43 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 66 0f 38 34 00 pmovzxwq xmm0,DWORD PTR \[rax\]
[ ]*[a-f0-9]+: 66 0f 38 35 00 pmovzxdq xmm0,QWORD PTR \[rax\]
[ ]*[a-f0-9]+: 66 0f 3a 21 00 00 insertps xmm0,DWORD PTR \[rax\],0x0
-[ ]*[a-f0-9]+: f2 0f d0 0d 78 56 34 12 addsubps xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234585e <_start\+0x1234585e>
-[ ]*[a-f0-9]+: 66 0f 2f 0d 78 56 34 12 comisd xmm1,QWORD PTR \[rip\+0x12345678\] # 12345866 <_start\+0x12345866>
-[ ]*[a-f0-9]+: 0f 2f 0d 78 56 34 12 comiss xmm1,DWORD PTR \[rip\+0x12345678\] # 1234586d <_start\+0x1234586d>
-[ ]*[a-f0-9]+: f3 0f e6 0d 78 56 34 12 cvtdq2pd xmm1,QWORD PTR \[rip\+0x12345678\] # 12345875 <_start\+0x12345875>
-[ ]*[a-f0-9]+: f2 0f e6 0d 78 56 34 12 cvtpd2dq xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234587d <_start\+0x1234587d>
-[ ]*[a-f0-9]+: 0f 5a 0d 78 56 34 12 cvtps2pd xmm1,QWORD PTR \[rip\+0x12345678\] # 12345884 <_start\+0x12345884>
-[ ]*[a-f0-9]+: f3 0f 5b 0d 78 56 34 12 cvttps2dq xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234588c <_start\+0x1234588c>
-[ ]*[a-f0-9]+: f2 0f 7c 0d 78 56 34 12 haddps xmm1,XMMWORD PTR \[rip\+0x12345678\] # 12345894 <_start\+0x12345894>
-[ ]*[a-f0-9]+: f3 0f 7f 0d 78 56 34 12 movdqu XMMWORD PTR \[rip\+0x12345678\],xmm1 # 1234589c <_start\+0x1234589c>
-[ ]*[a-f0-9]+: f3 0f 6f 0d 78 56 34 12 movdqu xmm1,XMMWORD PTR \[rip\+0x12345678\] # 123458a4 <_start\+0x123458a4>
-[ ]*[a-f0-9]+: 66 0f 17 0d 78 56 34 12 movhpd QWORD PTR \[rip\+0x12345678\],xmm1 # 123458ac <_start\+0x123458ac>
-[ ]*[a-f0-9]+: 66 0f 16 0d 78 56 34 12 movhpd xmm1,QWORD PTR \[rip\+0x12345678\] # 123458b4 <_start\+0x123458b4>
-[ ]*[a-f0-9]+: 0f 17 0d 78 56 34 12 movhps QWORD PTR \[rip\+0x12345678\],xmm1 # 123458bb <_start\+0x123458bb>
-[ ]*[a-f0-9]+: 0f 16 0d 78 56 34 12 movhps xmm1,QWORD PTR \[rip\+0x12345678\] # 123458c2 <_start\+0x123458c2>
-[ ]*[a-f0-9]+: 66 0f 13 0d 78 56 34 12 movlpd QWORD PTR \[rip\+0x12345678\],xmm1 # 123458ca <_start\+0x123458ca>
-[ ]*[a-f0-9]+: 66 0f 12 0d 78 56 34 12 movlpd xmm1,QWORD PTR \[rip\+0x12345678\] # 123458d2 <_start\+0x123458d2>
-[ ]*[a-f0-9]+: 0f 13 0d 78 56 34 12 movlps QWORD PTR \[rip\+0x12345678\],xmm1 # 123458d9 <_start\+0x123458d9>
-[ ]*[a-f0-9]+: 0f 12 0d 78 56 34 12 movlps xmm1,QWORD PTR \[rip\+0x12345678\] # 123458e0 <_start\+0x123458e0>
-[ ]*[a-f0-9]+: 66 0f d6 0d 78 56 34 12 movq QWORD PTR \[rip\+0x12345678\],xmm1 # 123458e8 <_start\+0x123458e8>
-[ ]*[a-f0-9]+: f3 0f 7e 0d 78 56 34 12 movq xmm1,QWORD PTR \[rip\+0x12345678\] # 123458f0 <_start\+0x123458f0>
-[ ]*[a-f0-9]+: f3 0f 16 0d 78 56 34 12 movshdup xmm1,XMMWORD PTR \[rip\+0x12345678\] # 123458f8 <_start\+0x123458f8>
-[ ]*[a-f0-9]+: f3 0f 12 0d 78 56 34 12 movsldup xmm1,XMMWORD PTR \[rip\+0x12345678\] # 12345900 <_start\+0x12345900>
-[ ]*[a-f0-9]+: f3 0f 70 0d 78 56 34 12 90 pshufhw xmm1,XMMWORD PTR \[rip\+0x12345678\],0x90 # 12345909 <_start\+0x12345909>
-[ ]*[a-f0-9]+: f2 0f 70 0d 78 56 34 12 90 pshuflw xmm1,XMMWORD PTR \[rip\+0x12345678\],0x90 # 12345912 <_start\+0x12345912>
-[ ]*[a-f0-9]+: 0f 60 0d 78 56 34 12 punpcklbw mm1,DWORD PTR \[rip\+0x12345678\] # 12345919 <_start\+0x12345919>
-[ ]*[a-f0-9]+: 0f 62 0d 78 56 34 12 punpckldq mm1,DWORD PTR \[rip\+0x12345678\] # 12345920 <_start\+0x12345920>
-[ ]*[a-f0-9]+: 0f 61 0d 78 56 34 12 punpcklwd mm1,DWORD PTR \[rip\+0x12345678\] # 12345927 <_start\+0x12345927>
-[ ]*[a-f0-9]+: 66 0f 60 0d 78 56 34 12 punpcklbw xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234592f <_start\+0x1234592f>
-[ ]*[a-f0-9]+: 66 0f 62 0d 78 56 34 12 punpckldq xmm1,XMMWORD PTR \[rip\+0x12345678\] # 12345937 <_start\+0x12345937>
-[ ]*[a-f0-9]+: 66 0f 61 0d 78 56 34 12 punpcklwd xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234593f <_start\+0x1234593f>
-[ ]*[a-f0-9]+: 66 0f 6c 0d 78 56 34 12 punpcklqdq xmm1,XMMWORD PTR \[rip\+0x12345678\] # 12345947 <_start\+0x12345947>
-[ ]*[a-f0-9]+: 66 0f 2e 0d 78 56 34 12 ucomisd xmm1,QWORD PTR \[rip\+0x12345678\] # 1234594f <_start\+0x1234594f>
-[ ]*[a-f0-9]+: 0f 2e 0d 78 56 34 12 ucomiss xmm1,DWORD PTR \[rip\+0x12345678\] # 12345956 <_start\+0x12345956>
+[ ]*[a-f0-9]+: 66 0f 15 08 unpckhpd xmm1,XMMWORD PTR \[rax\]
+[ ]*[a-f0-9]+: 0f 15 08 unpckhps xmm1,XMMWORD PTR \[rax\]
+[ ]*[a-f0-9]+: 66 0f 14 08 unpcklpd xmm1,XMMWORD PTR \[rax\]
+[ ]*[a-f0-9]+: 0f 14 08 unpcklps xmm1,XMMWORD PTR \[rax\]
+[ ]*[a-f0-9]+: f2 0f d0 0d 78 56 34 12 addsubps xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234586c <_start\+0x1234586c>
+[ ]*[a-f0-9]+: 66 0f 2f 0d 78 56 34 12 comisd xmm1,QWORD PTR \[rip\+0x12345678\] # 12345874 <_start\+0x12345874>
+[ ]*[a-f0-9]+: 0f 2f 0d 78 56 34 12 comiss xmm1,DWORD PTR \[rip\+0x12345678\] # 1234587b <_start\+0x1234587b>
+[ ]*[a-f0-9]+: f3 0f e6 0d 78 56 34 12 cvtdq2pd xmm1,QWORD PTR \[rip\+0x12345678\] # 12345883 <_start\+0x12345883>
+[ ]*[a-f0-9]+: f2 0f e6 0d 78 56 34 12 cvtpd2dq xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234588b <_start\+0x1234588b>
+[ ]*[a-f0-9]+: 0f 5a 0d 78 56 34 12 cvtps2pd xmm1,QWORD PTR \[rip\+0x12345678\] # 12345892 <_start\+0x12345892>
+[ ]*[a-f0-9]+: f3 0f 5b 0d 78 56 34 12 cvttps2dq xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234589a <_start\+0x1234589a>
+[ ]*[a-f0-9]+: f2 0f 7c 0d 78 56 34 12 haddps xmm1,XMMWORD PTR \[rip\+0x12345678\] # 123458a2 <_start\+0x123458a2>
+[ ]*[a-f0-9]+: f3 0f 7f 0d 78 56 34 12 movdqu XMMWORD PTR \[rip\+0x12345678\],xmm1 # 123458aa <_start\+0x123458aa>
+[ ]*[a-f0-9]+: f3 0f 6f 0d 78 56 34 12 movdqu xmm1,XMMWORD PTR \[rip\+0x12345678\] # 123458b2 <_start\+0x123458b2>
+[ ]*[a-f0-9]+: 66 0f 17 0d 78 56 34 12 movhpd QWORD PTR \[rip\+0x12345678\],xmm1 # 123458ba <_start\+0x123458ba>
+[ ]*[a-f0-9]+: 66 0f 16 0d 78 56 34 12 movhpd xmm1,QWORD PTR \[rip\+0x12345678\] # 123458c2 <_start\+0x123458c2>
+[ ]*[a-f0-9]+: 0f 17 0d 78 56 34 12 movhps QWORD PTR \[rip\+0x12345678\],xmm1 # 123458c9 <_start\+0x123458c9>
+[ ]*[a-f0-9]+: 0f 16 0d 78 56 34 12 movhps xmm1,QWORD PTR \[rip\+0x12345678\] # 123458d0 <_start\+0x123458d0>
+[ ]*[a-f0-9]+: 66 0f 13 0d 78 56 34 12 movlpd QWORD PTR \[rip\+0x12345678\],xmm1 # 123458d8 <_start\+0x123458d8>
+[ ]*[a-f0-9]+: 66 0f 12 0d 78 56 34 12 movlpd xmm1,QWORD PTR \[rip\+0x12345678\] # 123458e0 <_start\+0x123458e0>
+[ ]*[a-f0-9]+: 0f 13 0d 78 56 34 12 movlps QWORD PTR \[rip\+0x12345678\],xmm1 # 123458e7 <_start\+0x123458e7>
+[ ]*[a-f0-9]+: 0f 12 0d 78 56 34 12 movlps xmm1,QWORD PTR \[rip\+0x12345678\] # 123458ee <_start\+0x123458ee>
+[ ]*[a-f0-9]+: 66 0f d6 0d 78 56 34 12 movq QWORD PTR \[rip\+0x12345678\],xmm1 # 123458f6 <_start\+0x123458f6>
+[ ]*[a-f0-9]+: f3 0f 7e 0d 78 56 34 12 movq xmm1,QWORD PTR \[rip\+0x12345678\] # 123458fe <_start\+0x123458fe>
+[ ]*[a-f0-9]+: f3 0f 16 0d 78 56 34 12 movshdup xmm1,XMMWORD PTR \[rip\+0x12345678\] # 12345906 <_start\+0x12345906>
+[ ]*[a-f0-9]+: f3 0f 12 0d 78 56 34 12 movsldup xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234590e <_start\+0x1234590e>
+[ ]*[a-f0-9]+: f3 0f 70 0d 78 56 34 12 90 pshufhw xmm1,XMMWORD PTR \[rip\+0x12345678\],0x90 # 12345917 <_start\+0x12345917>
+[ ]*[a-f0-9]+: f2 0f 70 0d 78 56 34 12 90 pshuflw xmm1,XMMWORD PTR \[rip\+0x12345678\],0x90 # 12345920 <_start\+0x12345920>
+[ ]*[a-f0-9]+: 0f 60 0d 78 56 34 12 punpcklbw mm1,DWORD PTR \[rip\+0x12345678\] # 12345927 <_start\+0x12345927>
+[ ]*[a-f0-9]+: 0f 62 0d 78 56 34 12 punpckldq mm1,DWORD PTR \[rip\+0x12345678\] # 1234592e <_start\+0x1234592e>
+[ ]*[a-f0-9]+: 0f 61 0d 78 56 34 12 punpcklwd mm1,DWORD PTR \[rip\+0x12345678\] # 12345935 <_start\+0x12345935>
+[ ]*[a-f0-9]+: 66 0f 60 0d 78 56 34 12 punpcklbw xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234593d <_start\+0x1234593d>
+[ ]*[a-f0-9]+: 66 0f 62 0d 78 56 34 12 punpckldq xmm1,XMMWORD PTR \[rip\+0x12345678\] # 12345945 <_start\+0x12345945>
+[ ]*[a-f0-9]+: 66 0f 61 0d 78 56 34 12 punpcklwd xmm1,XMMWORD PTR \[rip\+0x12345678\] # 1234594d <_start\+0x1234594d>
+[ ]*[a-f0-9]+: 66 0f 6c 0d 78 56 34 12 punpcklqdq xmm1,XMMWORD PTR \[rip\+0x12345678\] # 12345955 <_start\+0x12345955>
+[ ]*[a-f0-9]+: 66 0f 2e 0d 78 56 34 12 ucomisd xmm1,QWORD PTR \[rip\+0x12345678\] # 1234595d <_start\+0x1234595d>
+[ ]*[a-f0-9]+: 0f 2e 0d 78 56 34 12 ucomiss xmm1,DWORD PTR \[rip\+0x12345678\] # 12345964 <_start\+0x12345964>
[ ]*[a-f0-9]+: f2 0f c2 00 00 cmpeqsd xmm0,QWORD PTR \[rax\]
[ ]*[a-f0-9]+: f3 0f c2 00 00 cmpeqss xmm0,DWORD PTR \[rax\]
[ ]*[a-f0-9]+: 66 0f 2a 00 cvtpi2pd xmm0,QWORD PTR \[rax\]
@@ -174,4 +178,8 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 66 0f 38 34 00 pmovzxwq xmm0,DWORD PTR \[rax\]
[ ]*[a-f0-9]+: 66 0f 38 35 00 pmovzxdq xmm0,QWORD PTR \[rax\]
[ ]*[a-f0-9]+: 66 0f 3a 21 00 00 insertps xmm0,DWORD PTR \[rax\],0x0
+[ ]*[a-f0-9]+: 66 0f 15 00 unpckhpd xmm0,XMMWORD PTR \[rax\]
+[ ]*[a-f0-9]+: 0f 15 00 unpckhps xmm0,XMMWORD PTR \[rax\]
+[ ]*[a-f0-9]+: 66 0f 14 00 unpcklpd xmm0,XMMWORD PTR \[rax\]
+[ ]*[a-f0-9]+: 0f 14 00 unpcklps xmm0,XMMWORD PTR \[rax\]
#pass
diff --git a/gas/testsuite/gas/i386/x86-64-simd.d b/gas/testsuite/gas/i386/x86-64-simd.d
index 3ff0385..9d6d2dc 100644
--- a/gas/testsuite/gas/i386/x86-64-simd.d
+++ b/gas/testsuite/gas/i386/x86-64-simd.d
@@ -90,39 +90,43 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 66 0f 38 34 00 pmovzxwq \(%rax\),%xmm0
[ ]*[a-f0-9]+: 66 0f 38 35 00 pmovzxdq \(%rax\),%xmm0
[ ]*[a-f0-9]+: 66 0f 3a 21 00 00 insertps \$0x0,\(%rax\),%xmm0
-[ ]*[a-f0-9]+: f2 0f d0 0d 78 56 34 12 addsubps 0x12345678\(%rip\),%xmm1 # 1234585e <_start\+0x1234585e>
-[ ]*[a-f0-9]+: 66 0f 2f 0d 78 56 34 12 comisd 0x12345678\(%rip\),%xmm1 # 12345866 <_start\+0x12345866>
-[ ]*[a-f0-9]+: 0f 2f 0d 78 56 34 12 comiss 0x12345678\(%rip\),%xmm1 # 1234586d <_start\+0x1234586d>
-[ ]*[a-f0-9]+: f3 0f e6 0d 78 56 34 12 cvtdq2pd 0x12345678\(%rip\),%xmm1 # 12345875 <_start\+0x12345875>
-[ ]*[a-f0-9]+: f2 0f e6 0d 78 56 34 12 cvtpd2dq 0x12345678\(%rip\),%xmm1 # 1234587d <_start\+0x1234587d>
-[ ]*[a-f0-9]+: 0f 5a 0d 78 56 34 12 cvtps2pd 0x12345678\(%rip\),%xmm1 # 12345884 <_start\+0x12345884>
-[ ]*[a-f0-9]+: f3 0f 5b 0d 78 56 34 12 cvttps2dq 0x12345678\(%rip\),%xmm1 # 1234588c <_start\+0x1234588c>
-[ ]*[a-f0-9]+: f2 0f 7c 0d 78 56 34 12 haddps 0x12345678\(%rip\),%xmm1 # 12345894 <_start\+0x12345894>
-[ ]*[a-f0-9]+: f3 0f 7f 0d 78 56 34 12 movdqu %xmm1,0x12345678\(%rip\) # 1234589c <_start\+0x1234589c>
-[ ]*[a-f0-9]+: f3 0f 6f 0d 78 56 34 12 movdqu 0x12345678\(%rip\),%xmm1 # 123458a4 <_start\+0x123458a4>
-[ ]*[a-f0-9]+: 66 0f 17 0d 78 56 34 12 movhpd %xmm1,0x12345678\(%rip\) # 123458ac <_start\+0x123458ac>
-[ ]*[a-f0-9]+: 66 0f 16 0d 78 56 34 12 movhpd 0x12345678\(%rip\),%xmm1 # 123458b4 <_start\+0x123458b4>
-[ ]*[a-f0-9]+: 0f 17 0d 78 56 34 12 movhps %xmm1,0x12345678\(%rip\) # 123458bb <_start\+0x123458bb>
-[ ]*[a-f0-9]+: 0f 16 0d 78 56 34 12 movhps 0x12345678\(%rip\),%xmm1 # 123458c2 <_start\+0x123458c2>
-[ ]*[a-f0-9]+: 66 0f 13 0d 78 56 34 12 movlpd %xmm1,0x12345678\(%rip\) # 123458ca <_start\+0x123458ca>
-[ ]*[a-f0-9]+: 66 0f 12 0d 78 56 34 12 movlpd 0x12345678\(%rip\),%xmm1 # 123458d2 <_start\+0x123458d2>
-[ ]*[a-f0-9]+: 0f 13 0d 78 56 34 12 movlps %xmm1,0x12345678\(%rip\) # 123458d9 <_start\+0x123458d9>
-[ ]*[a-f0-9]+: 0f 12 0d 78 56 34 12 movlps 0x12345678\(%rip\),%xmm1 # 123458e0 <_start\+0x123458e0>
-[ ]*[a-f0-9]+: 66 0f d6 0d 78 56 34 12 movq %xmm1,0x12345678\(%rip\) # 123458e8 <_start\+0x123458e8>
-[ ]*[a-f0-9]+: f3 0f 7e 0d 78 56 34 12 movq 0x12345678\(%rip\),%xmm1 # 123458f0 <_start\+0x123458f0>
-[ ]*[a-f0-9]+: f3 0f 16 0d 78 56 34 12 movshdup 0x12345678\(%rip\),%xmm1 # 123458f8 <_start\+0x123458f8>
-[ ]*[a-f0-9]+: f3 0f 12 0d 78 56 34 12 movsldup 0x12345678\(%rip\),%xmm1 # 12345900 <_start\+0x12345900>
-[ ]*[a-f0-9]+: f3 0f 70 0d 78 56 34 12 90 pshufhw \$0x90,0x12345678\(%rip\),%xmm1 # 12345909 <_start\+0x12345909>
-[ ]*[a-f0-9]+: f2 0f 70 0d 78 56 34 12 90 pshuflw \$0x90,0x12345678\(%rip\),%xmm1 # 12345912 <_start\+0x12345912>
-[ ]*[a-f0-9]+: 0f 60 0d 78 56 34 12 punpcklbw 0x12345678\(%rip\),%mm1 # 12345919 <_start\+0x12345919>
-[ ]*[a-f0-9]+: 0f 62 0d 78 56 34 12 punpckldq 0x12345678\(%rip\),%mm1 # 12345920 <_start\+0x12345920>
-[ ]*[a-f0-9]+: 0f 61 0d 78 56 34 12 punpcklwd 0x12345678\(%rip\),%mm1 # 12345927 <_start\+0x12345927>
-[ ]*[a-f0-9]+: 66 0f 60 0d 78 56 34 12 punpcklbw 0x12345678\(%rip\),%xmm1 # 1234592f <_start\+0x1234592f>
-[ ]*[a-f0-9]+: 66 0f 62 0d 78 56 34 12 punpckldq 0x12345678\(%rip\),%xmm1 # 12345937 <_start\+0x12345937>
-[ ]*[a-f0-9]+: 66 0f 61 0d 78 56 34 12 punpcklwd 0x12345678\(%rip\),%xmm1 # 1234593f <_start\+0x1234593f>
-[ ]*[a-f0-9]+: 66 0f 6c 0d 78 56 34 12 punpcklqdq 0x12345678\(%rip\),%xmm1 # 12345947 <_start\+0x12345947>
-[ ]*[a-f0-9]+: 66 0f 2e 0d 78 56 34 12 ucomisd 0x12345678\(%rip\),%xmm1 # 1234594f <_start\+0x1234594f>
-[ ]*[a-f0-9]+: 0f 2e 0d 78 56 34 12 ucomiss 0x12345678\(%rip\),%xmm1 # 12345956 <_start\+0x12345956>
+[ ]*[a-f0-9]+: 66 0f 15 08 unpckhpd \(%rax\),%xmm1
+[ ]*[a-f0-9]+: 0f 15 08 unpckhps \(%rax\),%xmm1
+[ ]*[a-f0-9]+: 66 0f 14 08 unpcklpd \(%rax\),%xmm1
+[ ]*[a-f0-9]+: 0f 14 08 unpcklps \(%rax\),%xmm1
+[ ]*[a-f0-9]+: f2 0f d0 0d 78 56 34 12 addsubps 0x12345678\(%rip\),%xmm1 # 1234586c <_start\+0x1234586c>
+[ ]*[a-f0-9]+: 66 0f 2f 0d 78 56 34 12 comisd 0x12345678\(%rip\),%xmm1 # 12345874 <_start\+0x12345874>
+[ ]*[a-f0-9]+: 0f 2f 0d 78 56 34 12 comiss 0x12345678\(%rip\),%xmm1 # 1234587b <_start\+0x1234587b>
+[ ]*[a-f0-9]+: f3 0f e6 0d 78 56 34 12 cvtdq2pd 0x12345678\(%rip\),%xmm1 # 12345883 <_start\+0x12345883>
+[ ]*[a-f0-9]+: f2 0f e6 0d 78 56 34 12 cvtpd2dq 0x12345678\(%rip\),%xmm1 # 1234588b <_start\+0x1234588b>
+[ ]*[a-f0-9]+: 0f 5a 0d 78 56 34 12 cvtps2pd 0x12345678\(%rip\),%xmm1 # 12345892 <_start\+0x12345892>
+[ ]*[a-f0-9]+: f3 0f 5b 0d 78 56 34 12 cvttps2dq 0x12345678\(%rip\),%xmm1 # 1234589a <_start\+0x1234589a>
+[ ]*[a-f0-9]+: f2 0f 7c 0d 78 56 34 12 haddps 0x12345678\(%rip\),%xmm1 # 123458a2 <_start\+0x123458a2>
+[ ]*[a-f0-9]+: f3 0f 7f 0d 78 56 34 12 movdqu %xmm1,0x12345678\(%rip\) # 123458aa <_start\+0x123458aa>
+[ ]*[a-f0-9]+: f3 0f 6f 0d 78 56 34 12 movdqu 0x12345678\(%rip\),%xmm1 # 123458b2 <_start\+0x123458b2>
+[ ]*[a-f0-9]+: 66 0f 17 0d 78 56 34 12 movhpd %xmm1,0x12345678\(%rip\) # 123458ba <_start\+0x123458ba>
+[ ]*[a-f0-9]+: 66 0f 16 0d 78 56 34 12 movhpd 0x12345678\(%rip\),%xmm1 # 123458c2 <_start\+0x123458c2>
+[ ]*[a-f0-9]+: 0f 17 0d 78 56 34 12 movhps %xmm1,0x12345678\(%rip\) # 123458c9 <_start\+0x123458c9>
+[ ]*[a-f0-9]+: 0f 16 0d 78 56 34 12 movhps 0x12345678\(%rip\),%xmm1 # 123458d0 <_start\+0x123458d0>
+[ ]*[a-f0-9]+: 66 0f 13 0d 78 56 34 12 movlpd %xmm1,0x12345678\(%rip\) # 123458d8 <_start\+0x123458d8>
+[ ]*[a-f0-9]+: 66 0f 12 0d 78 56 34 12 movlpd 0x12345678\(%rip\),%xmm1 # 123458e0 <_start\+0x123458e0>
+[ ]*[a-f0-9]+: 0f 13 0d 78 56 34 12 movlps %xmm1,0x12345678\(%rip\) # 123458e7 <_start\+0x123458e7>
+[ ]*[a-f0-9]+: 0f 12 0d 78 56 34 12 movlps 0x12345678\(%rip\),%xmm1 # 123458ee <_start\+0x123458ee>
+[ ]*[a-f0-9]+: 66 0f d6 0d 78 56 34 12 movq %xmm1,0x12345678\(%rip\) # 123458f6 <_start\+0x123458f6>
+[ ]*[a-f0-9]+: f3 0f 7e 0d 78 56 34 12 movq 0x12345678\(%rip\),%xmm1 # 123458fe <_start\+0x123458fe>
+[ ]*[a-f0-9]+: f3 0f 16 0d 78 56 34 12 movshdup 0x12345678\(%rip\),%xmm1 # 12345906 <_start\+0x12345906>
+[ ]*[a-f0-9]+: f3 0f 12 0d 78 56 34 12 movsldup 0x12345678\(%rip\),%xmm1 # 1234590e <_start\+0x1234590e>
+[ ]*[a-f0-9]+: f3 0f 70 0d 78 56 34 12 90 pshufhw \$0x90,0x12345678\(%rip\),%xmm1 # 12345917 <_start\+0x12345917>
+[ ]*[a-f0-9]+: f2 0f 70 0d 78 56 34 12 90 pshuflw \$0x90,0x12345678\(%rip\),%xmm1 # 12345920 <_start\+0x12345920>
+[ ]*[a-f0-9]+: 0f 60 0d 78 56 34 12 punpcklbw 0x12345678\(%rip\),%mm1 # 12345927 <_start\+0x12345927>
+[ ]*[a-f0-9]+: 0f 62 0d 78 56 34 12 punpckldq 0x12345678\(%rip\),%mm1 # 1234592e <_start\+0x1234592e>
+[ ]*[a-f0-9]+: 0f 61 0d 78 56 34 12 punpcklwd 0x12345678\(%rip\),%mm1 # 12345935 <_start\+0x12345935>
+[ ]*[a-f0-9]+: 66 0f 60 0d 78 56 34 12 punpcklbw 0x12345678\(%rip\),%xmm1 # 1234593d <_start\+0x1234593d>
+[ ]*[a-f0-9]+: 66 0f 62 0d 78 56 34 12 punpckldq 0x12345678\(%rip\),%xmm1 # 12345945 <_start\+0x12345945>
+[ ]*[a-f0-9]+: 66 0f 61 0d 78 56 34 12 punpcklwd 0x12345678\(%rip\),%xmm1 # 1234594d <_start\+0x1234594d>
+[ ]*[a-f0-9]+: 66 0f 6c 0d 78 56 34 12 punpcklqdq 0x12345678\(%rip\),%xmm1 # 12345955 <_start\+0x12345955>
+[ ]*[a-f0-9]+: 66 0f 2e 0d 78 56 34 12 ucomisd 0x12345678\(%rip\),%xmm1 # 1234595d <_start\+0x1234595d>
+[ ]*[a-f0-9]+: 0f 2e 0d 78 56 34 12 ucomiss 0x12345678\(%rip\),%xmm1 # 12345964 <_start\+0x12345964>
[ ]*[a-f0-9]+: f2 0f c2 00 00 cmpeqsd \(%rax\),%xmm0
[ ]*[a-f0-9]+: f3 0f c2 00 00 cmpeqss \(%rax\),%xmm0
[ ]*[a-f0-9]+: 66 0f 2a 00 cvtpi2pd \(%rax\),%xmm0
@@ -173,4 +177,8 @@ Disassembly of section .text:
[ ]*[a-f0-9]+: 66 0f 38 34 00 pmovzxwq \(%rax\),%xmm0
[ ]*[a-f0-9]+: 66 0f 38 35 00 pmovzxdq \(%rax\),%xmm0
[ ]*[a-f0-9]+: 66 0f 3a 21 00 00 insertps \$0x0,\(%rax\),%xmm0
+[ ]*[a-f0-9]+: 66 0f 15 00 unpckhpd \(%rax\),%xmm0
+[ ]*[a-f0-9]+: 0f 15 00 unpckhps \(%rax\),%xmm0
+[ ]*[a-f0-9]+: 66 0f 14 00 unpcklpd \(%rax\),%xmm0
+[ ]*[a-f0-9]+: 0f 14 00 unpcklps \(%rax\),%xmm0
#pass
diff --git a/gas/testsuite/gas/i386/x86-64-simd.s b/gas/testsuite/gas/i386/x86-64-simd.s
index a09a353..67bad4e 100644
--- a/gas/testsuite/gas/i386/x86-64-simd.s
+++ b/gas/testsuite/gas/i386/x86-64-simd.s
@@ -86,6 +86,11 @@ _start:
pmovzxdq (%rax),%xmm0
insertps $0x0,(%rax),%xmm0
+ unpckhpd (%rax),%xmm1
+ unpckhps (%rax),%xmm1
+ unpcklpd (%rax),%xmm1
+ unpcklps (%rax),%xmm1
+
.intel_syntax noprefix
addsubps xmm1,XMMWORD PTR [rip+0x12345678]
@@ -171,3 +176,7 @@ pmovzxwd xmm0,QWORD PTR [rax]
pmovzxwq xmm0,DWORD PTR [rax]
pmovzxdq xmm0,QWORD PTR [rax]
insertps xmm0,DWORD PTR [rax],0x0
+unpckhpd xmm0,XMMWORD PTR [rax]
+unpckhps xmm0,XMMWORD PTR [rax]
+unpcklpd xmm0,XMMWORD PTR [rax]
+unpcklps xmm0,XMMWORD PTR [rax]
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 485e3ed..b02c61f 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ * i386-dis.c (dis386_twobyte): Use EXx instead of EXq on
+ unpckhpX and unpckhpX.
+
2007-10-04 David Daney <ddaney@avtrex.com>
* mips-opc.c (mips_builtin_opcodes): Mark lwxc1 as working on FP_S
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index cb83f6f..b9708ef 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -1036,8 +1036,8 @@ static const struct dis386 dis386_twobyte[] = {
{ PREFIX_TABLE (PREFIX_0F11) },
{ PREFIX_TABLE (PREFIX_0F12) },
{ MOD_TABLE (MOD_0F13) },
- { "unpcklpX", { XM, EXq } },
- { "unpckhpX", { XM, EXq } },
+ { "unpcklpX", { XM, EXx } },
+ { "unpckhpX", { XM, EXx } },
{ PREFIX_TABLE (PREFIX_0F16) },
{ MOD_TABLE (MOD_0F17) },
/* 18 */