summaryrefslogtreecommitdiffstats
path: root/llvm/test/MC/Disassembler/ARM
diff options
context:
space:
mode:
authorSjoerd Meijer <sjoerd.meijer@arm.com>2017-08-11 09:52:30 +0000
committerSjoerd Meijer <sjoerd.meijer@arm.com>2017-08-11 09:52:30 +0000
commit7426c97bc6448786c45f354c58a0b74dde6be6e7 (patch)
tree45070b221ee297faa6aafe4787850264c73a6af5 /llvm/test/MC/Disassembler/ARM
parent9b6b5d5a88b63f89f56708428175249e4a4e55f6 (diff)
downloadbcm5719-llvm-7426c97bc6448786c45f354c58a0b74dde6be6e7.tar.gz
bcm5719-llvm-7426c97bc6448786c45f354c58a0b74dde6be6e7.zip
[ARM] Assembler support for the ARMv8.2a dot product instructions
Commit r310480 added the AArch64 ARMv8.2a dot product instructions; this adds the AArch32 instructions. Differential Revision: https://reviews.llvm.org/D36575 llvm-svn: 310701
Diffstat (limited to 'llvm/test/MC/Disassembler/ARM')
-rw-r--r--llvm/test/MC/Disassembler/ARM/armv8.2a-dotprod-a32.s33
-rw-r--r--llvm/test/MC/Disassembler/ARM/armv8.2a-dotprod-t32.s29
2 files changed, 62 insertions, 0 deletions
diff --git a/llvm/test/MC/Disassembler/ARM/armv8.2a-dotprod-a32.s b/llvm/test/MC/Disassembler/ARM/armv8.2a-dotprod-a32.s
new file mode 100644
index 00000000000..2107c1cf0d3
--- /dev/null
+++ b/llvm/test/MC/Disassembler/ARM/armv8.2a-dotprod-a32.s
@@ -0,0 +1,33 @@
+# RUN: llvm-mc -triple arm-none-linux-gnu -mattr=+dotprod --disassemble < %s | FileCheck %s
+# RUN: llvm-mc -triple arm-none-linux-gnu -mattr=-dotprod --disassemble < %s 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
+
+0x12,0x0d,0x21,0xfc
+0x02,0x0d,0x21,0xfc
+0x58,0x0d,0x22,0xfc
+0x48,0x0d,0x22,0xfc
+0x12,0x0d,0x21,0xfe
+0x22,0x0d,0x21,0xfe
+0x54,0x0d,0x22,0xfe
+0x64,0x0d,0x22,0xfe
+
+#CHECK: vudot.u8 d0, d1, d2
+#CHECK: vsdot.s8 d0, d1, d2
+#CHECK: vudot.u8 q0, q1, q4
+#CHECK: vsdot.s8 q0, q1, q4
+#CHECK: vudot.u8 d0, d1, d2[0]
+#CHECK: vsdot.s8 d0, d1, d2[1]
+#CHECK: vudot.u8 q0, q1, d4[0]
+#CHECK: vsdot.s8 q0, q1, d4[1]
+
+# without dot product enabled, the instructions get disassembled to these
+# coprocessor instructions:
+
+#CHECK-ERROR: stc2 p13, c0, [r1], #-72
+#CHECK-ERROR: stc2 p13, c0, [r1], #-8
+#CHECK-ERROR: stc2 p13, c0, [r2], #-352
+#CHECK-ERROR: stc2 p13, c0, [r2], #-288
+#CHECK-ERROR: mcr2 p13, #1, r0, c1, c2, #0
+#CHECK-ERROR: cdp2 p13, #2, c0, c1, c2, #1
+#CHECK-ERROR: mcr2 p13, #1, r0, c2, c4, #2
+#CHECK-ERROR: cdp2 p13, #2, c0, c2, c4, #3
+
diff --git a/llvm/test/MC/Disassembler/ARM/armv8.2a-dotprod-t32.s b/llvm/test/MC/Disassembler/ARM/armv8.2a-dotprod-t32.s
new file mode 100644
index 00000000000..3227e1cdfc3
--- /dev/null
+++ b/llvm/test/MC/Disassembler/ARM/armv8.2a-dotprod-t32.s
@@ -0,0 +1,29 @@
+# RUN: llvm-mc -triple thumbv7a -mattr=+dotprod --disassemble < %s | FileCheck %s
+# RUN: llvm-mc -triple thumbv7a -mattr=-dotprod --disassemble < %s 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
+
+[0x21,0xfc,0x12,0x0d]
+[0x21,0xfc,0x02,0x0d]
+[0x22,0xfc,0x58,0x0d]
+[0x22,0xfc,0x48,0x0d]
+[0x21,0xfe,0x12,0x0d]
+[0x21,0xfe,0x22,0x0d]
+[0x22,0xfe,0x54,0x0d]
+[0x22,0xfe,0x64,0x0d]
+
+#CHECK: vudot.u8 d0, d1, d2
+#CHECK: vsdot.s8 d0, d1, d2
+#CHECK: vudot.u8 q0, q1, q4
+#CHECK: vsdot.s8 q0, q1, q4
+#CHECK: vudot.u8 d0, d1, d2[0]
+#CHECK: vsdot.s8 d0, d1, d2[1]
+#CHECK: vudot.u8 q0, q1, d4[0]
+#CHECK: vsdot.s8 q0, q1, d4[1]
+
+#CHECK-ERROR: stc2 p13, c0, [r1], #-72
+#CHECK-ERROR: stc2 p13, c0, [r1], #-8
+#CHECK-ERROR: stc2 p13, c0, [r2], #-352
+#CHECK-ERROR: stc2 p13, c0, [r2], #-288
+#CHECK-ERROR: mcr2 p13, #1, r0, c1, c2, #0
+#CHECK-ERROR: cdp2 p13, #2, c0, c1, c2, #1
+#CHECK-ERROR: mcr2 p13, #1, r0, c2, c4, #2
+#CHECK-ERROR: cdp2 p13, #2, c0, c2, c4, #3
OpenPOWER on IntegriCloud