xref: /minix3/external/bsd/llvm/dist/llvm/test/MC/ARM/diagnostics.s (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1f4a2713aSLionel Sambuc@ RUN: not llvm-mc -triple=armv7-apple-darwin < %s 2> %t
2f4a2713aSLionel Sambuc@ RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
3f4a2713aSLionel Sambuc@ RUN: not llvm-mc -triple=armv8 < %s 2> %t
4f4a2713aSLionel Sambuc@ RUN: FileCheck --check-prefix=CHECK-ERRORS-V8 < %t %s
5f4a2713aSLionel Sambuc
6f4a2713aSLionel Sambuc@ Check for various assembly diagnostic messages on invalid input.
7f4a2713aSLionel Sambuc
8f4a2713aSLionel Sambuc@ 's' bit on an instruction that can't accept it.
9f4a2713aSLionel Sambuc        mlss r1, r2, r3, r4
10f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'mls' can not set flags,
11f4a2713aSLionel Sambuc@ CHECK-ERRORS: but 's' suffix specified
12f4a2713aSLionel Sambuc
13f4a2713aSLionel Sambuc
14f4a2713aSLionel Sambuc        @ Out of range shift immediate values.
15f4a2713aSLionel Sambuc        adc r1, r2, r3, lsl #invalid
16f4a2713aSLionel Sambuc        adc r4, r5, r6, lsl #-1
17f4a2713aSLionel Sambuc        adc r4, r5, r6, lsl #32
18f4a2713aSLionel Sambuc        adc r4, r5, r6, lsr #-1
19f4a2713aSLionel Sambuc        adc r4, r5, r6, lsr #33
20f4a2713aSLionel Sambuc        adc r4, r5, r6, asr #-1
21f4a2713aSLionel Sambuc        adc r4, r5, r6, asr #33
22f4a2713aSLionel Sambuc        adc r4, r5, r6, ror #-1
23f4a2713aSLionel Sambuc        adc r4, r5, r6, ror #32
24f4a2713aSLionel Sambuc
25f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid immediate shift value
26f4a2713aSLionel Sambuc@ CHECK-ERRORS:         adc r1, r2, r3, lsl #invalid
27f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
28f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
29f4a2713aSLionel Sambuc@ CHECK-ERRORS:         adc r4, r5, r6, lsl #-1
30f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
31f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
32f4a2713aSLionel Sambuc@ CHECK-ERRORS:         adc r4, r5, r6, lsl #32
33f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
34f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
35f4a2713aSLionel Sambuc@ CHECK-ERRORS:         adc r4, r5, r6, lsr #-1
36f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
37f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
38f4a2713aSLionel Sambuc@ CHECK-ERRORS:         adc r4, r5, r6, lsr #33
39f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
40f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
41f4a2713aSLionel Sambuc@ CHECK-ERRORS:         adc r4, r5, r6, asr #-1
42f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
43f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
44f4a2713aSLionel Sambuc@ CHECK-ERRORS:         adc r4, r5, r6, asr #33
45f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
46f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
47f4a2713aSLionel Sambuc@ CHECK-ERRORS:         adc r4, r5, r6, ror #-1
48f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
49f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
50f4a2713aSLionel Sambuc@ CHECK-ERRORS:         adc r4, r5, r6, ror #32
51f4a2713aSLionel Sambuc
52f4a2713aSLionel Sambuc        @ Out of range shift immediate values for load/store.
53f4a2713aSLionel Sambuc        str r1, [r2, r3, lsl #invalid]
54f4a2713aSLionel Sambuc        ldr r4, [r5], r6, lsl #-1
55f4a2713aSLionel Sambuc        pld r4, [r5, r6, lsl #32]
56f4a2713aSLionel Sambuc        str r4, [r5], r6, lsr #-1
57f4a2713aSLionel Sambuc        ldr r4, [r5, r6, lsr #33]
58f4a2713aSLionel Sambuc        pld r4, [r5, r6, asr #-1]
59f4a2713aSLionel Sambuc        str r4, [r5, r6, asr #33]
60f4a2713aSLionel Sambuc        ldr r4, [r5, r6, ror #-1]
61f4a2713aSLionel Sambuc        pld r4, [r5, r6, ror #32]
62f4a2713aSLionel Sambuc        pld r4, [r5, r6, rrx #0]
63f4a2713aSLionel Sambuc
64f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: shift amount must be an immediate
65f4a2713aSLionel Sambuc@ CHECK-ERRORS:         str r1, [r2, r3, lsl #invalid]
66f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
67f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
68f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ldr r4, [r5], r6, lsl #-1
69f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
70f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
71f4a2713aSLionel Sambuc@ CHECK-ERRORS:         pld r4, [r5, r6, lsl #32]
72f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
73f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
74f4a2713aSLionel Sambuc@ CHECK-ERRORS:         str r4, [r5], r6, lsr #-1
75f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
76f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
77f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ldr r4, [r5, r6, lsr #33]
78f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
79f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
80f4a2713aSLionel Sambuc@ CHECK-ERRORS:         pld r4, [r5, r6, asr #-1]
81f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
82f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
83f4a2713aSLionel Sambuc@ CHECK-ERRORS:         str r4, [r5, r6, asr #33]
84f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
85f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
86f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ldr r4, [r5, r6, ror #-1]
87f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
88f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate shift value out of range
89f4a2713aSLionel Sambuc@ CHECK-ERRORS:         pld r4, [r5, r6, ror #32]
90f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: ']' expected
91f4a2713aSLionel Sambuc@ CHECK-ERRORS:         pld r4, [r5, r6, rrx #0]
92f4a2713aSLionel Sambuc
93f4a2713aSLionel Sambuc        @ Out of range 16-bit immediate on BKPT
94f4a2713aSLionel Sambuc        bkpt #65536
95f4a2713aSLionel Sambuc
96f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
97f4a2713aSLionel Sambuc
98f4a2713aSLionel Sambuc        @ Out of range immediates for v8 HLT instruction.
99f4a2713aSLionel Sambuc        hlt #65536
100f4a2713aSLionel Sambuc        hlt #-1
101f4a2713aSLionel Sambuc@CHECK-ERRORS-V8: error: invalid operand for instruction
102f4a2713aSLionel Sambuc@CHECK-ERRORS-V8:         hlt #65536
103f4a2713aSLionel Sambuc@CHECK-ERRORS-V8:              ^
104f4a2713aSLionel Sambuc@CHECK-ERRORS-V8: error: invalid operand for instruction
105f4a2713aSLionel Sambuc@CHECK-ERRORS-V8:         hlt #-1
106f4a2713aSLionel Sambuc@CHECK-ERRORS-V8:              ^
107f4a2713aSLionel Sambuc
108f4a2713aSLionel Sambuc        @ Illegal condition code for v8 HLT instruction.
109f4a2713aSLionel Sambuc        hlteq #2
110f4a2713aSLionel Sambuc        hltlt #23
111f4a2713aSLionel Sambuc@CHECK-ERRORS-V8: error: instruction 'hlt' is not predicable, but condition code specified
112f4a2713aSLionel Sambuc@CHECK-ERRORS-V8:        hlteq #2
113f4a2713aSLionel Sambuc@CHECK-ERRORS-V8:        ^
114f4a2713aSLionel Sambuc@CHECK-ERRORS-V8: error: instruction 'hlt' is not predicable, but condition code specified
115f4a2713aSLionel Sambuc@CHECK-ERRORS-V8:        hltlt #23
116f4a2713aSLionel Sambuc@CHECK-ERRORS-V8:        ^
117f4a2713aSLionel Sambuc
118f4a2713aSLionel Sambuc        @ Out of range 4 and 3 bit immediates on CDP[2]
119f4a2713aSLionel Sambuc
120f4a2713aSLionel Sambuc        @ Out of range immediates for CDP/CDP2
121f4a2713aSLionel Sambuc        cdp  p7, #2, c1, c1, c1, #8
122f4a2713aSLionel Sambuc        cdp  p7, #1, c1, c1, c1, #8
123f4a2713aSLionel Sambuc        cdp2  p7, #2, c1, c1, c1, #8
124f4a2713aSLionel Sambuc        cdp2  p7, #1, c1, c1, c1, #8
125f4a2713aSLionel Sambuc
126f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
127f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
128f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
129f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
130f4a2713aSLionel Sambuc
131f4a2713aSLionel Sambuc        @ Out of range immediates for DBG
132f4a2713aSLionel Sambuc        dbg #-1
133f4a2713aSLionel Sambuc        dbg #16
134f4a2713aSLionel Sambuc
135f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
136f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
137f4a2713aSLionel Sambuc@  Double-check that we're synced up with the right diagnostics.
138f4a2713aSLionel Sambuc@ CHECK-ERRORS: dbg #16
139f4a2713aSLionel Sambuc
140f4a2713aSLionel Sambuc        @ Out of range immediate for MCR/MCR2/MCRR/MCRR2
141f4a2713aSLionel Sambuc        mcr  p7, #8, r5, c1, c1, #4
142f4a2713aSLionel Sambuc        mcr  p7, #2, r5, c1, c1, #8
143f4a2713aSLionel Sambuc        mcr2  p7, #8, r5, c1, c1, #4
144f4a2713aSLionel Sambuc        mcr2  p7, #1, r5, c1, c1, #8
145f4a2713aSLionel Sambuc        mcrr  p7, #16, r5, r4, c1
146f4a2713aSLionel Sambuc        mcrr2  p7, #16, r5, r4, c1
147f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
148f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
149f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
150f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
151f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
152f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
153f4a2713aSLionel Sambuc
154f4a2713aSLionel Sambuc        @ p10 and p11 are reserved for NEON
155f4a2713aSLionel Sambuc        mcr p10, #2, r5, c1, c1, #4
156f4a2713aSLionel Sambuc        mcrr p11, #8, r5, r4, c1
157f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
158f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
159f4a2713aSLionel Sambuc
160f4a2713aSLionel Sambuc        @ Out of range immediate for MOV
161f4a2713aSLionel Sambuc        movw r9, 0x10000
162f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
163f4a2713aSLionel Sambuc
164f4a2713aSLionel Sambuc        @ Invalid 's' bit usage for MOVW
165f4a2713aSLionel Sambuc        movs r6, #0xffff
166f4a2713aSLionel Sambuc        movwseq r9, #0xffff
167f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
168f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'movw' can not set flags, but 's' suffix specified
169f4a2713aSLionel Sambuc
170f4a2713aSLionel Sambuc        @ Out of range immediate for MOVT
171f4a2713aSLionel Sambuc        movt r9, 0x10000
172f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
173f4a2713aSLionel Sambuc
174f4a2713aSLionel Sambuc        @ Out of range immediates for MRC/MRC2/MRRC/MRRC2
175f4a2713aSLionel Sambuc        mrc  p14, #8, r1, c1, c2, #4
176f4a2713aSLionel Sambuc        mrc  p14, #1, r1, c1, c2, #8
177f4a2713aSLionel Sambuc        mrc2  p14, #8, r1, c1, c2, #4
178f4a2713aSLionel Sambuc        mrc2  p14, #0, r1, c1, c2, #9
179f4a2713aSLionel Sambuc        mrrc  p7, #16, r5, r4, c1
180f4a2713aSLionel Sambuc        mrrc2  p7, #17, r5, r4, c1
181f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
182f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
183f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
184f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
185f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
186f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
187f4a2713aSLionel Sambuc
188f4a2713aSLionel Sambuc        @ Shifter operand validation for PKH instructions.
189f4a2713aSLionel Sambuc        pkhbt r2, r2, r3, lsl #-1
190f4a2713aSLionel Sambuc        pkhbt r2, r2, r3, lsl #32
191f4a2713aSLionel Sambuc        pkhtb r2, r2, r3, asr #0
192f4a2713aSLionel Sambuc        pkhtb r2, r2, r3, asr #33
193f4a2713aSLionel Sambuc        pkhbt r2, r2, r3, asr #3
194f4a2713aSLionel Sambuc        pkhtb r2, r2, r3, lsl #3
195f4a2713aSLionel Sambuc
196f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate value out of range
197f4a2713aSLionel Sambuc@ CHECK-ERRORS:         pkhbt r2, r2, r3, lsl #-1
198f4a2713aSLionel Sambuc@ CHECK-ERRORS:                                ^
199f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate value out of range
200f4a2713aSLionel Sambuc@ CHECK-ERRORS:         pkhbt r2, r2, r3, lsl #32
201f4a2713aSLionel Sambuc@ CHECK-ERRORS:                                ^
202f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate value out of range
203f4a2713aSLionel Sambuc@ CHECK-ERRORS:         pkhtb r2, r2, r3, asr #0
204f4a2713aSLionel Sambuc@ CHECK-ERRORS:                                ^
205f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate value out of range
206f4a2713aSLionel Sambuc@ CHECK-ERRORS:         pkhtb r2, r2, r3, asr #33
207f4a2713aSLionel Sambuc@ CHECK-ERRORS:                                ^
208f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: lsl operand expected.
209f4a2713aSLionel Sambuc@ CHECK-ERRORS:         pkhbt r2, r2, r3, asr #3
210f4a2713aSLionel Sambuc@ CHECK-ERRORS:                           ^
211f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: asr operand expected.
212f4a2713aSLionel Sambuc@ CHECK-ERRORS:         pkhtb r2, r2, r3, lsl #3
213f4a2713aSLionel Sambuc@ CHECK-ERRORS:                           ^
214f4a2713aSLionel Sambuc
215f4a2713aSLionel Sambuc
216f4a2713aSLionel Sambuc        @ bad values for SETEND
217f4a2713aSLionel Sambuc        setendne be
218f4a2713aSLionel Sambuc        setend me
219f4a2713aSLionel Sambuc        setend 1
220f4a2713aSLionel Sambuc
221f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'setend' is not predicable, but condition code specified
222f4a2713aSLionel Sambuc@ CHECK-ERRORS:         setendne be
223f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ^
224f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: 'be' or 'le' operand expected
225f4a2713aSLionel Sambuc@ CHECK-ERRORS:         setend me
226f4a2713aSLionel Sambuc@ CHECK-ERRORS:                  ^
227f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: 'be' or 'le' operand expected
228f4a2713aSLionel Sambuc@ CHECK-ERRORS:         setend 1
229f4a2713aSLionel Sambuc@ CHECK-ERRORS:                ^
230f4a2713aSLionel Sambuc
231f4a2713aSLionel Sambuc
232f4a2713aSLionel Sambuc        @ Out of range immediates and bad shift types for SSAT
233f4a2713aSLionel Sambuc	ssat	r8, #0, r10, lsl #8
234f4a2713aSLionel Sambuc	ssat	r8, #33, r10, lsl #8
235f4a2713aSLionel Sambuc	ssat	r8, #1, r10, lsl #-1
236f4a2713aSLionel Sambuc	ssat	r8, #1, r10, lsl #32
237f4a2713aSLionel Sambuc	ssat	r8, #1, r10, asr #0
238f4a2713aSLionel Sambuc	ssat	r8, #1, r10, asr #33
239f4a2713aSLionel Sambuc        ssat    r8, #1, r10, lsr #5
240f4a2713aSLionel Sambuc        ssat    r8, #1, r10, lsl fred
241f4a2713aSLionel Sambuc        ssat    r8, #1, r10, lsl #fred
242f4a2713aSLionel Sambuc
243f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
244f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	ssat	r8, #0, r10, lsl #8
245f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	    	    ^
246f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
247f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	ssat	r8, #33, r10, lsl #8
248f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	    	    ^
249f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: 'lsr' shift amount must be in range [0,31]
250f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	ssat	r8, #1, r10, lsl #-1
251f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	    	                  ^
252f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: 'lsr' shift amount must be in range [0,31]
253f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	ssat	r8, #1, r10, lsl #32
254f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	    	                  ^
255f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: 'asr' shift amount must be in range [1,32]
256f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	ssat	r8, #1, r10, asr #0
257f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	    	                  ^
258f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: 'asr' shift amount must be in range [1,32]
259f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	ssat	r8, #1, r10, asr #33
260f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	    	                  ^
261f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: shift operator 'asr' or 'lsl' expected
262f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ssat    r8, #1, r10, lsr #5
263f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
264f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: '#' expected
265f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ssat    r8, #1, r10, lsl fred
266f4a2713aSLionel Sambuc@ CHECK-ERRORS:                                  ^
267f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: shift amount must be an immediate
268f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ssat    r8, #1, r10, lsl #fred
269f4a2713aSLionel Sambuc@ CHECK-ERRORS:                                   ^
270f4a2713aSLionel Sambuc
271f4a2713aSLionel Sambuc        @ Out of range immediates for SSAT16
272f4a2713aSLionel Sambuc	ssat16	r2, #0, r7
273f4a2713aSLionel Sambuc	ssat16	r3, #17, r5
274f4a2713aSLionel Sambuc
275f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
276f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	ssat16	r2, #0, r7
277f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	      	    ^
278f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
279f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	ssat16	r3, #17, r5
280f4a2713aSLionel Sambuc@ CHECK-ERRORS: 	      	    ^
281f4a2713aSLionel Sambuc
282f4a2713aSLionel Sambuc
283f4a2713aSLionel Sambuc        @ Out of order STM registers
284f4a2713aSLionel Sambuc        stmda sp!, {r5, r2}
285f4a2713aSLionel Sambuc
286f4a2713aSLionel Sambuc@ CHECK-ERRORS: warning: register list not in ascending order
287f4a2713aSLionel Sambuc@ CHECK-ERRORS:         stmda     sp!, {r5, r2}
288f4a2713aSLionel Sambuc@ CHECK-ERRORS:                            ^
289f4a2713aSLionel Sambuc
290f4a2713aSLionel Sambuc
291f4a2713aSLionel Sambuc        @ Out of range immediate on SVC
292f4a2713aSLionel Sambuc        svc #0x1000000
293f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
294f4a2713aSLionel Sambuc@ CHECK-ERRORS:   svc #0x1000000
295f4a2713aSLionel Sambuc@ CHECK-ERRORS:       ^
296f4a2713aSLionel Sambuc
297f4a2713aSLionel Sambuc
298f4a2713aSLionel Sambuc        @ Out of order Rt/Rt2 operands for ldrexd/strexd
299f4a2713aSLionel Sambuc        ldrexd  r4, r3, [r8]
300f4a2713aSLionel Sambuc        strexd  r6, r5, r3, [r8]
301f4a2713aSLionel Sambuc
302f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: destination operands must be sequential
303f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ldrexd  r4, r3, [r8]
304f4a2713aSLionel Sambuc@ CHECK-ERRORS:                     ^
305f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: source operands must be sequential
306f4a2713aSLionel Sambuc@ CHECK-ERRORS:         strexd  r6, r5, r3, [r8]
307f4a2713aSLionel Sambuc@ CHECK-ERRORS:                         ^
308f4a2713aSLionel Sambuc
309f4a2713aSLionel Sambuc        @ Illegal rotate operators for extend instructions
310f4a2713aSLionel Sambuc        sxtb r8, r3, #8
311f4a2713aSLionel Sambuc        sxtb r8, r3, ror 24
312f4a2713aSLionel Sambuc        sxtb r8, r3, ror #8 -
313f4a2713aSLionel Sambuc        sxtab r3, r8, r3, ror #(fred - wilma)
314f4a2713aSLionel Sambuc        sxtab r7, r8, r3, ror #25
315f4a2713aSLionel Sambuc        sxtah r9, r3, r3, ror #-8
316f4a2713aSLionel Sambuc        sxtb16ge r2, r3, lsr #24
317f4a2713aSLionel Sambuc
318f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
319f4a2713aSLionel Sambuc@ CHECK-ERRORS:         sxtb r8, r3, #8
320f4a2713aSLionel Sambuc@ CHECK-ERRORS:                      ^
321f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: '#' expected
322f4a2713aSLionel Sambuc@ CHECK-ERRORS:         sxtb r8, r3, ror 24
323f4a2713aSLionel Sambuc@ CHECK-ERRORS:                          ^
324f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: unknown token in expression
325f4a2713aSLionel Sambuc@ CHECK-ERRORS:         sxtb r8, r3, ror #8 -
326f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
327f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: malformed rotate expression
328f4a2713aSLionel Sambuc@ CHECK-ERRORS:         sxtb r8, r3, ror #8 -
329f4a2713aSLionel Sambuc@ CHECK-ERRORS:                           ^
330f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: rotate amount must be an immediate
331f4a2713aSLionel Sambuc@ CHECK-ERRORS:         sxtab r3, r8, r3, ror #(fred - wilma)
332f4a2713aSLionel Sambuc@ CHECK-ERRORS:                                ^
333f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: 'ror' rotate amount must be 8, 16, or 24
334f4a2713aSLionel Sambuc@ CHECK-ERRORS:         sxtab r7, r8, r3, ror #25
335f4a2713aSLionel Sambuc@ CHECK-ERRORS:                                ^
336f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: 'ror' rotate amount must be 8, 16, or 24
337f4a2713aSLionel Sambuc@ CHECK-ERRORS:         sxtah r9, r3, r3, ror #-8
338f4a2713aSLionel Sambuc@ CHECK-ERRORS:                                ^
339f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
340f4a2713aSLionel Sambuc@ CHECK-ERRORS:         sxtb16ge r2, r3, lsr #24
341f4a2713aSLionel Sambuc@ CHECK-ERRORS:                          ^
342f4a2713aSLionel Sambuc
343f4a2713aSLionel Sambuc        @ Out of range width for SBFX/UBFX
344f4a2713aSLionel Sambuc        sbfx r4, r5, #31, #2
345f4a2713aSLionel Sambuc        ubfxgt r4, r5, #16, #17
346f4a2713aSLionel Sambuc
347f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: bitfield width must be in range [1,32-lsb]
348f4a2713aSLionel Sambuc@ CHECK-ERRORS:         sbfx r4, r5, #31, #2
349f4a2713aSLionel Sambuc@ CHECK-ERRORS:                           ^
350f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: bitfield width must be in range [1,32-lsb]
351f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ubfxgt r4, r5, #16, #17
352f4a2713aSLionel Sambuc@ CHECK-ERRORS:                             ^
353f4a2713aSLionel Sambuc
354*0a6a1f1dSLionel Sambuc        @ Using pc for SBFX/UBFX
355*0a6a1f1dSLionel Sambuc        sbfx pc, r2, #1, #3
356*0a6a1f1dSLionel Sambuc        sbfx sp, pc, #4, #5
357*0a6a1f1dSLionel Sambuc        ubfx pc, r0, #0, #31
358*0a6a1f1dSLionel Sambuc        ubfx r14, pc, #1, #2
359*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
360*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         sbfx pc, r2, #1, #3
361*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:              ^
362*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
363*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         sbfx sp, pc, #4, #5
364*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:                  ^
365*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
366*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         ubfx pc, r0, #0, #31
367*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:              ^
368*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
369*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         ubfx r14, pc, #1, #2
370*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:                   ^
371*0a6a1f1dSLionel Sambuc
372f4a2713aSLionel Sambuc        @ Out of order Rt/Rt2 operands for ldrd
373f4a2713aSLionel Sambuc        ldrd  r4, r3, [r8]
374f4a2713aSLionel Sambuc        ldrd  r4, r3, [r8, #8]!
375f4a2713aSLionel Sambuc        ldrd  r4, r3, [r8], #8
376f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: destination operands must be sequential
377f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ldrd  r4, r3, [r8]
378f4a2713aSLionel Sambuc@ CHECK-ERRORS:                   ^
379f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: destination operands must be sequential
380f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ldrd  r4, r3, [r8, #8]!
381f4a2713aSLionel Sambuc@ CHECK-ERRORS:                   ^
382f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: destination operands must be sequential
383f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ldrd  r4, r3, [r8], #8
384f4a2713aSLionel Sambuc@ CHECK-ERRORS:                   ^
385f4a2713aSLionel Sambuc
386f4a2713aSLionel Sambuc
387f4a2713aSLionel Sambuc        @ Bad register lists for VFP.
388f4a2713aSLionel Sambuc        vpush {s0, s3}
389f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: non-contiguous register range
390f4a2713aSLionel Sambuc@ CHECK-ERRORS:         vpush {s0, s3}
391f4a2713aSLionel Sambuc@ CHECK-ERRORS:                    ^
392f4a2713aSLionel Sambuc
393f4a2713aSLionel Sambuc        @ Out of range coprocessor option immediate.
394f4a2713aSLionel Sambuc        ldc2 p2, c8, [r1], { 256 }
395f4a2713aSLionel Sambuc        ldc2 p2, c8, [r1], { -1 }
396f4a2713aSLionel Sambuc
397f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: coprocessor option must be an immediate in range [0, 255]
398f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ldc2 p2, c8, [r1], { 256 }
399f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
400f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: coprocessor option must be an immediate in range [0, 255]
401f4a2713aSLionel Sambuc@ CHECK-ERRORS:         ldc2 p2, c8, [r1], { -1 }
402f4a2713aSLionel Sambuc@ CHECK-ERRORS:                              ^
403f4a2713aSLionel Sambuc
404f4a2713aSLionel Sambuc        @ Bad CPS instruction format.
405f4a2713aSLionel Sambuc        cps f,#1
406f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
407f4a2713aSLionel Sambuc@ CHECK-ERRORS:         cps f,#1
408f4a2713aSLionel Sambuc@ CHECK-ERRORS:               ^
409f4a2713aSLionel Sambuc
410f4a2713aSLionel Sambuc        @ Bad operands for msr
411f4a2713aSLionel Sambuc        msr #0, #0
412f4a2713aSLionel Sambuc        msr foo, #0
413f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
414f4a2713aSLionel Sambuc@ CHECK-ERRORS:         msr #0, #0
415f4a2713aSLionel Sambuc@ CHECK-ERRORS:             ^
416f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: invalid operand for instruction
417f4a2713aSLionel Sambuc@ CHECK-ERRORS:         msr foo, #0
418f4a2713aSLionel Sambuc@ CHECK-ERRORS:             ^
419f4a2713aSLionel Sambuc
420f4a2713aSLionel Sambuc        isb #-1
421f4a2713aSLionel Sambuc        isb #16
422f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate value out of range
423f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: immediate value out of range
424f4a2713aSLionel Sambuc
425f4a2713aSLionel Sambuc        nop.n
426f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction with .n (narrow) qualifier not allowed in arm mode
427f4a2713aSLionel Sambuc
428f4a2713aSLionel Sambuc	dmbeq #5
429f4a2713aSLionel Sambuc	dsble #15
430f4a2713aSLionel Sambuc	isblo #7
431f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'dmb' is not predicable, but condition code specified
432f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'dsb' is not predicable, but condition code specified
433f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'isb' is not predicable, but condition code specified
434f4a2713aSLionel Sambuc
435f4a2713aSLionel Sambuc	dmblt
436f4a2713aSLionel Sambuc	dsbne
437f4a2713aSLionel Sambuc	isbeq
438f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'dmb' is not predicable, but condition code specified
439f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'dsb' is not predicable, but condition code specified
440f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'isb' is not predicable, but condition code specified
441f4a2713aSLionel Sambuc
442f4a2713aSLionel Sambuc        mcr2le  p7, #1, r5, c1, c1, #4
443f4a2713aSLionel Sambuc        mcrr2ne p7, #15, r5, r4, c1
444f4a2713aSLionel Sambuc        mrc2lo  p14, #0, r1, c1, c2, #4
445f4a2713aSLionel Sambuc        mrrc2lo  p7, #1, r5, r4, c1
446f4a2713aSLionel Sambuc        cdp2hi   p10, #0, c6, c12, c0, #7
447f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'mcr2' is not predicable, but condition code specified
448f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'mcrr2' is not predicable, but condition code specified
449f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'mrc2' is not predicable, but condition code specified
450f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'mrrc2' is not predicable, but condition code specified
451f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'cdp2' is not predicable, but condition code specified
452f4a2713aSLionel Sambuc
453f4a2713aSLionel Sambuc        bkpteq #7
454f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction 'bkpt' is not predicable, but condition code specified
455f4a2713aSLionel Sambuc
456f4a2713aSLionel Sambuc        ldm r2!, {r2, r3}
457f4a2713aSLionel Sambuc        ldmdb r2!, {r2, r3}
458f4a2713aSLionel Sambuc        ldmda r2!, {r2, r3}
459f4a2713aSLionel Sambuc        popeq {sp}
460f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: writeback register not allowed in register list
461f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: writeback register not allowed in register list
462f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: writeback register not allowed in register list
463f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: writeback register not allowed in register list
464f4a2713aSLionel Sambuc
465f4a2713aSLionel Sambuc        vrintz.f32.f32 s0, s1
466f4a2713aSLionel Sambuc        vrintr.f32 s0, s1
467f4a2713aSLionel Sambuc        vrintx.f64.f64 d2, d5
468f4a2713aSLionel Sambuc        vrintz.f64 d10, d9
469f4a2713aSLionel Sambuc        vrinta.f32.f32 s6, s7
470f4a2713aSLionel Sambuc        vrintn.f32 s8, s9
471f4a2713aSLionel Sambuc        vrintp.f64.f64 d10, d11
472f4a2713aSLionel Sambuc        vrintm.f64 d12, d13
473f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction requires: FPARMv8
474f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction requires: FPARMv8
475f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction requires: FPARMv8
476f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction requires: FPARMv8
477f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction requires: FPARMv8
478f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction requires: FPARMv8
479f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction requires: FPARMv8
480f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: instruction requires: FPARMv8
481f4a2713aSLionel Sambuc
482f4a2713aSLionel Sambuc        stm sp!, {r0, pc}^
483f4a2713aSLionel Sambuc        ldm sp!, {r0}^
484f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: system STM cannot have writeback register
485f4a2713aSLionel Sambuc@ CHECK-ERRORS: error: writeback register only allowed on system LDM if PC in register-list
486*0a6a1f1dSLionel Sambuc
487*0a6a1f1dSLionel Sambucfoo2:
488*0a6a1f1dSLionel Sambuc        mov r0, foo2
489*0a6a1f1dSLionel Sambuc        movw r0, foo2
490*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16
491*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:                 ^
492*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16
493*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:                  ^
494*0a6a1f1dSLionel Sambuc
495*0a6a1f1dSLionel Sambuc        str r0, [r0, #4]!
496*0a6a1f1dSLionel Sambuc        str r0, [r0, r1]!
497*0a6a1f1dSLionel Sambuc        str r0, [r0], #4
498*0a6a1f1dSLionel Sambuc        str r0, [r0], r1
499*0a6a1f1dSLionel Sambuc        strh r0, [r0, #2]!
500*0a6a1f1dSLionel Sambuc        strh r0, [r0, r1]!
501*0a6a1f1dSLionel Sambuc        strh r0, [r0], #2
502*0a6a1f1dSLionel Sambuc        strh r0, [r0], r1
503*0a6a1f1dSLionel Sambuc        strb r0, [r0, #1]!
504*0a6a1f1dSLionel Sambuc        strb r0, [r0, r1]!
505*0a6a1f1dSLionel Sambuc        strb r0, [r0], #1
506*0a6a1f1dSLionel Sambuc        strb r0, [r0], r1
507*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
508*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: str r0, [r0, #4]!
509*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         ^
510*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
511*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: str r0, [r0, r1]!
512*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         ^
513*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
514*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: str r0, [r0], #4
515*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         ^
516*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
517*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: str r0, [r0], r1
518*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         ^
519*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
520*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: strh r0, [r0, #2]!
521*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
522*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
523*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: strh r0, [r0, r1]!
524*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
525*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
526*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: strh r0, [r0], #2
527*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
528*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
529*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: strh r0, [r0], r1
530*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
531*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
532*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: strb r0, [r0, #1]!
533*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
534*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
535*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: strb r0, [r0, r1]!
536*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
537*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
538*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: strb r0, [r0], #1
539*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
540*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: source register and base register can't be identical
541*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: strb r0, [r0], r1
542*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
543*0a6a1f1dSLionel Sambuc
544*0a6a1f1dSLionel Sambuc        ldr r0, [r0, #4]!
545*0a6a1f1dSLionel Sambuc        ldr r0, [r0, r1]!
546*0a6a1f1dSLionel Sambuc        ldr r0, [r0], #4
547*0a6a1f1dSLionel Sambuc        ldr r0, [r0], r1
548*0a6a1f1dSLionel Sambuc        ldrh r0, [r0, #2]!
549*0a6a1f1dSLionel Sambuc        ldrh r0, [r0, r1]!
550*0a6a1f1dSLionel Sambuc        ldrh r0, [r0], #2
551*0a6a1f1dSLionel Sambuc        ldrh r0, [r0], r1
552*0a6a1f1dSLionel Sambuc        ldrsh r0, [r0, #2]!
553*0a6a1f1dSLionel Sambuc        ldrsh r0, [r0, r1]!
554*0a6a1f1dSLionel Sambuc        ldrsh r0, [r0], #2
555*0a6a1f1dSLionel Sambuc        ldrsh r0, [r0], r1
556*0a6a1f1dSLionel Sambuc        ldrb r0, [r0, #1]!
557*0a6a1f1dSLionel Sambuc        ldrb r0, [r0, r1]!
558*0a6a1f1dSLionel Sambuc        ldrb r0, [r0], #1
559*0a6a1f1dSLionel Sambuc        ldrb r0, [r0], r1
560*0a6a1f1dSLionel Sambuc        ldrsb r0, [r0, #1]!
561*0a6a1f1dSLionel Sambuc        ldrsb r0, [r0, r1]!
562*0a6a1f1dSLionel Sambuc        ldrsb r0, [r0], #1
563*0a6a1f1dSLionel Sambuc        ldrsb r0, [r0], r1
564*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
565*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldr r0, [r0, #4]!
566*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         ^
567*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
568*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldr r0, [r0, r1]!
569*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         ^
570*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
571*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldr r0, [r0], #4
572*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         ^
573*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
574*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldr r0, [r0], r1
575*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:         ^
576*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
577*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrh r0, [r0, #2]!
578*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
579*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
580*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrh r0, [r0, r1]!
581*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
582*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
583*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrh r0, [r0], #2
584*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
585*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
586*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrh r0, [r0], r1
587*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
588*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
589*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrsh r0, [r0, #2]!
590*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:           ^
591*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
592*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrsh r0, [r0, r1]!
593*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:           ^
594*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
595*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrsh r0, [r0], #2
596*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:           ^
597*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
598*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrsh r0, [r0], r1
599*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:           ^
600*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
601*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrb r0, [r0, #1]!
602*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
603*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
604*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrb r0, [r0, r1]!
605*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
606*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
607*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrb r0, [r0], #1
608*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
609*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
610*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrb r0, [r0], r1
611*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:          ^
612*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
613*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrsb r0, [r0, #1]!
614*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:           ^
615*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
616*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrsb r0, [r0, r1]!
617*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:           ^
618*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
619*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrsb r0, [r0], #1
620*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:           ^
621*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: destination register and base register can't be identical
622*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: ldrsb r0, [r0], r1
623*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS:           ^
624*0a6a1f1dSLionel Sambuc
625*0a6a1f1dSLionel Sambuc        @ Out of range modified immediate values
626*0a6a1f1dSLionel Sambuc        mov  r5, #-256, #6
627*0a6a1f1dSLionel Sambuc        mov  r6, #42, #7
628*0a6a1f1dSLionel Sambuc        mvn  r5, #256, #6
629*0a6a1f1dSLionel Sambuc        mvn  r6, #42, #298
630*0a6a1f1dSLionel Sambuc        cmp  r5, #65535, #6
631*0a6a1f1dSLionel Sambuc        cmp  r6, #42, #31
632*0a6a1f1dSLionel Sambuc        cmn  r5, #-1, #6
633*0a6a1f1dSLionel Sambuc        cmn  r6, #42, #32
634*0a6a1f1dSLionel Sambuc	msr  APSR_nzcvq, #-128, #2
635*0a6a1f1dSLionel Sambuc	msr  apsr_nzcvqg, #0, #1
636*0a6a1f1dSLionel Sambuc        adc  r7, r8, #-256, #2
637*0a6a1f1dSLionel Sambuc        adc  r7, r8, #128, #1
638*0a6a1f1dSLionel Sambuc        sbc  r7, r8, #-256, #2
639*0a6a1f1dSLionel Sambuc        sbc  r7, r8, #128, #1
640*0a6a1f1dSLionel Sambuc        add  r7, r8, #-2149, #0
641*0a6a1f1dSLionel Sambuc        add  r7, r8, #100, #1
642*0a6a1f1dSLionel Sambuc        sub  r7, r8, #-2149, #0
643*0a6a1f1dSLionel Sambuc        sub  r7, r8, #100, #1
644*0a6a1f1dSLionel Sambuc        and  r7, r8, #-2149, #0
645*0a6a1f1dSLionel Sambuc        and  r7, r8, #100, #1
646*0a6a1f1dSLionel Sambuc        orr  r7, r8, #-2149, #0
647*0a6a1f1dSLionel Sambuc        orr  r7, r8, #100, #1
648*0a6a1f1dSLionel Sambuc        eor  r7, r8, #-2149, #0
649*0a6a1f1dSLionel Sambuc        eor  r7, r8, #100, #1
650*0a6a1f1dSLionel Sambuc        bic  r7, r8, #-2149, #0
651*0a6a1f1dSLionel Sambuc        bic  r7, r8, #100, #1
652*0a6a1f1dSLionel Sambuc        rsb  r7, r8, #-2149, #0
653*0a6a1f1dSLionel Sambuc        rsb  r7, r8, #100, #1
654*0a6a1f1dSLionel Sambuc        adds r7, r8, #-2149, #0
655*0a6a1f1dSLionel Sambuc        adds r7, r8, #100, #1
656*0a6a1f1dSLionel Sambuc        subs r7, r8, #-2149, #0
657*0a6a1f1dSLionel Sambuc        subs r7, r8, #100, #1
658*0a6a1f1dSLionel Sambuc        rsbs r7, r8, #-2149, #0
659*0a6a1f1dSLionel Sambuc        rsbs r7, r8, #100, #1
660*0a6a1f1dSLionel Sambuc        rsc r7, r8, #-2149, #0
661*0a6a1f1dSLionel Sambuc        rsc r7, r8, #100, #1
662*0a6a1f1dSLionel Sambuc        TST r7, #-2149, #0
663*0a6a1f1dSLionel Sambuc        TST r7, #100, #1
664*0a6a1f1dSLionel Sambuc        TEQ r7, #-2149, #0
665*0a6a1f1dSLionel Sambuc        TEQ r7, #100, #1
666*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
667*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
668*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
669*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
670*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
671*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
672*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
673*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
674*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
675*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
676*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
677*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
678*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
679*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
680*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
681*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
682*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
683*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
684*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
685*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
686*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
687*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
688*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
689*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
690*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
691*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
692*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
693*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
694*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
695*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
696*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
697*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
698*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
699*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
700*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
701*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
702*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
703*0a6a1f1dSLionel Sambuc@ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
704