summaryrefslogtreecommitdiffstats
path: root/llvm/test/MC
diff options
context:
space:
mode:
authorRafael Auler <rafaelauler@fb.com>2018-02-15 21:20:31 +0000
committerRafael Auler <rafaelauler@fb.com>2018-02-15 21:20:31 +0000
commitde9ad4ba848729f0826131a947fdbaae98df6d05 (patch)
tree235da52f857bfe603877b4767a9494b868cb6ab7 /llvm/test/MC
parent775c7af4f9ff934a85d4b6d521fffc7f5ac26cc0 (diff)
downloadbcm5719-llvm-de9ad4ba848729f0826131a947fdbaae98df6d05.tar.gz
bcm5719-llvm-de9ad4ba848729f0826131a947fdbaae98df6d05.zip
[X86][3DNOW] Teach decoder about AMD 3DNow! instrs
Summary: This patch makes the decoder understand old AMD 3DNow! instructions that have never been properly supported in the X86 disassembler, despite being supported in other subsystems. Hopefully this should make the X86 decoder more complete with respect to binaries containing legacy code. Reviewers: craig.topper Reviewed By: craig.topper Subscribers: llvm-commits, maksfb, bruno Differential Revision: https://reviews.llvm.org/D43311 llvm-svn: 325295
Diffstat (limited to 'llvm/test/MC')
-rw-r--r--llvm/test/MC/Disassembler/X86/amd3dnow.txt76
1 files changed, 76 insertions, 0 deletions
diff --git a/llvm/test/MC/Disassembler/X86/amd3dnow.txt b/llvm/test/MC/Disassembler/X86/amd3dnow.txt
new file mode 100644
index 00000000000..50a24f5f7fc
--- /dev/null
+++ b/llvm/test/MC/Disassembler/X86/amd3dnow.txt
@@ -0,0 +1,76 @@
+# RUN: llvm-mc --disassemble %s -triple=x86_64-unknown-linux-gnu | FileCheck %s
+
+# Reference: AMD64 Architecture Programmer's Manual Vol.3
+# Pub no. 24594 - Rev. 3.25 - Dec 2017 - pgs.468-469
+
+# CHECK: pfcmpge %mm0, %mm1
+0x0f 0x0f 0xc8 0x90
+
+# CHECK: pfcmpgt %mm2, %mm0
+0x0f 0x0f 0xc2 0xa0
+
+# CHECK: pfcmpeq %mm5, %mm2
+0x0f 0x0f 0xd5 0xb0
+
+# CHECK: pfmin %mm1, %mm0
+0x0f 0x0f 0xc1 0x94
+
+# CHECK: pfmax (%rax), %mm0
+0x0f 0x0f 0x00 0xa4
+
+# CHECK: pfmul %mm6, %mm0
+0x0f 0x0f 0xc6 0xb4
+
+# CHECK: pfrcp (%rbx), %mm1
+0x0f 0x0f 0x0b 0x96
+
+# CHECK: pfrcpit1 %mm0, %mm2
+0x0f 0x0f 0xd0 0xa6
+
+# CHECK: pfrcpit2 %mm0, %mm1
+0x0f 0x0f 0xc8 0xb6
+
+# CHECK: pfrsqrt (%eax), %mm1
+0x67 0x0f 0x0f 0x08 0x97
+
+# CHECK: pfrsqit1 (%ebx), %mm4
+0x67 0x0f 0x0f 0x23 0xa7
+
+# CHECK: pmulhrw %mm3, %mm0
+0x0f 0x0f 0xc3 0xb7
+
+# CHECK: pi2fw %mm1, %mm3
+0x0f 0x0f 0xd9 0x0c
+
+# CHECK: pf2iw %mm2, %mm4
+0x0f 0x0f 0xe2 0x1c
+
+# CHECK: pi2fd %mm3, %mm1
+0x0f 0x0f 0xcb 0x0d
+
+# CHECK: pf2id (%rdi,%r8), %mm1
+0x42 0x0f 0x0f 0x0c 0x07 0x1d
+
+# CHECK: pfnacc 16(%eax,%ebx,4), %mm0
+0x67 0x0f 0x0f 0x44 0x98 0x10 0x8a
+
+# CHECK: pfsub %mm1, %mm0
+0x0f 0x0f 0xc1 0x9a
+
+# CHECK: pfsubr %mm2, %mm1
+0x0f 0x0f 0xca 0xaa
+
+# CHECK: pswapd %mm1, %mm3
+0x0f 0x0f 0xd9 0xbb
+
+# CHECK: pfpnacc %mm0, %mm2
+0x0f 0x0f 0xd0 0x8e
+
+# CHECK: pfadd %mm4, %mm3
+0x0f 0x0f 0xdc 0x9e
+
+# CHECK: pfacc %mm1, %mm2
+0x0f 0x0f 0xd1 0xae
+
+# CHECK: pavgusb %mm1, %mm3
+0x0f 0x0f 0xd9 0xbf
OpenPOWER on IntegriCloud