Home | History | Annotate | Download | only in ARM
      1 @ RUN: not llvm-mc -triple=armv7-apple-darwin < %s 2> %t
      2 @ RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
      3 @ RUN: not llvm-mc -triple=armv8 < %s 2> %t
      4 @ RUN: FileCheck --check-prefix=CHECK-ERRORS-V8 < %t %s
      5 
      6 @ Check for various assembly diagnostic messages on invalid input.
      7 
      8 @ 's' bit on an instruction that can't accept it.
      9         mlss r1, r2, r3, r4
     10 @ CHECK-ERRORS: error: instruction 'mls' can not set flags,
     11 @ CHECK-ERRORS: but 's' suffix specified
     12 
     13 
     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
     24 
     25 @ CHECK-ERRORS: error: invalid immediate shift value
     26 @ CHECK-ERRORS:         adc r1, r2, r3, lsl #invalid
     27 @ CHECK-ERRORS:                              ^
     28 @ CHECK-ERRORS: error: immediate shift value out of range
     29 @ CHECK-ERRORS:         adc r4, r5, r6, lsl #-1
     30 @ CHECK-ERRORS:                              ^
     31 @ CHECK-ERRORS: error: immediate shift value out of range
     32 @ CHECK-ERRORS:         adc r4, r5, r6, lsl #32
     33 @ CHECK-ERRORS:                              ^
     34 @ CHECK-ERRORS: error: immediate shift value out of range
     35 @ CHECK-ERRORS:         adc r4, r5, r6, lsr #-1
     36 @ CHECK-ERRORS:                              ^
     37 @ CHECK-ERRORS: error: immediate shift value out of range
     38 @ CHECK-ERRORS:         adc r4, r5, r6, lsr #33
     39 @ CHECK-ERRORS:                              ^
     40 @ CHECK-ERRORS: error: immediate shift value out of range
     41 @ CHECK-ERRORS:         adc r4, r5, r6, asr #-1
     42 @ CHECK-ERRORS:                              ^
     43 @ CHECK-ERRORS: error: immediate shift value out of range
     44 @ CHECK-ERRORS:         adc r4, r5, r6, asr #33
     45 @ CHECK-ERRORS:                              ^
     46 @ CHECK-ERRORS: error: immediate shift value out of range
     47 @ CHECK-ERRORS:         adc r4, r5, r6, ror #-1
     48 @ CHECK-ERRORS:                              ^
     49 @ CHECK-ERRORS: error: immediate shift value out of range
     50 @ CHECK-ERRORS:         adc r4, r5, r6, ror #32
     51 
     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]
     63 
     64 @ CHECK-ERRORS: error: shift amount must be an immediate
     65 @ CHECK-ERRORS:         str r1, [r2, r3, lsl #invalid]
     66 @ CHECK-ERRORS:                              ^
     67 @ CHECK-ERRORS: error: immediate shift value out of range
     68 @ CHECK-ERRORS:         ldr r4, [r5], r6, lsl #-1
     69 @ CHECK-ERRORS:                              ^
     70 @ CHECK-ERRORS: error: immediate shift value out of range
     71 @ CHECK-ERRORS:         pld r4, [r5, r6, lsl #32]
     72 @ CHECK-ERRORS:                              ^
     73 @ CHECK-ERRORS: error: immediate shift value out of range
     74 @ CHECK-ERRORS:         str r4, [r5], r6, lsr #-1
     75 @ CHECK-ERRORS:                              ^
     76 @ CHECK-ERRORS: error: immediate shift value out of range
     77 @ CHECK-ERRORS:         ldr r4, [r5, r6, lsr #33]
     78 @ CHECK-ERRORS:                              ^
     79 @ CHECK-ERRORS: error: immediate shift value out of range
     80 @ CHECK-ERRORS:         pld r4, [r5, r6, asr #-1]
     81 @ CHECK-ERRORS:                              ^
     82 @ CHECK-ERRORS: error: immediate shift value out of range
     83 @ CHECK-ERRORS:         str r4, [r5, r6, asr #33]
     84 @ CHECK-ERRORS:                              ^
     85 @ CHECK-ERRORS: error: immediate shift value out of range
     86 @ CHECK-ERRORS:         ldr r4, [r5, r6, ror #-1]
     87 @ CHECK-ERRORS:                              ^
     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]
     92 
     93         @ Out of range 16-bit immediate on BKPT
     94         bkpt #65536
     95 
     96 @ CHECK-ERRORS: error: invalid operand for instruction
     97 
     98         @ Out of range immediates for v8 HLT instruction.
     99         hlt #65536
    100         hlt #-1
    101 @CHECK-ERRORS-V8: error: invalid operand for instruction
    102 @CHECK-ERRORS-V8:         hlt #65536
    103 @CHECK-ERRORS-V8:              ^
    104 @CHECK-ERRORS-V8: error: invalid operand for instruction
    105 @CHECK-ERRORS-V8:         hlt #-1
    106 @CHECK-ERRORS-V8:              ^
    107 
    108         @ Illegal condition code for v8 HLT instruction.
    109         hlteq #2
    110         hltlt #23
    111 @CHECK-ERRORS-V8: error: instruction 'hlt' is not predicable, but condition code specified
    112 @CHECK-ERRORS-V8:        hlteq #2
    113 @CHECK-ERRORS-V8:        ^
    114 @CHECK-ERRORS-V8: error: instruction 'hlt' is not predicable, but condition code specified
    115 @CHECK-ERRORS-V8:        hltlt #23
    116 @CHECK-ERRORS-V8:        ^
    117 
    118         @ Out of range 4 and 3 bit immediates on CDP[2]
    119 
    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
    125 
    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
    130 
    131         @ Out of range immediates for DBG
    132         dbg #-1
    133         dbg #16
    134 
    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
    139 
    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: error: immediate operand must be in the range [0,15]
    153 
    154         @ p10 and p11 are reserved for NEON
    155         mcr p10, #2, r5, c1, c1, #4
    156         mcrr p11, #8, r5, r4, c1
    157 @ CHECK-ERRORS: error: invalid operand for instruction
    158 @ CHECK-ERRORS: error: invalid operand for instruction
    159 
    160         @ Out of range immediate for MOV
    161         movw r9, 0x10000
    162 @ CHECK-ERRORS: error: invalid operand for instruction
    163 
    164         @ Invalid 's' bit usage for MOVW
    165         movs r6, #0xffff
    166         movwseq r9, #0xffff
    167 @ CHECK-ERRORS: error: invalid operand for instruction
    168 @ CHECK-ERRORS: error: instruction 'movw' can not set flags, but 's' suffix specified
    169 
    170         @ Out of range immediate for MOVT
    171         movt r9, 0x10000
    172 @ CHECK-ERRORS: error: invalid operand for instruction
    173 
    174         @ Out of range immediates for MRC/MRC2/MRRC/MRRC2
    175         mrc  p14, #8, r1, c1, c2, #4
    176         mrc  p14, #1, r1, c1, c2, #8
    177         mrc2  p14, #8, r1, c1, c2, #4
    178         mrc2  p14, #0, r1, c1, c2, #9
    179         mrrc  p7, #16, r5, r4, c1
    180         mrrc2  p7, #17, r5, r4, c1
    181 @ CHECK-ERRORS: error: invalid operand for instruction
    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: immediate operand must be in the range [0,15]
    186 @ CHECK-ERRORS: error: immediate operand must be in the range [0,15]
    187 
    188         @ Shifter operand validation for PKH instructions.
    189         pkhbt r2, r2, r3, lsl #-1
    190         pkhbt r2, r2, r3, lsl #32
    191         pkhtb r2, r2, r3, asr #0
    192         pkhtb r2, r2, r3, asr #33
    193         pkhbt r2, r2, r3, asr #3
    194         pkhtb r2, r2, r3, lsl #3
    195 
    196 @ CHECK-ERRORS: error: immediate value out of range
    197 @ CHECK-ERRORS:         pkhbt r2, r2, r3, lsl #-1
    198 @ CHECK-ERRORS:                                ^
    199 @ CHECK-ERRORS: error: immediate value out of range
    200 @ CHECK-ERRORS:         pkhbt r2, r2, r3, lsl #32
    201 @ CHECK-ERRORS:                                ^
    202 @ CHECK-ERRORS: error: immediate value out of range
    203 @ CHECK-ERRORS:         pkhtb r2, r2, r3, asr #0
    204 @ CHECK-ERRORS:                                ^
    205 @ CHECK-ERRORS: error: immediate value out of range
    206 @ CHECK-ERRORS:         pkhtb r2, r2, r3, asr #33
    207 @ CHECK-ERRORS:                                ^
    208 @ CHECK-ERRORS: error: lsl operand expected.
    209 @ CHECK-ERRORS:         pkhbt r2, r2, r3, asr #3
    210 @ CHECK-ERRORS:                           ^
    211 @ CHECK-ERRORS: error: asr operand expected.
    212 @ CHECK-ERRORS:         pkhtb r2, r2, r3, lsl #3
    213 @ CHECK-ERRORS:                           ^
    214 
    215 
    216         @ bad values for SETEND
    217         setendne be
    218         setend me
    219         setend 1
    220 
    221 @ CHECK-ERRORS: error: instruction 'setend' is not predicable, but condition code specified
    222 @ CHECK-ERRORS:         setendne be
    223 @ CHECK-ERRORS:         ^
    224 @ CHECK-ERRORS: error: 'be' or 'le' operand expected
    225 @ CHECK-ERRORS:         setend me
    226 @ CHECK-ERRORS:                  ^
    227 @ CHECK-ERRORS: error: 'be' or 'le' operand expected
    228 @ CHECK-ERRORS:         setend 1
    229 @ CHECK-ERRORS:                ^
    230 
    231 
    232         @ Out of range immediates and bad shift types for SSAT
    233 	ssat	r8, #0, r10, lsl #8
    234 	ssat	r8, #33, r10, lsl #8
    235 	ssat	r8, #1, r10, lsl #-1
    236 	ssat	r8, #1, r10, lsl #32
    237 	ssat	r8, #1, r10, asr #0
    238 	ssat	r8, #1, r10, asr #33
    239         ssat    r8, #1, r10, lsr #5
    240         ssat    r8, #1, r10, lsl fred
    241         ssat    r8, #1, r10, lsl #fred
    242 
    243 @ CHECK-ERRORS: error: invalid operand for instruction
    244 @ CHECK-ERRORS: 	ssat	r8, #0, r10, lsl #8
    245 @ CHECK-ERRORS: 	    	    ^
    246 @ CHECK-ERRORS: error: invalid operand for instruction
    247 @ CHECK-ERRORS: 	ssat	r8, #33, r10, lsl #8
    248 @ CHECK-ERRORS: 	    	    ^
    249 @ CHECK-ERRORS: error: 'lsr' shift amount must be in range [0,31]
    250 @ CHECK-ERRORS: 	ssat	r8, #1, r10, lsl #-1
    251 @ CHECK-ERRORS: 	    	                  ^
    252 @ CHECK-ERRORS: error: 'lsr' shift amount must be in range [0,31]
    253 @ CHECK-ERRORS: 	ssat	r8, #1, r10, lsl #32
    254 @ CHECK-ERRORS: 	    	                  ^
    255 @ CHECK-ERRORS: error: 'asr' shift amount must be in range [1,32]
    256 @ CHECK-ERRORS: 	ssat	r8, #1, r10, asr #0
    257 @ CHECK-ERRORS: 	    	                  ^
    258 @ CHECK-ERRORS: error: 'asr' shift amount must be in range [1,32]
    259 @ CHECK-ERRORS: 	ssat	r8, #1, r10, asr #33
    260 @ CHECK-ERRORS: 	    	                  ^
    261 @ CHECK-ERRORS: error: shift operator 'asr' or 'lsl' expected
    262 @ CHECK-ERRORS:         ssat    r8, #1, r10, lsr #5
    263 @ CHECK-ERRORS:                              ^
    264 @ CHECK-ERRORS: error: '#' expected
    265 @ CHECK-ERRORS:         ssat    r8, #1, r10, lsl fred
    266 @ CHECK-ERRORS:                                  ^
    267 @ CHECK-ERRORS: error: shift amount must be an immediate
    268 @ CHECK-ERRORS:         ssat    r8, #1, r10, lsl #fred
    269 @ CHECK-ERRORS:                                   ^
    270 
    271         @ Out of range immediates for SSAT16
    272 	ssat16	r2, #0, r7
    273 	ssat16	r3, #17, r5
    274 
    275 @ CHECK-ERRORS: error: invalid operand for instruction
    276 @ CHECK-ERRORS: 	ssat16	r2, #0, r7
    277 @ CHECK-ERRORS: 	      	    ^
    278 @ CHECK-ERRORS: error: invalid operand for instruction
    279 @ CHECK-ERRORS: 	ssat16	r3, #17, r5
    280 @ CHECK-ERRORS: 	      	    ^
    281 
    282 
    283         @ Out of order STM registers
    284         stmda sp!, {r5, r2}
    285 
    286 @ CHECK-ERRORS: warning: register list not in ascending order
    287 @ CHECK-ERRORS:         stmda     sp!, {r5, r2}
    288 @ CHECK-ERRORS:                            ^
    289 
    290 
    291         @ Out of range immediate on SVC
    292         svc #0x1000000
    293 @ CHECK-ERRORS: error: invalid operand for instruction
    294 @ CHECK-ERRORS:   svc #0x1000000
    295 @ CHECK-ERRORS:       ^
    296 
    297 
    298         @ Out of order Rt/Rt2 operands for ldrexd/strexd
    299         ldrexd  r4, r3, [r8]
    300         strexd  r6, r5, r3, [r8]
    301 
    302 @ CHECK-ERRORS: error: destination operands must be sequential
    303 @ CHECK-ERRORS:         ldrexd  r4, r3, [r8]
    304 @ CHECK-ERRORS:                     ^
    305 @ CHECK-ERRORS: error: source operands must be sequential
    306 @ CHECK-ERRORS:         strexd  r6, r5, r3, [r8]
    307 @ CHECK-ERRORS:                         ^
    308 
    309         @ Illegal rotate operators for extend instructions
    310         sxtb r8, r3, #8
    311         sxtb r8, r3, ror 24
    312         sxtb r8, r3, ror #8 -
    313         sxtab r3, r8, r3, ror #(fred - wilma)
    314         sxtab r7, r8, r3, ror #25
    315         sxtah r9, r3, r3, ror #-8
    316         sxtb16ge r2, r3, lsr #24
    317 
    318 @ CHECK-ERRORS: error: invalid operand for instruction
    319 @ CHECK-ERRORS:         sxtb r8, r3, #8
    320 @ CHECK-ERRORS:                      ^
    321 @ CHECK-ERRORS: error: '#' expected
    322 @ CHECK-ERRORS:         sxtb r8, r3, ror 24
    323 @ CHECK-ERRORS:                          ^
    324 @ CHECK-ERRORS: error: unknown token in expression
    325 @ CHECK-ERRORS:         sxtb r8, r3, ror #8 -
    326 @ CHECK-ERRORS:                              ^
    327 @ CHECK-ERRORS: error: malformed rotate expression
    328 @ CHECK-ERRORS:         sxtb r8, r3, ror #8 -
    329 @ CHECK-ERRORS:                           ^
    330 @ CHECK-ERRORS: error: rotate amount must be an immediate
    331 @ CHECK-ERRORS:         sxtab r3, r8, r3, ror #(fred - wilma)
    332 @ CHECK-ERRORS:                                ^
    333 @ CHECK-ERRORS: error: 'ror' rotate amount must be 8, 16, or 24
    334 @ CHECK-ERRORS:         sxtab r7, r8, r3, ror #25
    335 @ CHECK-ERRORS:                                ^
    336 @ CHECK-ERRORS: error: 'ror' rotate amount must be 8, 16, or 24
    337 @ CHECK-ERRORS:         sxtah r9, r3, r3, ror #-8
    338 @ CHECK-ERRORS:                                ^
    339 @ CHECK-ERRORS: error: invalid operand for instruction
    340 @ CHECK-ERRORS:         sxtb16ge r2, r3, lsr #24
    341 @ CHECK-ERRORS:                          ^
    342 
    343         @ Out of range width for SBFX/UBFX
    344         sbfx r4, r5, #31, #2
    345         ubfxgt r4, r5, #16, #17
    346 
    347 @ CHECK-ERRORS: error: bitfield width must be in range [1,32-lsb]
    348 @ CHECK-ERRORS:         sbfx r4, r5, #31, #2
    349 @ CHECK-ERRORS:                           ^
    350 @ CHECK-ERRORS: error: bitfield width must be in range [1,32-lsb]
    351 @ CHECK-ERRORS:         ubfxgt r4, r5, #16, #17
    352 @ CHECK-ERRORS:                             ^
    353 
    354         @ Using pc for SBFX/UBFX
    355         sbfx pc, r2, #1, #3
    356         sbfx sp, pc, #4, #5
    357         ubfx pc, r0, #0, #31
    358         ubfx r14, pc, #1, #2
    359 @ CHECK-ERRORS: error: invalid operand for instruction
    360 @ CHECK-ERRORS:         sbfx pc, r2, #1, #3
    361 @ CHECK-ERRORS:              ^
    362 @ CHECK-ERRORS: error: invalid operand for instruction
    363 @ CHECK-ERRORS:         sbfx sp, pc, #4, #5
    364 @ CHECK-ERRORS:                  ^
    365 @ CHECK-ERRORS: error: invalid operand for instruction
    366 @ CHECK-ERRORS:         ubfx pc, r0, #0, #31
    367 @ CHECK-ERRORS:              ^
    368 @ CHECK-ERRORS: error: invalid operand for instruction
    369 @ CHECK-ERRORS:         ubfx r14, pc, #1, #2
    370 @ CHECK-ERRORS:                   ^
    371 
    372         @ Out of order Rt/Rt2 operands for ldrd
    373         ldrd  r4, r3, [r8]
    374         ldrd  r4, r3, [r8, #8]!
    375         ldrd  r4, r3, [r8], #8
    376 @ CHECK-ERRORS: error: destination operands must be sequential
    377 @ CHECK-ERRORS:         ldrd  r4, r3, [r8]
    378 @ CHECK-ERRORS:                   ^
    379 @ CHECK-ERRORS: error: destination operands must be sequential
    380 @ CHECK-ERRORS:         ldrd  r4, r3, [r8, #8]!
    381 @ CHECK-ERRORS:                   ^
    382 @ CHECK-ERRORS: error: destination operands must be sequential
    383 @ CHECK-ERRORS:         ldrd  r4, r3, [r8], #8
    384 @ CHECK-ERRORS:                   ^
    385 
    386 
    387         @ Bad register lists for VFP.
    388         vpush {s0, s3}
    389 @ CHECK-ERRORS: error: non-contiguous register range
    390 @ CHECK-ERRORS:         vpush {s0, s3}
    391 @ CHECK-ERRORS:                    ^
    392 
    393         @ Out of range coprocessor option immediate.
    394         ldc2 p2, c8, [r1], { 256 }
    395         ldc2 p2, c8, [r1], { -1 }
    396 
    397 @ CHECK-ERRORS: error: coprocessor option must be an immediate in range [0, 255]
    398 @ CHECK-ERRORS:         ldc2 p2, c8, [r1], { 256 }
    399 @ CHECK-ERRORS:                              ^
    400 @ CHECK-ERRORS: error: coprocessor option must be an immediate in range [0, 255]
    401 @ CHECK-ERRORS:         ldc2 p2, c8, [r1], { -1 }
    402 @ CHECK-ERRORS:                              ^
    403 
    404         @ Bad CPS instruction format.
    405         cps f,#1
    406 @ CHECK-ERRORS: error: invalid operand for instruction
    407 @ CHECK-ERRORS:         cps f,#1
    408 @ CHECK-ERRORS:               ^
    409 
    410         @ Bad operands for msr
    411         msr #0, #0
    412         msr foo, #0
    413 @ CHECK-ERRORS: error: invalid operand for instruction
    414 @ CHECK-ERRORS:         msr #0, #0
    415 @ CHECK-ERRORS:             ^
    416 @ CHECK-ERRORS: error: invalid operand for instruction
    417 @ CHECK-ERRORS:         msr foo, #0
    418 @ CHECK-ERRORS:             ^
    419 
    420         isb #-1
    421         isb #16
    422 @ CHECK-ERRORS: error: immediate value out of range
    423 @ CHECK-ERRORS: error: immediate value out of range
    424 
    425         nop.n
    426 @ CHECK-ERRORS: error: instruction with .n (narrow) qualifier not allowed in arm mode
    427 
    428 	dmbeq #5
    429 	dsble #15
    430 	isblo #7
    431 @ CHECK-ERRORS: error: instruction 'dmb' is not predicable, but condition code specified
    432 @ CHECK-ERRORS: error: instruction 'dsb' is not predicable, but condition code specified
    433 @ CHECK-ERRORS: error: instruction 'isb' is not predicable, but condition code specified
    434 
    435 	dmblt
    436 	dsbne
    437 	isbeq
    438 @ CHECK-ERRORS: error: instruction 'dmb' is not predicable, but condition code specified
    439 @ CHECK-ERRORS: error: instruction 'dsb' is not predicable, but condition code specified
    440 @ CHECK-ERRORS: error: instruction 'isb' is not predicable, but condition code specified
    441 
    442         mcr2le  p7, #1, r5, c1, c1, #4
    443         mcrr2ne p7, #15, r5, r4, c1
    444         mrc2lo  p14, #0, r1, c1, c2, #4
    445         mrrc2lo  p7, #1, r5, r4, c1
    446         cdp2hi   p10, #0, c6, c12, c0, #7
    447 @ CHECK-ERRORS: error: instruction 'mcr2' is not predicable, but condition code specified
    448 @ CHECK-ERRORS: error: instruction 'mcrr2' is not predicable, but condition code specified
    449 @ CHECK-ERRORS: error: instruction 'mrc2' is not predicable, but condition code specified
    450 @ CHECK-ERRORS: error: instruction 'mrrc2' is not predicable, but condition code specified
    451 @ CHECK-ERRORS: error: instruction 'cdp2' is not predicable, but condition code specified
    452 
    453         bkpteq #7
    454 @ CHECK-ERRORS: error: instruction 'bkpt' is not predicable, but condition code specified
    455 
    456         ldm r2!, {r2, r3}
    457         ldmdb r2!, {r2, r3}
    458         ldmda r2!, {r2, r3}
    459         popeq {sp}
    460 @ CHECK-ERRORS: error: writeback register not allowed in register list
    461 @ CHECK-ERRORS: error: writeback register not allowed in register list
    462 @ CHECK-ERRORS: error: writeback register not allowed in register list
    463 @ CHECK-ERRORS: error: writeback register not allowed in register list
    464 
    465         vrintz.f32.f32 s0, s1
    466         vrintr.f32 s0, s1
    467         vrintx.f64.f64 d2, d5
    468         vrintz.f64 d10, d9
    469         vrinta.f32.f32 s6, s7
    470         vrintn.f32 s8, s9
    471         vrintp.f64.f64 d10, d11
    472         vrintm.f64 d12, d13
    473 @ CHECK-ERRORS: error: instruction requires: FPARMv8
    474 @ CHECK-ERRORS: error: instruction requires: FPARMv8
    475 @ CHECK-ERRORS: error: instruction requires: FPARMv8
    476 @ CHECK-ERRORS: error: instruction requires: FPARMv8
    477 @ CHECK-ERRORS: error: instruction requires: FPARMv8
    478 @ CHECK-ERRORS: error: instruction requires: FPARMv8
    479 @ CHECK-ERRORS: error: instruction requires: FPARMv8
    480 @ CHECK-ERRORS: error: instruction requires: FPARMv8
    481 
    482         stm sp!, {r0, pc}^
    483         ldm sp!, {r0}^
    484 @ CHECK-ERRORS: error: system STM cannot have writeback register
    485 @ CHECK-ERRORS: error: writeback register only allowed on system LDM if PC in register-list
    486 
    487 foo2:
    488         mov r0, foo2
    489         movw r0, foo2
    490 @ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16
    491 @ CHECK-ERRORS:                 ^
    492 @ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16
    493 @ CHECK-ERRORS:                  ^
    494