1 @ RUN: not llvm-mc -triple=armv7-apple-darwin < %s 2> %t
2 @ RUN: FileCheck --check-prefix=CHECK-ERRORS --check-prefix=CHECK-ERRORS-V7 < %t %s
3 @ RUN: not llvm-mc -triple=armv8 < %s 2> %t
4 @ RUN: FileCheck --check-prefix=CHECK-ERRORS --check-prefix=CHECK-ERRORS-V8 < %t %s
6 @ Check for various assembly diagnostic messages on invalid input.
8 @ 's' bit on an instruction that can't accept it.
10 @ CHECK-ERRORS: error: instruction 'mls' can not set flags,
11 @ CHECK-ERRORS: but 's' suffix specified
14 @ Out of range shift immediate values.
15 adc r1, r2, r3, lsl #invalid
16 adc r4, r5, r6, lsl #-1
17 adc r4, r5, r6, lsl #32
18 adc r4, r5, r6, lsr #-1
19 adc r4, r5, r6, lsr #33
20 adc r4, r5, r6, asr #-1
21 adc r4, r5, r6, asr #33
22 adc r4, r5, r6, ror #-1
23 adc r4, r5, r6, ror #32
25 @ CHECK-ERRORS: error: invalid immediate shift value
26 @ CHECK-ERRORS: adc r1, r2, r3, lsl #invalid
28 @ CHECK-ERRORS: error: immediate shift value out of range
29 @ CHECK-ERRORS: adc r4, r5, r6, lsl #-1
31 @ CHECK-ERRORS: error: immediate shift value out of range
32 @ CHECK-ERRORS: adc r4, r5, r6, lsl #32
34 @ CHECK-ERRORS: error: immediate shift value out of range
35 @ CHECK-ERRORS: adc r4, r5, r6, lsr #-1
37 @ CHECK-ERRORS: error: immediate shift value out of range
38 @ CHECK-ERRORS: adc r4, r5, r6, lsr #33
40 @ CHECK-ERRORS: error: immediate shift value out of range
41 @ CHECK-ERRORS: adc r4, r5, r6, asr #-1
43 @ CHECK-ERRORS: error: immediate shift value out of range
44 @ CHECK-ERRORS: adc r4, r5, r6, asr #33
46 @ CHECK-ERRORS: error: immediate shift value out of range
47 @ CHECK-ERRORS: adc r4, r5, r6, ror #-1
49 @ CHECK-ERRORS: error: immediate shift value out of range
50 @ CHECK-ERRORS: adc r4, r5, r6, ror #32
52 @ Out of range shift immediate values for load/store.
53 str r1, [r2, r3, lsl #invalid]
54 ldr r4, [r5], r6, lsl #-1
55 pld r4, [r5, r6, lsl #32]
56 str r4, [r5], r6, lsr #-1
57 ldr r4, [r5, r6, lsr #33]
58 pld r4, [r5, r6, asr #-1]
59 str r4, [r5, r6, asr #33]
60 ldr r4, [r5, r6, ror #-1]
61 pld r4, [r5, r6, ror #32]
62 pld r4, [r5, r6, rrx #0]
64 @ CHECK-ERRORS: error: shift amount must be an immediate
65 @ CHECK-ERRORS: str r1, [r2, r3, lsl #invalid]
67 @ CHECK-ERRORS: error: immediate shift value out of range
68 @ CHECK-ERRORS: ldr r4, [r5], r6, lsl #-1
70 @ CHECK-ERRORS: error: immediate shift value out of range
71 @ CHECK-ERRORS: pld r4, [r5, r6, lsl #32]
73 @ CHECK-ERRORS: error: immediate shift value out of range
74 @ CHECK-ERRORS: str r4, [r5], r6, lsr #-1
76 @ CHECK-ERRORS: error: immediate shift value out of range
77 @ CHECK-ERRORS: ldr r4, [r5, r6, lsr #33]
79 @ CHECK-ERRORS: error: immediate shift value out of range
80 @ CHECK-ERRORS: pld r4, [r5, r6, asr #-1]
82 @ CHECK-ERRORS: error: immediate shift value out of range
83 @ CHECK-ERRORS: str r4, [r5, r6, asr #33]
85 @ CHECK-ERRORS: error: immediate shift value out of range
86 @ CHECK-ERRORS: ldr r4, [r5, r6, ror #-1]
88 @ CHECK-ERRORS: error: immediate shift value out of range
89 @ CHECK-ERRORS: pld r4, [r5, r6, ror #32]
90 @ CHECK-ERRORS: error: ']' expected
91 @ CHECK-ERRORS: pld r4, [r5, r6, rrx #0]
93 @ Out of range 16-bit immediate on BKPT
96 @ CHECK-ERRORS: error: invalid operand for instruction
98 @ Out of range immediates for v8 HLT instruction.
101 @CHECK-ERRORS: error: invalid operand for instruction
102 @CHECK-ERRORS: hlt #65536
104 @CHECK-ERRORS: error: invalid operand for instruction
105 @CHECK-ERRORS: hlt #-1
108 @ Illegal condition code for v8 HLT instruction.
111 @CHECK-ERRORS: error: instruction 'hlt' is not predicable, but condition code specified
112 @CHECK-ERRORS: hlteq #2
114 @CHECK-ERRORS: error: instruction 'hlt' is not predicable, but condition code specified
115 @CHECK-ERRORS: hltlt #23
118 @ Out of range 4 and 3 bit immediates on CDP[2]
120 @ Out of range immediates for CDP/CDP2
121 cdp p7, #2, c1, c1, c1, #8
122 cdp p7, #1, c1, c1, c1, #8
123 cdp2 p7, #2, c1, c1, c1, #8
124 cdp2 p7, #1, c1, c1, c1, #8
126 @ CHECK-ERRORS: error: invalid operand for instruction
127 @ CHECK-ERRORS: error: invalid operand for instruction
128 @ CHECK-ERRORS: error: invalid operand for instruction
129 @ CHECK-ERRORS: error: invalid operand for instruction
131 @ Out of range immediates for DBG
135 @ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
136 @ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
137 @ Double-check that we're synced up with the right diagnostics.
138 @ CHECK-ERRORS: dbg #16
140 @ Out of range immediate for MCR/MCR2/MCRR/MCRR2
141 mcr p7, #8, r5, c1, c1, #4
142 mcr p7, #2, r5, c1, c1, #8
143 mcr2 p7, #8, r5, c1, c1, #4
144 mcr2 p7, #1, r5, c1, c1, #8
145 mcrr p7, #16, r5, r4, c1
146 mcrr2 p7, #16, r5, r4, c1
147 @ CHECK-ERRORS: error: invalid operand for instruction
148 @ CHECK-ERRORS: error: invalid operand for instruction
149 @ CHECK-ERRORS: error: invalid operand for instruction
150 @ CHECK-ERRORS: error: invalid operand for instruction
151 @ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
152 @ CHECK-ERRORS-V7: error: immediate operand must be in the range [0,15]
153 @ CHECK-ERRORS-V8: error: invalid operand for instruction
155 @ p10 and p11 are reserved for NEON
156 mcr p10, #2, r5, c1, c1, #4
157 mcrr p11, #8, r5, r4, c1
158 @ CHECK-ERRORS: error: invalid operand for instruction
159 @ CHECK-ERRORS: error: invalid operand for instruction
161 @ Out of range immediate for MOV
163 @ CHECK-ERRORS: error: invalid operand for instruction
165 @ Invalid 's' bit usage for MOVW
168 @ CHECK-ERRORS: error: invalid operand for instruction
169 @ CHECK-ERRORS: error: instruction 'movw' can not set flags, but 's' suffix specified
171 @ Out of range immediate for MOVT
173 @ CHECK-ERRORS: error: invalid operand for instruction
175 @ Out of range immediates for MRC/MRC2/MRRC/MRRC2
176 mrc p14, #8, r1, c1, c2, #4
177 mrc p14, #1, r1, c1, c2, #8
178 mrc2 p14, #8, r1, c1, c2, #4
179 mrc2 p14, #0, r1, c1, c2, #9
180 mrrc p7, #16, r5, r4, c1
181 mrrc2 p7, #17, r5, r4, c1
182 @ CHECK-ERRORS: error: invalid operand for instruction
183 @ CHECK-ERRORS: error: invalid operand for instruction
184 @ CHECK-ERRORS: error: invalid operand for instruction
185 @ CHECK-ERRORS: error: invalid operand for instruction
186 @ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
187 @ CHECK-ERRORS-V7: error: immediate operand must be in the range [0,15]
188 @ CHECK-ERRORS-V8: error: invalid operand for instruction
190 @ Shifter operand validation for PKH instructions.
191 pkhbt r2, r2, r3, lsl #-1
192 pkhbt r2, r2, r3, lsl #32
193 pkhtb r2, r2, r3, asr #0
194 pkhtb r2, r2, r3, asr #33
195 pkhbt r2, r2, r3, asr #3
196 pkhtb r2, r2, r3, lsl #3
198 @ CHECK-ERRORS: error: immediate value out of range
199 @ CHECK-ERRORS: pkhbt r2, r2, r3, lsl #-1
201 @ CHECK-ERRORS: error: immediate value out of range
202 @ CHECK-ERRORS: pkhbt r2, r2, r3, lsl #32
204 @ CHECK-ERRORS: error: immediate value out of range
205 @ CHECK-ERRORS: pkhtb r2, r2, r3, asr #0
207 @ CHECK-ERRORS: error: immediate value out of range
208 @ CHECK-ERRORS: pkhtb r2, r2, r3, asr #33
210 @ CHECK-ERRORS: error: lsl operand expected.
211 @ CHECK-ERRORS: pkhbt r2, r2, r3, asr #3
213 @ CHECK-ERRORS: error: asr operand expected.
214 @ CHECK-ERRORS: pkhtb r2, r2, r3, lsl #3
218 @ bad values for SETEND
223 @ CHECK-ERRORS: error: instruction 'setend' is not predicable, but condition code specified
224 @ CHECK-ERRORS: setendne be
226 @ CHECK-ERRORS: error: 'be' or 'le' operand expected
227 @ CHECK-ERRORS: setend me
229 @ CHECK-ERRORS: error: 'be' or 'le' operand expected
230 @ CHECK-ERRORS: setend 1
234 @ Out of range immediates and bad shift types for SSAT
235 ssat r8, #0, r10, lsl #8
236 ssat r8, #33, r10, lsl #8
237 ssat r8, #1, r10, lsl #-1
238 ssat r8, #1, r10, lsl #32
239 ssat r8, #1, r10, asr #0
240 ssat r8, #1, r10, asr #33
241 ssat r8, #1, r10, lsr #5
242 ssat r8, #1, r10, lsl fred
243 ssat r8, #1, r10, lsl #fred
245 @ CHECK-ERRORS: error: invalid operand for instruction
246 @ CHECK-ERRORS: ssat r8, #0, r10, lsl #8
248 @ CHECK-ERRORS: error: invalid operand for instruction
249 @ CHECK-ERRORS: ssat r8, #33, r10, lsl #8
251 @ CHECK-ERRORS: error: 'lsr' shift amount must be in range [0,31]
252 @ CHECK-ERRORS: ssat r8, #1, r10, lsl #-1
254 @ CHECK-ERRORS: error: 'lsr' shift amount must be in range [0,31]
255 @ CHECK-ERRORS: ssat r8, #1, r10, lsl #32
257 @ CHECK-ERRORS: error: 'asr' shift amount must be in range [1,32]
258 @ CHECK-ERRORS: ssat r8, #1, r10, asr #0
260 @ CHECK-ERRORS: error: 'asr' shift amount must be in range [1,32]
261 @ CHECK-ERRORS: ssat r8, #1, r10, asr #33
263 @ CHECK-ERRORS: error: shift operator 'asr' or 'lsl' expected
264 @ CHECK-ERRORS: ssat r8, #1, r10, lsr #5
266 @ CHECK-ERRORS: error: '#' expected
267 @ CHECK-ERRORS: ssat r8, #1, r10, lsl fred
269 @ CHECK-ERRORS: error: shift amount must be an immediate
270 @ CHECK-ERRORS: ssat r8, #1, r10, lsl #fred
273 @ Out of range immediates for SSAT16
277 @ CHECK-ERRORS: error: invalid operand for instruction
278 @ CHECK-ERRORS: ssat16 r2, #0, r7
280 @ CHECK-ERRORS: error: invalid operand for instruction
281 @ CHECK-ERRORS: ssat16 r3, #17, r5
285 @ Out of order STM registers
288 @ CHECK-ERRORS: warning: register list not in ascending order
289 @ CHECK-ERRORS: stmda sp!, {r5, r2}
293 @ Out of range immediate on SVC
295 @ CHECK-ERRORS: error: invalid operand for instruction
296 @ CHECK-ERRORS: svc #0x1000000
300 @ Out of order Rt/Rt2 operands for ldrexd/strexd
302 strexd r6, r5, r3, [r8]
304 @ CHECK-ERRORS: error: destination operands must be sequential
305 @ CHECK-ERRORS: ldrexd r4, r3, [r8]
307 @ CHECK-ERRORS: error: source operands must be sequential
308 @ CHECK-ERRORS: strexd r6, r5, r3, [r8]
311 @ Illegal rotate operators for extend instructions
314 sxtb r8, r3, ror #8 -
315 sxtab r3, r8, r3, ror #(fred - wilma)
316 sxtab r7, r8, r3, ror #25
317 sxtah r9, r3, r3, ror #-8
318 sxtb16ge r2, r3, lsr #24
320 @ CHECK-ERRORS: error: invalid operand for instruction
321 @ CHECK-ERRORS: sxtb r8, r3, #8
323 @ CHECK-ERRORS: error: '#' expected
324 @ CHECK-ERRORS: sxtb r8, r3, ror 24
326 @ CHECK-ERRORS: error: unknown token in expression
327 @ CHECK-ERRORS: sxtb r8, r3, ror #8 -
329 @ CHECK-ERRORS: error: malformed rotate expression
330 @ CHECK-ERRORS: sxtb r8, r3, ror #8 -
332 @ CHECK-ERRORS: error: rotate amount must be an immediate
333 @ CHECK-ERRORS: sxtab r3, r8, r3, ror #(fred - wilma)
335 @ CHECK-ERRORS: error: 'ror' rotate amount must be 8, 16, or 24
336 @ CHECK-ERRORS: sxtab r7, r8, r3, ror #25
338 @ CHECK-ERRORS: error: 'ror' rotate amount must be 8, 16, or 24
339 @ CHECK-ERRORS: sxtah r9, r3, r3, ror #-8
341 @ CHECK-ERRORS: error: invalid operand for instruction
342 @ CHECK-ERRORS: sxtb16ge r2, r3, lsr #24
345 @ Out of range width for SBFX/UBFX
347 ubfxgt r4, r5, #16, #17
349 @ CHECK-ERRORS: error: bitfield width must be in range [1,32-lsb]
350 @ CHECK-ERRORS: sbfx r4, r5, #31, #2
352 @ CHECK-ERRORS: error: bitfield width must be in range [1,32-lsb]
353 @ CHECK-ERRORS: ubfxgt r4, r5, #16, #17
356 @ Using pc for SBFX/UBFX
361 @ CHECK-ERRORS: error: invalid operand for instruction
362 @ CHECK-ERRORS: sbfx pc, r2, #1, #3
364 @ CHECK-ERRORS: error: invalid operand for instruction
365 @ CHECK-ERRORS: sbfx sp, pc, #4, #5
367 @ CHECK-ERRORS: error: invalid operand for instruction
368 @ CHECK-ERRORS: ubfx pc, r0, #0, #31
370 @ CHECK-ERRORS: error: invalid operand for instruction
371 @ CHECK-ERRORS: ubfx r14, pc, #1, #2
374 @ Out of order Rt/Rt2 operands for ldrd
376 ldrd r4, r3, [r8, #8]!
377 ldrd r4, r3, [r8], #8
378 @ CHECK-ERRORS: error: destination operands must be sequential
379 @ CHECK-ERRORS: ldrd r4, r3, [r8]
381 @ CHECK-ERRORS: error: destination operands must be sequential
382 @ CHECK-ERRORS: ldrd r4, r3, [r8, #8]!
384 @ CHECK-ERRORS: error: destination operands must be sequential
385 @ CHECK-ERRORS: ldrd r4, r3, [r8], #8
389 @ Bad register lists for VFP.
391 @ CHECK-ERRORS: error: non-contiguous register range
392 @ CHECK-ERRORS: vpush {s0, s3}
395 @ Out of range coprocessor option immediate.
396 ldc2 p2, c8, [r1], { 256 }
397 ldc2 p2, c8, [r1], { -1 }
399 @ CHECK-ERRORS-V7: error: coprocessor option must be an immediate in range [0, 255]
400 @ CHECK-ERRORS-V7: ldc2 p2, c8, [r1], { 256 }
402 @ CHECK-ERRORS-V8: error: register expected
403 @ CHECK-ERRORS-V7: error: coprocessor option must be an immediate in range [0, 255]
404 @ CHECK-ERRORS-V7: ldc2 p2, c8, [r1], { -1 }
406 @ CHECK-ERRORS-V8: error: register expected
408 @ Bad CPS instruction format.
410 @ CHECK-ERRORS: error: invalid operand for instruction
411 @ CHECK-ERRORS: cps f,#1
414 @ Bad operands for msr
417 @ CHECK-ERRORS: error: invalid operand for instruction
418 @ CHECK-ERRORS: msr #0, #0
420 @ CHECK-ERRORS: error: invalid operand for instruction
421 @ CHECK-ERRORS: msr foo, #0
426 @ CHECK-ERRORS: error: immediate value out of range
427 @ CHECK-ERRORS: error: immediate value out of range
430 @ CHECK-ERRORS: error: instruction with .n (narrow) qualifier not allowed in arm mode
435 @ CHECK-ERRORS: error: instruction 'dmb' is not predicable, but condition code specified
436 @ CHECK-ERRORS: error: instruction 'dsb' is not predicable, but condition code specified
437 @ CHECK-ERRORS: error: instruction 'isb' is not predicable, but condition code specified
442 @ CHECK-ERRORS: error: instruction 'dmb' is not predicable, but condition code specified
443 @ CHECK-ERRORS: error: instruction 'dsb' is not predicable, but condition code specified
444 @ CHECK-ERRORS: error: instruction 'isb' is not predicable, but condition code specified
446 mcr2le p7, #1, r5, c1, c1, #4
447 mcrr2ne p7, #15, r5, r4, c1
448 mrc2lo p14, #0, r1, c1, c2, #4
449 mrrc2lo p7, #1, r5, r4, c1
450 cdp2hi p10, #0, c6, c12, c0, #7
451 @ CHECK-ERRORS: error: instruction 'mcr2' is not predicable, but condition code specified
452 @ CHECK-ERRORS: error: instruction 'mcrr2' is not predicable, but condition code specified
453 @ CHECK-ERRORS: error: instruction 'mrc2' is not predicable, but condition code specified
454 @ CHECK-ERRORS: error: instruction 'mrrc2' is not predicable, but condition code specified
455 @ CHECK-ERRORS: error: instruction 'cdp2' is not predicable, but condition code specified
458 @ CHECK-ERRORS: error: instruction 'bkpt' is not predicable, but condition code specified
464 @ CHECK-ERRORS: error: writeback register not allowed in register list
465 @ CHECK-ERRORS: error: writeback register not allowed in register list
466 @ CHECK-ERRORS: error: writeback register not allowed in register list
467 @ CHECK-ERRORS: error: writeback register not allowed in register list
469 vrintz.f32.f32 s0, s1
471 vrintx.f64.f64 d2, d5
473 vrinta.f32.f32 s6, s7
475 vrintp.f64.f64 d10, d11
477 @ CHECK-ERRORS-V7: error: instruction requires: FPARMv8
478 @ CHECK-ERRORS-V7: error: instruction requires: FPARMv8
479 @ CHECK-ERRORS-V7: error: instruction requires: FPARMv8
480 @ CHECK-ERRORS-V7: error: instruction requires: FPARMv8
481 @ CHECK-ERRORS-V7: error: instruction requires: FPARMv8
482 @ CHECK-ERRORS-V7: error: instruction requires: FPARMv8
483 @ CHECK-ERRORS-V7: error: instruction requires: FPARMv8
484 @ CHECK-ERRORS-V7: error: instruction requires: FPARMv8
488 @ CHECK-ERRORS: error: system STM cannot have writeback register
489 @ CHECK-ERRORS: error: writeback register only allowed on system LDM if PC in register-list
494 @ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16
496 @ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16
511 @ CHECK-ERRORS: error: source register and base register can't be identical
512 @ CHECK-ERRORS: str r0, [r0, #4]!
514 @ CHECK-ERRORS: error: source register and base register can't be identical
515 @ CHECK-ERRORS: str r0, [r0, r1]!
517 @ CHECK-ERRORS: error: source register and base register can't be identical
518 @ CHECK-ERRORS: str r0, [r0], #4
520 @ CHECK-ERRORS: error: source register and base register can't be identical
521 @ CHECK-ERRORS: str r0, [r0], r1
523 @ CHECK-ERRORS: error: source register and base register can't be identical
524 @ CHECK-ERRORS: strh r0, [r0, #2]!
526 @ CHECK-ERRORS: error: source register and base register can't be identical
527 @ CHECK-ERRORS: strh r0, [r0, r1]!
529 @ CHECK-ERRORS: error: source register and base register can't be identical
530 @ CHECK-ERRORS: strh r0, [r0], #2
532 @ CHECK-ERRORS: error: source register and base register can't be identical
533 @ CHECK-ERRORS: strh r0, [r0], r1
535 @ CHECK-ERRORS: error: source register and base register can't be identical
536 @ CHECK-ERRORS: strb r0, [r0, #1]!
538 @ CHECK-ERRORS: error: source register and base register can't be identical
539 @ CHECK-ERRORS: strb r0, [r0, r1]!
541 @ CHECK-ERRORS: error: source register and base register can't be identical
542 @ CHECK-ERRORS: strb r0, [r0], #1
544 @ CHECK-ERRORS: error: source register and base register can't be identical
545 @ CHECK-ERRORS: strb r0, [r0], r1
568 @ CHECK-ERRORS: error: destination register and base register can't be identical
569 @ CHECK-ERRORS: ldr r0, [r0, #4]!
571 @ CHECK-ERRORS: error: destination register and base register can't be identical
572 @ CHECK-ERRORS: ldr r0, [r0, r1]!
574 @ CHECK-ERRORS: error: destination register and base register can't be identical
575 @ CHECK-ERRORS: ldr r0, [r0], #4
577 @ CHECK-ERRORS: error: destination register and base register can't be identical
578 @ CHECK-ERRORS: ldr r0, [r0], r1
580 @ CHECK-ERRORS: error: destination register and base register can't be identical
581 @ CHECK-ERRORS: ldrh r0, [r0, #2]!
583 @ CHECK-ERRORS: error: destination register and base register can't be identical
584 @ CHECK-ERRORS: ldrh r0, [r0, r1]!
586 @ CHECK-ERRORS: error: destination register and base register can't be identical
587 @ CHECK-ERRORS: ldrh r0, [r0], #2
589 @ CHECK-ERRORS: error: destination register and base register can't be identical
590 @ CHECK-ERRORS: ldrh r0, [r0], r1
592 @ CHECK-ERRORS: error: destination register and base register can't be identical
593 @ CHECK-ERRORS: ldrsh r0, [r0, #2]!
595 @ CHECK-ERRORS: error: destination register and base register can't be identical
596 @ CHECK-ERRORS: ldrsh r0, [r0, r1]!
598 @ CHECK-ERRORS: error: destination register and base register can't be identical
599 @ CHECK-ERRORS: ldrsh r0, [r0], #2
601 @ CHECK-ERRORS: error: destination register and base register can't be identical
602 @ CHECK-ERRORS: ldrsh r0, [r0], r1
604 @ CHECK-ERRORS: error: destination register and base register can't be identical
605 @ CHECK-ERRORS: ldrb r0, [r0, #1]!
607 @ CHECK-ERRORS: error: destination register and base register can't be identical
608 @ CHECK-ERRORS: ldrb r0, [r0, r1]!
610 @ CHECK-ERRORS: error: destination register and base register can't be identical
611 @ CHECK-ERRORS: ldrb r0, [r0], #1
613 @ CHECK-ERRORS: error: destination register and base register can't be identical
614 @ CHECK-ERRORS: ldrb r0, [r0], r1
616 @ CHECK-ERRORS: error: destination register and base register can't be identical
617 @ CHECK-ERRORS: ldrsb r0, [r0, #1]!
619 @ CHECK-ERRORS: error: destination register and base register can't be identical
620 @ CHECK-ERRORS: ldrsb r0, [r0, r1]!
622 @ CHECK-ERRORS: error: destination register and base register can't be identical
623 @ CHECK-ERRORS: ldrsb r0, [r0], #1
625 @ CHECK-ERRORS: error: destination register and base register can't be identical
626 @ CHECK-ERRORS: ldrsb r0, [r0], r1
629 @ Out of range modified immediate values
638 msr APSR_nzcvq, #-128, #2
639 msr apsr_nzcvqg, #0, #1
640 adc r7, r8, #-256, #2
642 sbc r7, r8, #-256, #2
644 add r7, r8, #-2149, #0
646 sub r7, r8, #-2149, #0
648 and r7, r8, #-2149, #0
650 orr r7, r8, #-2149, #0
652 eor r7, r8, #-2149, #0
654 bic r7, r8, #-2149, #0
656 rsb r7, r8, #-2149, #0
658 adds r7, r8, #-2149, #0
659 adds r7, r8, #100, #1
660 subs r7, r8, #-2149, #0
661 subs r7, r8, #100, #1
662 rsbs r7, r8, #-2149, #0
663 rsbs r7, r8, #100, #1
664 rsc r7, r8, #-2149, #0
670 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
671 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
672 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
673 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
674 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
675 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
676 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
677 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
678 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
679 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
680 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
681 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
682 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
683 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
684 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
685 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
686 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
687 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
688 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
689 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
690 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
691 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
692 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
693 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
694 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
695 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
696 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
697 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
698 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
699 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
700 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
701 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
702 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
703 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
704 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
705 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]
706 @ CHECK-ERRORS: error: immediate operand must a number in the range [0, 255]
707 @ CHECK-ERRORS: error: immediate operand must an even number in the range [0, 30]