]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/MC/ARM/diagnostics.s
Vendor import of llvm RELEASE_350/final tag r216957 (effectively, 3.5.0 release):
[FreeBSD/FreeBSD.git] / test / MC / ARM / diagnostics.s
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:                  ^