blob: b0101414e8946c36ee4e26f5838db517569ef3cf [file] [log] [blame]
Jim Grosbach19906722011-07-13 18:49:30 +00001@ RUN: not llvm-mc -triple=armv7-apple-darwin < %s 2> %t
2@ RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
3
4@ Check for various assembly diagnostic messages on invalid input.
5
Jim Grosbach33c16a22011-07-14 22:04:21 +00006@ 's' bit on an instruction that can't accept it.
7 mlss r1, r2, r3, r4
8@ CHECK-ERRORS: error: instruction 'mls' can not set flags,
9@ CHECK-ERRORS: but 's' suffix specified
10
11
Jim Grosbach19906722011-07-13 18:49:30 +000012 @ Out of range shift immediate values.
13 adc r1, r2, r3, lsl #invalid
14 adc r4, r5, r6, lsl #-1
15 adc r4, r5, r6, lsl #32
16 adc r4, r5, r6, lsr #-1
17 adc r4, r5, r6, lsr #33
18 adc r4, r5, r6, asr #-1
19 adc r4, r5, r6, asr #33
20 adc r4, r5, r6, ror #-1
21 adc r4, r5, r6, ror #32
22
23@ CHECK-ERRORS: error: invalid immediate shift value
24@ CHECK-ERRORS: adc r1, r2, r3, lsl #invalid
25@ CHECK-ERRORS: ^
26@ CHECK-ERRORS: error: immediate shift value out of range
27@ CHECK-ERRORS: adc r4, r5, r6, lsl #-1
28@ CHECK-ERRORS: ^
29@ CHECK-ERRORS: error: immediate shift value out of range
30@ CHECK-ERRORS: adc r4, r5, r6, lsl #32
31@ CHECK-ERRORS: ^
32@ CHECK-ERRORS: error: immediate shift value out of range
33@ CHECK-ERRORS: adc r4, r5, r6, lsr #-1
34@ CHECK-ERRORS: ^
35@ CHECK-ERRORS: error: immediate shift value out of range
36@ CHECK-ERRORS: adc r4, r5, r6, lsr #33
37@ CHECK-ERRORS: ^
38@ CHECK-ERRORS: error: immediate shift value out of range
39@ CHECK-ERRORS: adc r4, r5, r6, asr #-1
40@ CHECK-ERRORS: ^
41@ CHECK-ERRORS: error: immediate shift value out of range
42@ CHECK-ERRORS: adc r4, r5, r6, asr #33
43@ CHECK-ERRORS: ^
44@ CHECK-ERRORS: error: immediate shift value out of range
45@ CHECK-ERRORS: adc r4, r5, r6, ror #-1
46@ CHECK-ERRORS: ^
47@ CHECK-ERRORS: error: immediate shift value out of range
48@ CHECK-ERRORS: adc r4, r5, r6, ror #32
Jim Grosbachfff76ee2011-07-13 20:10:10 +000049
50
51 @ Out of range 16-bit immediate on BKPT
52 bkpt #65536
53
54@ CHECK-ERRORS: error: invalid operand for instruction
Jim Grosbach83ab0702011-07-13 22:01:08 +000055
56 @ Out of range 4 and 3 bit immediates on CDP[2]
57
58 @ Out of range immediates for CDP/CDP2
59 cdp p7, #2, c1, c1, c1, #8
60 cdp p7, #1, c1, c1, c1, #8
61 cdp2 p7, #2, c1, c1, c1, #8
62 cdp2 p7, #1, c1, c1, c1, #8
63
64@ CHECK-ERRORS: error: invalid operand for instruction
65@ CHECK-ERRORS: error: invalid operand for instruction
66@ CHECK-ERRORS: error: invalid operand for instruction
67@ CHECK-ERRORS: error: invalid operand for instruction
Jim Grosbach6f9f8842011-07-13 22:59:38 +000068
69 @ Out of range immediates for DBG
70 dbg #-1
71 dbg #16
72
73@ CHECK-ERRORS: error: invalid operand for instruction
74@ CHECK-ERRORS: error: invalid operand for instruction
75@ Double-check that we're synced up with the right diagnostics.
76@ CHECK-ERRORS: dbg #16
Jim Grosbache540c742011-07-14 21:19:17 +000077
Jim Grosbachc8ae39e2011-07-14 21:26:42 +000078 @ Out of range immediate for MCR/MCR2/MCRR/MCRR2
Jim Grosbache540c742011-07-14 21:19:17 +000079 mcr p7, #8, r5, c1, c1, #4
80 mcr p7, #2, r5, c1, c1, #8
81 mcr2 p7, #8, r5, c1, c1, #4
82 mcr2 p7, #1, r5, c1, c1, #8
Jim Grosbachc8ae39e2011-07-14 21:26:42 +000083 mcrr p7, #16, r5, r4, c1
84 mcrr2 p7, #16, r5, r4, c1
85@ CHECK-ERRORS: error: invalid operand for instruction
86@ CHECK-ERRORS: error: invalid operand for instruction
Jim Grosbache540c742011-07-14 21:19:17 +000087@ CHECK-ERRORS: error: invalid operand for instruction
88@ CHECK-ERRORS: error: invalid operand for instruction
89@ CHECK-ERRORS: error: invalid operand for instruction
90@ CHECK-ERRORS: error: invalid operand for instruction
Jim Grosbachffa32252011-07-19 19:13:28 +000091
92
93 @ Out of range immediate for MOV
94 movw r9, 0x10000
95@ CHECK-ERRORS: error: invalid operand for instruction
Jim Grosbach5f160572011-07-19 20:10:31 +000096
97 @ Invalid 's' bit usage for MOVW
98 movs r6, #0xffff
99 movwseq r9, #0xffff
100@ CHECK-ERRORS: error: invalid operand for instruction
101@ CHECK-ERRORS: error: instruction 'movw' can not set flags, but 's' suffix specified
Jim Grosbach1a2be4d2011-07-19 20:23:25 +0000102
103 @ Out of range immediate for MOVT
104 movt r9, 0x10000
105@ CHECK-ERRORS: error: invalid operand for instruction