summaryrefslogtreecommitdiffstats
path: root/test/MC/ARM/thumb2-diagnostics.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/MC/ARM/thumb2-diagnostics.s')
-rw-r--r--test/MC/ARM/thumb2-diagnostics.s44
1 files changed, 44 insertions, 0 deletions
diff --git a/test/MC/ARM/thumb2-diagnostics.s b/test/MC/ARM/thumb2-diagnostics.s
new file mode 100644
index 0000000..e38f53c
--- /dev/null
+++ b/test/MC/ARM/thumb2-diagnostics.s
@@ -0,0 +1,44 @@
+@ RUN: not llvm-mc -triple=thumbv7-apple-darwin < %s 2> %t
+@ RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
+
+@ Ill-formed IT block instructions.
+ itet eq
+ addle r0, r1, r2
+ nop
+ it le
+ iteeee gt
+ ittfe le
+ nopeq
+
+@ CHECK-ERRORS: error: incorrect condition in IT block; got 'le', but expected 'eq'
+@ CHECK-ERRORS: addle r0, r1, r2
+@ CHECK-ERRORS: ^
+@ CHECK-ERRORS: error: incorrect condition in IT block; got 'al', but expected 'ne'
+@ CHECK-ERRORS: nop
+@ CHECK-ERRORS: ^
+@ CHECK-ERRORS: error: instructions in IT block must be predicable
+@ CHECK-ERRORS: it le
+@ CHECK-ERRORS: ^
+@ CHECK-ERRORS: error: too many conditions on IT instruction
+@ CHECK-ERRORS: iteeee gt
+@ CHECK-ERRORS: ^
+@ CHECK-ERRORS: error: illegal IT block condition mask 'tfe'
+@ CHECK-ERRORS: ittfe le
+@ CHECK-ERRORS: ^
+@ CHECK-ERRORS: error: predicated instructions must be in IT block
+@ CHECK-ERRORS: nopeq
+@ CHECK-ERRORS: ^
+
+ @ Out of range immediates for MRC/MRC2/MRRC/MRRC2
+ mrc p14, #8, r1, c1, c2, #4
+ mrc p14, #1, r1, c1, c2, #8
+ mrc2 p14, #8, r1, c1, c2, #4
+ mrc2 p14, #0, r1, c1, c2, #9
+ mrrc p7, #16, r5, r4, c1
+ mrrc2 p7, #17, r5, r4, c1
+@ CHECK-ERRORS: error: invalid operand for instruction
+@ CHECK-ERRORS: error: invalid operand for instruction
+@ CHECK-ERRORS: error: invalid operand for instruction
+@ CHECK-ERRORS: error: invalid operand for instruction
+@ CHECK-ERRORS: error: invalid operand for instruction
+@ CHECK-ERRORS: error: invalid operand for instruction
OpenPOWER on IntegriCloud