diff options
| author | Oliver Stannard <oliver.stannard@arm.com> | 2017-11-21 15:06:01 +0000 |
|---|---|---|
| committer | Oliver Stannard <oliver.stannard@arm.com> | 2017-11-21 15:06:01 +0000 |
| commit | d6ca9879bab19410cbfc8c41d4c4b7a8f3668699 (patch) | |
| tree | 387e236321f4d535880b571c98eae82c10fab7ca /llvm/test/MC/ARM | |
| parent | 1b7f8d5b043a2c97d4db17fdbd092cf097d8445d (diff) | |
| download | bcm5719-llvm-d6ca9879bab19410cbfc8c41d4c4b7a8f3668699.tar.gz bcm5719-llvm-d6ca9879bab19410cbfc8c41d4c4b7a8f3668699.zip | |
[ARM] Add diagnostics for SPR/DPR lists
Differential revision: https://reviews.llvm.org/D39195
llvm-svn: 318766
Diffstat (limited to 'llvm/test/MC/ARM')
| -rw-r--r-- | llvm/test/MC/ARM/vldm-vstm-diags.s | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/llvm/test/MC/ARM/vldm-vstm-diags.s b/llvm/test/MC/ARM/vldm-vstm-diags.s new file mode 100644 index 00000000000..854d5c55f2a --- /dev/null +++ b/llvm/test/MC/ARM/vldm-vstm-diags.s @@ -0,0 +1,44 @@ +@ RUN: not llvm-mc -triple armv7-eabi -filetype asm -o /dev/null %s 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-D32 +@ RUN: not llvm-mc -triple armv7-eabi -filetype asm -o /dev/null -mattr=+d16 %s 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-D16 + + // First operand must be a GPR + vldm s0, {s1, s2} +// CHECK: error: operand must be a register in range [r0, r15] +// CHECK-NEXT: vldm s0, {s1, s2} + + vstm s0, {s1, s2} +// CHECK: error: operand must be a register in range [r0, r15] +// CHECK-NEXT: vstm s0, {s1, s2} + + + // Second operand must be a list of SPRs or DPRs + vldm r0, {r1, r2} +// CHECK: error: invalid instruction, any one of the following would fix this: +// CHECK-NEXT: vldm r0, {r1, r2} +// CHECK: note: operand must be a list of registers in range [s0, s31] +// CHECK-D32: note: operand must be a list of registers in range [d0, d31] +// CHECK-D16: note: operand must be a list of registers in range [d0, d15] + vldm r0, #42 +// CHECK: error: invalid instruction, any one of the following would fix this: +// CHECK-NEXT: vldm r0, #42 +// CHECK: note: operand must be a list of registers in range [s0, s31] +// CHECK-D32: note: operand must be a list of registers in range [d0, d31] +// CHECK-D16: note: operand must be a list of registers in range [d0, d15] + vldm r0, {s1, d2} +// CHECK: error: invalid register in register list +// CHECK-NEXT: vldm r0, {s1, d2} + vstm r0, {r1, r2} +// CHECK: error: invalid instruction, any one of the following would fix this: +// CHECK-NEXT: vstm r0, {r1, r2} +// CHECK: note: operand must be a list of registers in range [s0, s31] +// CHECK-D32: note: operand must be a list of registers in range [d0, d31] +// CHECK-D16: note: operand must be a list of registers in range [d0, d15] + vstm r0, #42 +// CHECK: error: invalid instruction, any one of the following would fix this: +// CHECK-NEXT: vstm r0, #42 +// CHECK: note: operand must be a list of registers in range [s0, s31] +// CHECK-D32: note: operand must be a list of registers in range [d0, d31] +// CHECK-D16: note: operand must be a list of registers in range [d0, d15] + vstm r0, {s1, d2} +// CHECK: error: invalid register in register list +// CHECK-NEXT: vstm r0, {s1, d2} |

