1// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+vfp2,+mve,+8msecext -show-encoding < %s 2>%t \
2// RUN: | FileCheck --check-prefix=CHECK %s
3// RUN:   FileCheck --check-prefix=ERROR < %t %s
4// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=-vfp2,+mve,+8msecext -show-encoding < %s 2>%t \
5// RUN: | FileCheck --check-prefix=CHECK-NOVFP %s
6// RUN:   FileCheck --check-prefix=ERROR-NOVFP < %t %s
7// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+vfp2,-mve,+8msecext -show-encoding < %s 2>%t \
8// RUN: | FileCheck --check-prefix=CHECK-NOMVE %s
9// RUN:   FileCheck --check-prefix=ERROR-NOMVE < %t %s
10// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+vfp2,+mve,-8msecext -show-encoding < %s 2>%t \
11// RUN: | FileCheck --check-prefix=CHECK-NOSEC %s
12// RUN:   FileCheck --check-prefix=ERROR-NOSEC < %t %s
13// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=-vfp2,-mve,-8msecext -show-encoding < %s 2>%t
14// RUN:   FileCheck --check-prefix=ERROR-NONE < %t %s
15// RUN: not llvm-mc -triple=thumbv8m.main-none-eabi -mattr=+vfp2,+8msecext -show-encoding < %s 2>%t
16// RUN:   FileCheck --check-prefix=ERROR-V8M < %t %s
17
18// ERROR-V8M: instruction requires: armv8.1m.main
19// ERROR-NONE: instruction requires: fp registers
20// CHECK-NOSEC: vstr fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
21// CHECK-NOMVE: vstr fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
22// CHECK-NOVFP: vstr fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
23// CHECK: vstr fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
24vstr fpscr, [r0]
25
26// ERROR-V8M: instruction requires: armv8.1m.main
27// ERROR-NONE: instruction requires: fp registers
28// CHECK-NOSEC: vstr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x09,0xed,0x86,0x4f]
29// CHECK-NOMVE: vstr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x09,0xed,0x86,0x4f]
30// CHECK-NOVFP: vstr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x09,0xed,0x86,0x4f]
31// CHECK: vstr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x09,0xed,0x86,0x4f]
32vstr fpscr_nzcvqc, [r9, #-24]
33
34// ERROR-V8M: instruction requires: armv8.1m.main
35// ERROR-NONE: instruction requires: fp registers
36// CHECK-NOSEC: vstr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x29,0xed,0x86,0x4f]
37// CHECK-NOMVE: vstr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x29,0xed,0x86,0x4f]
38// CHECK-NOVFP: vstr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x29,0xed,0x86,0x4f]
39// CHECK: vstr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x29,0xed,0x86,0x4f]
40vstr fpscr_nzcvqc, [r9, #-24]!
41
42// ERROR-V8M: instruction requires: armv8.1m.main
43// ERROR-NONE: instruction requires: fp registers
44// CHECK-NOSEC: vstr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x29,0xec,0x86,0x4f]
45// CHECK-NOMVE: vstr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x29,0xec,0x86,0x4f]
46// CHECK-NOVFP: vstr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x29,0xec,0x86,0x4f]
47// CHECK: vstr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x29,0xec,0x86,0x4f]
48vstr fpscr_nzcvqc, [r9], #-24
49
50// CHECK-NOSEC: it hi @ encoding: [0x88,0xbf]
51// CHECK-NOMVE: it hi @ encoding: [0x88,0xbf]
52// CHECK-NOVFP: it hi @ encoding: [0x88,0xbf]
53// CHECK: it hi @ encoding: [0x88,0xbf]
54it hi
55
56// ERROR-V8M: instruction requires: armv8.1m.main
57// ERROR-NONE: instruction requires: fp registers
58// CHECK-NOSEC: vstrhi fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
59// CHECK-NOMVE: vstrhi fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
60// CHECK-NOVFP: vstrhi fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
61// CHECK: vstrhi fpscr, [r0] @ encoding: [0x80,0xed,0x80,0x2f]
62vstrhi fpscr, [r0]
63
64// ERROR-V8M: instruction requires: armv8.1m.main
65// ERROR-NONE: instruction requires: fp registers
66// CHECK-NOSEC: vldr fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
67// CHECK-NOMVE: vldr fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
68// CHECK-NOVFP: vldr fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
69// CHECK: vldr fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
70vldr fpscr, [r0]
71
72// ERROR-V8M: instruction requires: armv8.1m.main
73// ERROR-NONE: instruction requires: fp registers
74// CHECK-NOSEC: vldr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x19,0xed,0x86,0x4f]
75// CHECK-NOMVE: vldr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x19,0xed,0x86,0x4f]
76// CHECK-NOVFP: vldr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x19,0xed,0x86,0x4f]
77// CHECK: vldr fpscr_nzcvqc, [r9, #-24] @ encoding: [0x19,0xed,0x86,0x4f]
78vldr fpscr_nzcvqc, [r9, #-24]
79
80// ERROR-V8M: instruction requires: armv8.1m.main
81// ERROR-NONE: instruction requires: fp registers
82// CHECK-NOSEC: vldr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x39,0xed,0x86,0x4f]
83// CHECK-NOMVE: vldr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x39,0xed,0x86,0x4f]
84// CHECK-NOVFP: vldr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x39,0xed,0x86,0x4f]
85// CHECK: vldr fpscr_nzcvqc, [r9, #-24]! @ encoding: [0x39,0xed,0x86,0x4f]
86vldr fpscr_nzcvqc, [r9, #-24]!
87
88// ERROR-V8M: instruction requires: armv8.1m.main
89// ERROR-NONE: instruction requires: fp registers
90// CHECK-NOSEC: vldr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x39,0xec,0x86,0x4f]
91// CHECK-NOMVE: vldr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x39,0xec,0x86,0x4f]
92// CHECK-NOVFP: vldr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x39,0xec,0x86,0x4f]
93// CHECK: vldr fpscr_nzcvqc, [r9], #-24 @ encoding: [0x39,0xec,0x86,0x4f]
94vldr fpscr_nzcvqc, [r9], #-24
95
96// ERROR-V8M: instruction requires: armv8.1m.main
97// ERROR-NONE: instruction requires: fp registers
98// CHECK-NOSEC: vldr fpscr_nzcvqc, [sp], #-52 @ encoding: [0x3d,0xec,0x8d,0x4f]
99// CHECK-NOMVE: vldr fpscr_nzcvqc, [sp], #-52 @ encoding: [0x3d,0xec,0x8d,0x4f]
100// CHECK-NOVFP: vldr fpscr_nzcvqc, [sp], #-52 @ encoding: [0x3d,0xec,0x8d,0x4f]
101// CHECK: vldr fpscr_nzcvqc, [sp], #-52 @ encoding: [0x3d,0xec,0x8d,0x4f]
102vldr fpscr_nzcvqc, [sp], #-52
103
104// CHECK-NOSEC: it hi @ encoding: [0x88,0xbf]
105// CHECK-NOMVE: it hi @ encoding: [0x88,0xbf]
106// CHECK-NOVFP: it hi @ encoding: [0x88,0xbf]
107// CHECK: it hi @ encoding: [0x88,0xbf]
108it hi
109
110// ERROR-V8M: instruction requires: armv8.1m.main
111// ERROR-NONE: instruction requires: fp registers
112// CHECK-NOSEC: vldrhi fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
113// CHECK-NOMVE: vldrhi fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
114// CHECK-NOVFP: vldrhi fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
115// CHECK: vldrhi fpscr, [r0] @ encoding: [0x90,0xed,0x80,0x2f]
116vldrhi fpscr, [r0]
117
118// ERROR-V8M: instruction requires: armv8.1m.main
119// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
120// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
121// CHECK-NOMVE: vstr fpcxts, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xef]
122// CHECK-NOVFP: vstr fpcxts, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xef]
123// CHECK: vstr fpcxts, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xef]
124vstr fpcxts, [r12, #508]
125
126// ERROR-V8M: instruction requires: armv8.1m.main
127// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
128// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
129// CHECK-NOMVE: vstr fpcxts, [r12, #508]! @ encoding: [0xec,0xed,0xff,0xef]
130// CHECK-NOVFP: vstr fpcxts, [r12, #508]! @ encoding: [0xec,0xed,0xff,0xef]
131// CHECK: vstr fpcxts, [r12, #508]! @ encoding: [0xec,0xed,0xff,0xef]
132vstr fpcxts, [r12, #508]!
133
134// ERROR-V8M: instruction requires: armv8.1m.main
135// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
136// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
137// CHECK-NOMVE: vstr fpcxts, [r12], #508 @ encoding: [0xec,0xec,0xff,0xef]
138// CHECK-NOVFP: vstr fpcxts, [r12], #508 @ encoding: [0xec,0xec,0xff,0xef]
139// CHECK: vstr fpcxts, [r12], #508 @ encoding: [0xec,0xec,0xff,0xef]
140vstr fpcxts, [r12], #508
141
142// ERROR-V8M: instruction requires: armv8.1m.main
143// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
144// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
145// CHECK-NOMVE: vstr fpcxts, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xef]
146// CHECK-NOVFP: vstr fpcxts, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xef]
147// CHECK: vstr fpcxts, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xef]
148vstr fpcxts, [sp], #-24
149
150// ERROR-V8M: instruction requires: armv8.1m.main
151// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
152// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
153// CHECK-NOMVE: vldr fpcxts, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xef]
154// CHECK-NOVFP: vldr fpcxts, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xef]
155// CHECK: vldr fpcxts, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xef]
156vldr fpcxts, [r12, #508]
157
158// ERROR-V8M: instruction requires: armv8.1m.main
159// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
160// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
161// CHECK-NOMVE: vldr fpcxts, [r12, #508]! @ encoding: [0xfc,0xed,0xff,0xef]
162// CHECK-NOVFP: vldr fpcxts, [r12, #508]! @ encoding: [0xfc,0xed,0xff,0xef]
163// CHECK: vldr fpcxts, [r12, #508]! @ encoding: [0xfc,0xed,0xff,0xef]
164vldr fpcxts, [r12, #508]!
165
166// ERROR-V8M: instruction requires: armv8.1m.main
167// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
168// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
169// CHECK-NOMVE: vldr fpcxts, [r12], #508 @ encoding: [0xfc,0xec,0xff,0xef]
170// CHECK-NOVFP: vldr fpcxts, [r12], #508 @ encoding: [0xfc,0xec,0xff,0xef]
171// CHECK: vldr fpcxts, [r12], #508 @ encoding: [0xfc,0xec,0xff,0xef]
172vldr fpcxts, [r12], #508
173
174// ERROR-V8M: instruction requires: armv8.1m.main
175// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
176// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
177// CHECK-NOMVE: vldr fpcxts, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xef]
178// CHECK-NOVFP: vldr fpcxts, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xef]
179// CHECK: vldr fpcxts, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xef]
180vldr fpcxts, [sp], #-24
181
182// ERROR-V8M: instruction requires: armv8.1m.main
183// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
184// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
185// CHECK-NOMVE: vstr fpcxtns, [r0] @ encoding: [0xc0,0xed,0x80,0xcf]
186// CHECK-NOVFP: vstr fpcxtns, [r0] @ encoding: [0xc0,0xed,0x80,0xcf]
187// CHECK: vstr fpcxtns, [r0] @ encoding: [0xc0,0xed,0x80,0xcf]
188vstr fpcxtns, [r0]
189
190// ERROR-V8M: instruction requires: armv8.1m.main
191// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
192// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
193// CHECK-NOMVE: vstr fpcxtns, [r9, #-24] @ encoding: [0x49,0xed,0x86,0xcf]
194// CHECK-NOVFP: vstr fpcxtns, [r9, #-24] @ encoding: [0x49,0xed,0x86,0xcf]
195// CHECK: vstr fpcxtns, [r9, #-24] @ encoding: [0x49,0xed,0x86,0xcf]
196vstr fpcxtns, [r9, #-24]
197
198// ERROR-V8M: instruction requires: armv8.1m.main
199// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
200// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
201// CHECK-NOMVE: vstr fpcxtns, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0xcf]
202// CHECK-NOVFP: vstr fpcxtns, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0xcf]
203// CHECK: vstr fpcxtns, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0xcf]
204vstr fpcxtns, [r6, #500]
205
206// ERROR-V8M: instruction requires: armv8.1m.main
207// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
208// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
209// CHECK-NOMVE: vstr fpcxtns, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xcf]
210// CHECK-NOVFP: vstr fpcxtns, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xcf]
211// CHECK: vstr fpcxtns, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xcf]
212vstr fpcxtns, [lr, #-508]
213
214// ERROR-V8M: instruction requires: armv8.1m.main
215// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
216// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
217// CHECK-NOMVE: vstr fpcxtns, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xcf]
218// CHECK-NOVFP: vstr fpcxtns, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xcf]
219// CHECK: vstr fpcxtns, [r12, #508] @ encoding: [0xcc,0xed,0xff,0xcf]
220vstr fpcxtns, [r12, #508]
221
222// ERROR-V8M: instruction requires: armv8.1m.main
223// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
224// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
225// CHECK-NOMVE: vstr fpcxtns, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xcf]
226// CHECK-NOVFP: vstr fpcxtns, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xcf]
227// CHECK: vstr fpcxtns, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xcf]
228vstr fpcxtns, [sp], #-24
229
230// ERROR-V8M: instruction requires: armv8.1m.main
231// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
232// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
233// CHECK-NOMVE: vldr fpcxtns, [r0] @ encoding: [0xd0,0xed,0x80,0xcf]
234// CHECK-NOVFP: vldr fpcxtns, [r0] @ encoding: [0xd0,0xed,0x80,0xcf]
235// CHECK: vldr fpcxtns, [r0] @ encoding: [0xd0,0xed,0x80,0xcf]
236vldr fpcxtns, [r0]
237
238// ERROR-V8M: instruction requires: armv8.1m.main
239// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
240// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
241// CHECK-NOMVE: vldr fpcxtns, [r9, #-24] @ encoding: [0x59,0xed,0x86,0xcf]
242// CHECK-NOVFP: vldr fpcxtns, [r9, #-24] @ encoding: [0x59,0xed,0x86,0xcf]
243// CHECK: vldr fpcxtns, [r9, #-24] @ encoding: [0x59,0xed,0x86,0xcf]
244vldr fpcxtns, [r9, #-24]
245
246// ERROR-V8M: instruction requires: armv8.1m.main
247// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
248// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
249// CHECK-NOMVE: vldr fpcxtns, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0xcf]
250// CHECK-NOVFP: vldr fpcxtns, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0xcf]
251// CHECK: vldr fpcxtns, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0xcf]
252vldr fpcxtns, [r6, #500]
253
254// ERROR-V8M: instruction requires: armv8.1m.main
255// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
256// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
257// CHECK-NOMVE: vldr fpcxtns, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xcf]
258// CHECK-NOVFP: vldr fpcxtns, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xcf]
259// CHECK: vldr fpcxtns, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xcf]
260vldr fpcxtns, [lr, #-508]
261
262// ERROR-V8M: instruction requires: armv8.1m.main
263// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
264// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
265// CHECK-NOMVE: vldr fpcxtns, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xcf]
266// CHECK-NOVFP: vldr fpcxtns, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xcf]
267// CHECK: vldr fpcxtns, [r12, #508] @ encoding: [0xdc,0xed,0xff,0xcf]
268vldr fpcxtns, [r12, #508]
269
270// ERROR-V8M: instruction requires: armv8.1m.main
271// ERROR-NONE: instruction requires: ARMv8-M Security Extensions
272// ERROR-NOSEC: instruction requires: ARMv8-M Security Extensions
273// CHECK-NOMVE: vldr fpcxtns, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xcf]
274// CHECK-NOVFP: vldr fpcxtns, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xcf]
275// CHECK: vldr fpcxtns, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xcf]
276vldr fpcxtns, [sp], #-24
277
278// ERROR-V8M: instruction requires: mve armv8.1m.main
279// ERROR-NONE: instruction requires: mve
280// CHECK-NOSEC: vstr vpr, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0x8f]
281// ERROR-NOMVE: instruction requires: mve
282// CHECK-NOVFP: vstr vpr, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0x8f]
283// CHECK: vstr vpr, [r6, #500] @ encoding: [0xc6,0xed,0xfd,0x8f]
284vstr vpr, [r6, #500]
285
286// ERROR-V8M: instruction requires: mve armv8.1m.main
287// ERROR-NONE: instruction requires: mve
288// CHECK-NOSEC: vstr p0, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xaf]
289// ERROR-NOMVE: instruction requires: mve
290// CHECK-NOVFP: vstr p0, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xaf]
291// CHECK: vstr p0, [lr, #-508] @ encoding: [0x4e,0xed,0xff,0xaf]
292vstr p0, [lr, #-508]
293
294// ERROR-V8M: instruction requires: mve armv8.1m.main
295// ERROR-NONE: instruction requires: mve
296// CHECK-NOSEC: vstr vpr, [r6, #500]! @ encoding: [0xe6,0xed,0xfd,0x8f]
297// ERROR-NOMVE: instruction requires: mve
298// CHECK-NOVFP: vstr vpr, [r6, #500]! @ encoding: [0xe6,0xed,0xfd,0x8f]
299// CHECK: vstr vpr, [r6, #500]! @ encoding: [0xe6,0xed,0xfd,0x8f]
300vstr vpr, [r6, #500]!
301
302// ERROR-V8M: instruction requires: mve armv8.1m.main
303// ERROR-NONE: instruction requires: mve
304// CHECK-NOSEC: vstr p0, [lr, #-508]! @ encoding: [0x6e,0xed,0xff,0xaf]
305// ERROR-NOMVE: instruction requires: mve
306// CHECK-NOVFP: vstr p0, [lr, #-508]! @ encoding: [0x6e,0xed,0xff,0xaf]
307// CHECK: vstr p0, [lr, #-508]! @ encoding: [0x6e,0xed,0xff,0xaf]
308vstr p0, [lr, #-508]!
309
310// ERROR-V8M: instruction requires: mve armv8.1m.main
311// ERROR-NONE: instruction requires: mve
312// CHECK-NOSEC: vstr vpr, [r6], #500 @ encoding: [0xe6,0xec,0xfd,0x8f]
313// ERROR-NOMVE: instruction requires: mve
314// CHECK-NOVFP: vstr vpr, [r6], #500 @ encoding: [0xe6,0xec,0xfd,0x8f]
315// CHECK: vstr vpr, [r6], #500 @ encoding: [0xe6,0xec,0xfd,0x8f]
316vstr vpr, [r6], #500
317
318// ERROR-V8M: instruction requires: mve armv8.1m.main
319// ERROR-NONE: instruction requires: mve
320// CHECK-NOSEC: vstr p0, [lr], #-508 @ encoding: [0x6e,0xec,0xff,0xaf]
321// ERROR-NOMVE: instruction requires: mve
322// CHECK-NOVFP: vstr p0, [lr], #-508 @ encoding: [0x6e,0xec,0xff,0xaf]
323// CHECK: vstr p0, [lr], #-508 @ encoding: [0x6e,0xec,0xff,0xaf]
324vstr p0, [lr], #-508
325
326// ERROR-V8M: instruction requires: mve armv8.1m.main
327// ERROR-NONE: instruction requires: mve
328// CHECK-NOSEC: vstr p0, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xaf]
329// ERROR-NOMVE: instruction requires: mve
330// CHECK-NOVFP: vstr p0, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xaf]
331// CHECK: vstr p0, [sp], #-24 @ encoding: [0x6d,0xec,0x86,0xaf]
332vstr p0, [sp], #-24
333
334// ERROR-V8M: instruction requires: mve armv8.1m.main
335// ERROR-NONE: instruction requires: mve
336// CHECK-NOSEC: vldr vpr, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0x8f]
337// ERROR-NOMVE: instruction requires: mve
338// CHECK-NOVFP: vldr vpr, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0x8f]
339// CHECK: vldr vpr, [r6, #500] @ encoding: [0xd6,0xed,0xfd,0x8f]
340vldr vpr, [r6, #500]
341
342// ERROR-V8M: instruction requires: mve armv8.1m.main
343// ERROR-NONE: instruction requires: mve
344// CHECK-NOSEC: vldr p0, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xaf]
345// ERROR-NOMVE: instruction requires: mve
346// CHECK-NOVFP: vldr p0, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xaf]
347// CHECK: vldr p0, [lr, #-508] @ encoding: [0x5e,0xed,0xff,0xaf]
348vldr p0, [lr, #-508]
349
350// ERROR-V8M: instruction requires: mve armv8.1m.main
351// ERROR-NONE: instruction requires: mve
352// CHECK-NOSEC: vldr vpr, [r6, #500]! @ encoding: [0xf6,0xed,0xfd,0x8f]
353// ERROR-NOMVE: instruction requires: mve
354// CHECK-NOVFP: vldr vpr, [r6, #500]! @ encoding: [0xf6,0xed,0xfd,0x8f]
355// CHECK: vldr vpr, [r6, #500]! @ encoding: [0xf6,0xed,0xfd,0x8f]
356vldr vpr, [r6, #500]!
357
358// ERROR-V8M: instruction requires: mve armv8.1m.main
359// ERROR-NONE: instruction requires: mve
360// CHECK-NOSEC: vldr p0, [lr, #-508]! @ encoding: [0x7e,0xed,0xff,0xaf]
361// ERROR-NOMVE: instruction requires: mve
362// CHECK-NOVFP: vldr p0, [lr, #-508]! @ encoding: [0x7e,0xed,0xff,0xaf]
363// CHECK: vldr p0, [lr, #-508]! @ encoding: [0x7e,0xed,0xff,0xaf]
364vldr p0, [lr, #-508]!
365
366// ERROR-V8M: instruction requires: mve armv8.1m.main
367// ERROR-NONE: instruction requires: mve
368// CHECK-NOSEC: vldr vpr, [r6], #500 @ encoding: [0xf6,0xec,0xfd,0x8f]
369// ERROR-NOMVE: instruction requires: mve
370// CHECK-NOVFP: vldr vpr, [r6], #500 @ encoding: [0xf6,0xec,0xfd,0x8f]
371// CHECK: vldr vpr, [r6], #500 @ encoding: [0xf6,0xec,0xfd,0x8f]
372vldr vpr, [r6], #500
373
374// ERROR-V8M: instruction requires: mve armv8.1m.main
375// ERROR-NONE: instruction requires: mve
376// CHECK-NOSEC: vldr p0, [lr], #-508 @ encoding: [0x7e,0xec,0xff,0xaf]
377// ERROR-NOMVE: instruction requires: mve
378// CHECK-NOVFP: vldr p0, [lr], #-508 @ encoding: [0x7e,0xec,0xff,0xaf]
379// CHECK: vldr p0, [lr], #-508 @ encoding: [0x7e,0xec,0xff,0xaf]
380vldr p0, [lr], #-508
381
382// ERROR-V8M: instruction requires: mve armv8.1m.main
383// ERROR-NONE: instruction requires: mve
384// CHECK-NOSEC: vldr p0, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xaf]
385// ERROR-NOMVE: instruction requires: mve
386// CHECK-NOVFP: vldr p0, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xaf]
387// CHECK: vldr p0, [sp], #-24 @ encoding: [0x7d,0xec,0x86,0xaf]
388vldr p0, [sp], #-24
389
390// ERROR-NOSEC: invalid instruction
391// ERROR-NOMVE: invalid operand for instruction
392// ERROR-NOVFP: invalid operand for instruction
393// ERROR: invalid operand for instruction
394vldr fpcxtns, [pc, #4]!
395
396// ERROR-NOSEC: invalid instruction
397// ERROR-NOMVE: invalid operand for instruction
398// ERROR-NOVFP: invalid operand for instruction
399// ERROR: invalid operand for instruction
400vstr fpcxtns, [r0, #-507]
401
402// ERROR-NOSEC: invalid instruction
403// ERROR-NOMVE: invalid operand for instruction
404// ERROR-NOVFP: invalid operand for instruction
405// ERROR: invalid operand for instruction
406vldr fpcxtns, [r2, #512]
407
408// ERROR-NOSEC: invalid instruction
409// ERROR-NOMVE: invalid operand for instruction
410// ERROR-NOVFP: invalid operand for instruction
411// ERROR: invalid operand for instruction
412vldr fpcxtns, [pc], #-24
413
414// ERROR-NOSEC: invalid operand for instruction
415// ERROR-NOMVE: invalid operand for instruction
416// ERROR-NOVFP: invalid operand for instruction
417// ERROR: invalid operand for instruction
418vstr vpr, [r0, #-507]
419
420// ERROR-NOSEC: invalid operand for instruction
421// ERROR-NOMVE: invalid instruction
422// ERROR-NOVFP: invalid operand for instruction
423// ERROR: invalid operand for instruction
424vldr p0, [r2, #512]
425
426// ERROR-NOSEC: invalid operand for instruction
427// ERROR-NOMVE: invalid instruction
428// ERROR-NOVFP: invalid operand for instruction
429// ERROR: invalid operand for instruction
430vldr p0, [r2, #2]
431
432// ERROR-NOSEC: invalid operand for instruction
433// ERROR-NOMVE: invalid instruction
434// ERROR-NOVFP: invalid operand for instruction
435// ERROR: invalid operand for instruction
436vldr p0, [pc], #4
437
438// ERROR-NOSEC: invalid operand for instruction
439// ERROR-NOMVE: invalid instruction
440// ERROR-NOVFP: invalid operand for instruction
441// ERROR: invalid operand for instruction
442vldr fpscr, [pc, #4]!
443
444// ERROR-NOSEC: invalid operand for instruction
445// ERROR-NOMVE: invalid operand for instruction
446// ERROR-NOVFP: invalid operand for instruction
447// ERROR: invalid operand for instruction
448vldr fpscr_nzcvqc, [r8], #-53
449
450// ERROR-NOSEC: invalid operand for instruction
451// ERROR-NOMVE: invalid operand for instruction
452// ERROR-NOVFP: invalid operand for instruction
453// ERROR: invalid operand for instruction
454vldr fpscr_nzcvqc, [r8], #2
455
456// ERROR-NOSEC: invalid operand for instruction
457// ERROR-NOMVE: invalid operand for instruction
458// ERROR-NOVFP: invalid operand for instruction
459// ERROR: invalid operand for instruction
460vldr  fpscr_nzcvqc, [pc], #-52
461
462