diff options
| author | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2017-08-11 09:52:30 +0000 |
|---|---|---|
| committer | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2017-08-11 09:52:30 +0000 |
| commit | 7426c97bc6448786c45f354c58a0b74dde6be6e7 (patch) | |
| tree | 45070b221ee297faa6aafe4787850264c73a6af5 /llvm/test/MC/Disassembler/ARM | |
| parent | 9b6b5d5a88b63f89f56708428175249e4a4e55f6 (diff) | |
| download | bcm5719-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.s | 33 | ||||
| -rw-r--r-- | llvm/test/MC/Disassembler/ARM/armv8.2a-dotprod-t32.s | 29 |
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 |

