• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: not llvm-mc -triple aarch64 -show-encoding -mattr=+mte < %s 2>&1| FileCheck %s
2
3irg
4irg x0
5irg q0, x0
6irg w0, x0
7irg x0, q0
8irg x0, w0
9irg x0, x1, q0
10irg x0, x1, w0
11irg x0, x1, sp
12irg x0, x1, #1
13irg x0, #1, x1
14irg #1, x0, x1
15irg x0, x1, x2, x3
16
17// CHECK: too few operands for instruction
18// CHECK-NEXT: irg
19// CHECK: too few operands for instruction
20// CHECK-NEXT: irg x0
21// CHECK: invalid operand for instruction
22// CHECK-NEXT: irg q0, x0
23// CHECK: invalid operand for instruction
24// CHECK-NEXT: irg w0, x0
25// CHECK: invalid operand for instruction
26// CHECK-NEXT: irg x0, q0
27// CHECK: invalid operand for instruction
28// CHECK-NEXT: irg x0, w0
29// CHECK: invalid operand for instruction
30// CHECK-NEXT: irg x0, x1, q0
31// CHECK: invalid operand for instruction
32// CHECK-NEXT: irg x0, x1, w0
33// CHECK: invalid operand for instruction
34// CHECK-NEXT: irg x0, x1, sp
35// CHECK: invalid operand for instruction
36// CHECK-NEXT: irg x0, x1, #1
37// CHECK: invalid operand for instruction
38// CHECK-NEXT: irg x0, #1, x1
39// CHECK: invalid operand for instruction
40// CHECK-NEXT: irg #1, x0, x1
41// CHECK: invalid operand for instruction
42// CHECK-NEXT: irg x0, x1, x2, x3
43
44addg
45addg x0
46addg x0, x1
47addg x0, x1, #0
48addg x0, x1, #1024, #0
49addg x0, x1, #8, #0
50addg x0, x1, #-16, #0
51addg x0, x1, #0, #16
52addg q0, x1, #0, #0
53addg w0, x1, #0, #0
54addg x0, q1, #0, #0
55addg x0, w1, #0, #0
56addg #0, x1, #0, #0
57addg x0, #0, #0, #0
58addg x0, x1, x0, #0
59addg x0, x1, #0, x0
60addg x0, x1, #16, #2, #99
61
62subg
63subg x0
64subg x0, x1
65subg x0, x1, #0
66subg x0, x1, #1024, #0
67subg x0, x1, #8, #0
68subg x0, x1, #-16, #0
69subg x0, x1, #0, #16
70subg q0, x1, #0, #0
71subg w0, x1, #0, #0
72subg x0, q1, #0, #0
73subg x0, w1, #0, #0
74subg #0, x1, #0, #0
75subg x0, #0, #0, #0
76subg x0, x1, x0, #0
77subg x0, x1, #0, x0
78subg x0, x1, #16, #2, #99
79
80// CHECK: too few operands for instruction
81// CHECK-NEXT: addg
82// CHECK: too few operands for instruction
83// CHECK-NEXT: addg x0
84// CHECK: too few operands for instruction
85// CHECK-NEXT: addg x0, x1
86// CHECK: too few operands for instruction
87// CHECK-NEXT: addg x0, x1, #0
88// CHECK: index must be a multiple of 16 in range [0, 1008]
89// CHECK-NEXT: addg x0, x1, #1024, #0
90// CHECK: index must be a multiple of 16 in range [0, 1008]
91// CHECK-NEXT: addg x0, x1, #8, #0
92// CHECK: index must be a multiple of 16 in range [0, 1008]
93// CHECK-NEXT: addg x0, x1, #-16, #0
94// CHECK: immediate must be an integer in range [0, 15]
95// CHECK-NEXT: addg x0, x1, #0, #16
96// CHECK: invalid operand for instruction
97// CHECK-NEXT: addg q0, x1, #0, #0
98// CHECK: invalid operand for instruction
99// CHECK-NEXT: addg w0, x1, #0, #0
100// CHECK: invalid operand for instruction
101// CHECK-NEXT: addg x0, q1, #0, #0
102// CHECK: invalid operand for instruction
103// CHECK-NEXT: addg x0, w1, #0, #0
104// CHECK: invalid operand for instruction
105// CHECK-NEXT: addg #0, x1, #0, #0
106// CHECK: invalid operand for instruction
107// CHECK-NEXT: addg x0, #0, #0, #0
108// CHECK: invalid operand for instruction
109// CHECK-NEXT: addg x0, x1, x0, #0
110// CHECK: immediate must be an integer in range [0, 15]
111// CHECK-NEXT: addg x0, x1, #0, x0
112// CHECK: invalid operand for instruction
113// CHECK-NEXT: addg x0, x1, #16, #2, #99
114
115// CHECK: too few operands for instruction
116// CHECK-NEXT: subg
117// CHECK: too few operands for instruction
118// CHECK-NEXT: subg x0
119// CHECK: too few operands for instruction
120// CHECK-NEXT: subg x0, x1
121// CHECK: too few operands for instruction
122// CHECK-NEXT: subg x0, x1, #0
123// CHECK: index must be a multiple of 16 in range [0, 1008]
124// CHECK-NEXT: subg x0, x1, #1024, #0
125// CHECK: index must be a multiple of 16 in range [0, 1008]
126// CHECK-NEXT: subg x0, x1, #8, #0
127// CHECK: index must be a multiple of 16 in range [0, 1008]
128// CHECK-NEXT: subg x0, x1, #-16, #0
129// CHECK: immediate must be an integer in range [0, 15]
130// CHECK-NEXT: subg x0, x1, #0, #16
131// CHECK: invalid operand for instruction
132// CHECK-NEXT: subg q0, x1, #0, #0
133// CHECK: invalid operand for instruction
134// CHECK-NEXT: subg w0, x1, #0, #0
135// CHECK: invalid operand for instruction
136// CHECK-NEXT: subg x0, q1, #0, #0
137// CHECK: invalid operand for instruction
138// CHECK-NEXT: subg x0, w1, #0, #0
139// CHECK: invalid operand for instruction
140// CHECK-NEXT: subg #0, x1, #0, #0
141// CHECK: invalid operand for instruction
142// CHECK-NEXT: subg x0, #0, #0, #0
143// CHECK: invalid operand for instruction
144// CHECK-NEXT: subg x0, x1, x0, #0
145// CHECK: immediate must be an integer in range [0, 15]
146// CHECK-NEXT: subg x0, x1, #0, x0
147// CHECK: invalid operand for instruction
148// CHECK-NEXT: subg x0, x1, #16, #2, #99
149
150gmi
151gmi x0
152gmi x0, x1
153gmi sp, x0, x1
154gmi x0, x1, sp
155gmi x0, x1, x2, #1
156gmi w0, x1, x2
157gmi x0, w1, x2
158gmi x0, x1, w2
159gmi #1, x1, x2
160gmi x0, #1, x2
161gmi x0, x1, #1
162
163// CHECK: too few operands for instruction
164// CHECK-NEXT: gmi
165// CHECK: too few operands for instruction
166// CHECK-NEXT: gmi x0
167// CHECK: too few operands for instruction
168// CHECK-NEXT: gmi x0, x1
169// CHECK: invalid operand for instruction
170// CHECK-NEXT: gmi sp, x0, x1
171// CHECK: invalid operand for instruction
172// CHECK-NEXT: gmi x0, x1, sp
173// CHECK: invalid operand for instruction
174// CHECK-NEXT: gmi x0, x1, x2, #1
175// CHECK: invalid operand for instruction
176// CHECK-NEXT: gmi w0, x1, x2
177// CHECK: invalid operand for instruction
178// CHECK-NEXT: gmi x0, w1, x2
179// CHECK: invalid operand for instruction
180// CHECK-NEXT: gmi x0, x1, w2
181// CHECK: invalid operand for instruction
182// CHECK-NEXT: gmi #1, x1, x2
183// CHECK: invalid operand for instruction
184// CHECK-NEXT: gmi x0, #1, x2
185// CHECK: invalid operand for instruction
186// CHECK-NEXT: gmi x0, x1, #1
187stg
188stg x0
189stg w0
190stg sp
191stg #1
192stg x0, [x0, #-4112]
193stg x0, [x0, #4096]
194stg x0, [x0, #8]
195stg x0, [x0, x1]
196stg x0, [w0]
197stg x0, [xzr]
198stg x0, [#1]
199
200// CHECK: too few operands for instruction
201// CHECK-NEXT: stg
202// CHECK: too few operands for instruction
203// CHECK-NEXT: stg x0
204// CHECK: invalid operand for instruction
205// CHECK-NEXT: stg w0
206// CHECK: too few operands for instruction
207// CHECK-NEXT: stg sp
208// CHECK: invalid operand for instruction
209// CHECK-NEXT: stg #1
210// CHECK: index must be a multiple of 16 in range [-4096, 4080]
211// CHECK-NEXT: #-4112
212// CHECK: index must be a multiple of 16 in range [-4096, 4080]
213// CHECK-NEXT: #4096
214// CHECK: index must be a multiple of 16 in range [-4096, 4080]
215// CHECK-NEXT: #8
216// CHECK: invalid operand for instruction
217// CHECK-NEXT: stg x0, [x0, x1]
218// CHECK: invalid operand for instruction
219// CHECK-NEXT: stg x0, [w0]
220// CHECK: invalid operand for instruction
221// CHECK-NEXT: stg x0, [xzr]
222// CHECK: invalid operand for instruction
223// CHECK-NEXT: stg x0, [#1]
224
225stzg
226stzg x0
227stzg w0
228stzg sp
229stzg #1
230stzg x0, [x0, #-4112]
231stzg x0, [x0, #4096]
232stzg x0, [x0, #8]
233stzg x0, [x0, x1]
234stzg x0, [w0]
235stzg x0, [xzr]
236stzg x0, [#1]
237
238// CHECK: too few operands for instruction
239// CHECK-NEXT: stzg
240// CHECK: too few operands for instruction
241// CHECK-NEXT: stzg x0
242// CHECK: invalid operand for instruction
243// CHECK-NEXT: stzg w0
244// CHECK: too few operands for instruction
245// CHECK-NEXT: stzg sp
246// CHECK: invalid operand for instruction
247// CHECK-NEXT: stzg #1
248// CHECK: index must be a multiple of 16 in range [-4096, 4080]
249// CHECK-NEXT: #-4112
250// CHECK: index must be a multiple of 16 in range [-4096, 4080]
251// CHECK-NEXT: #4096
252// CHECK: index must be a multiple of 16 in range [-4096, 4080]
253// CHECK-NEXT: #8
254// CHECK: invalid operand for instruction
255// CHECK-NEXT: stzg x0, [x0, x1]
256// CHECK: invalid operand for instruction
257// CHECK-NEXT: stzg x0, [w0]
258// CHECK: invalid operand for instruction
259// CHECK-NEXT: stzg x0, [xzr]
260// CHECK: invalid operand for instruction
261// CHECK-NEXT: stzg x0, [#1]
262
263stg x0, [x0, #-4112]!
264stg x0, [x0, #4096]!
265stg x0, [x0, #8]!
266stg x0, [x0, x1]!
267stg x0, [w0]!
268stg x0, [xzr]!
269stg x0, [#1]!
270
271// CHECK: index must be a multiple of 16 in range [-4096, 4080]
272// CHECK-NEXT: #-4112
273// CHECK: index must be a multiple of 16 in range [-4096, 4080]
274// CHECK-NEXT: #4096
275// CHECK: index must be a multiple of 16 in range [-4096, 4080]
276// CHECK-NEXT: #8
277// CHECK: invalid operand for instruction
278// CHECK-NEXT: stg x0, [x0, x1]!
279// CHECK: invalid operand for instruction
280// CHECK-NEXT: stg x0, [w0]!
281// CHECK: invalid operand for instruction
282// CHECK-NEXT: stg x0, [xzr]!
283// CHECK: invalid operand for instruction
284// CHECK-NEXT: stg x0, [#1]!
285
286stzg x0, [x0, #-4112]!
287stzg x0, [x0, #4096]!
288stzg x0, [x0, #8]!
289stzg x0, [x0, x1]!
290stzg x0, [w0]!
291stzg x0, [xzr]!
292stzg x0, [#1]!
293
294// CHECK: index must be a multiple of 16 in range [-4096, 4080]
295// CHECK-NEXT: #-4112
296// CHECK: index must be a multiple of 16 in range [-4096, 4080]
297// CHECK-NEXT: #4096
298// CHECK: index must be a multiple of 16 in range [-4096, 4080]
299// CHECK-NEXT: #8
300// CHECK: invalid operand for instruction
301// CHECK-NEXT: stzg x0, [x0, x1]!
302// CHECK: invalid operand for instruction
303// CHECK-NEXT: stzg x0, [w0]!
304// CHECK: invalid operand for instruction
305// CHECK-NEXT: stzg x0, [xzr]!
306// CHECK: invalid operand for instruction
307// CHECK-NEXT: stzg x0, [#1]!
308
309stg x0, [x0], #-4112
310stg x0, [x0], #4096
311stg x0, [x0], #8
312stg x0, [x0], x1
313stg x0, [w0], #255
314stg x0, [xzr], #255
315stg x0, [#1], #255
316
317// CHECK: index must be a multiple of 16 in range [-4096, 4080]
318// CHECK-NEXT: #-4112
319// CHECK: index must be a multiple of 16 in range [-4096, 4080]
320// CHECK-NEXT: #4096
321// CHECK: index must be a multiple of 16 in range [-4096, 4080]
322// CHECK-NEXT: #8
323// CHECK: invalid operand for instruction
324// CHECK-NEXT: stg x0, [x0], x1
325// CHECK: invalid operand for instruction
326// CHECK-NEXT: stg x0, [w0], #255
327// CHECK: invalid operand for instruction
328// CHECK-NEXT: stg x0, [xzr], #255
329// CHECK: invalid operand for instruction
330// CHECK-NEXT: stg x0, [#1], #255
331
332stzg x0, [x0], #-4112
333stzg x0, [x0], #4096
334stzg x0, [x0], #8
335stzg x0, [x0], x1
336stzg x0, [w0], #255
337stzg x0, [xzr], #255
338stzg x0, [#1], #255
339
340// CHECK: index must be a multiple of 16 in range [-4096, 4080]
341// CHECK-NEXT: #-4112
342// CHECK: index must be a multiple of 16 in range [-4096, 4080]
343// CHECK-NEXT: #4096
344// CHECK: index must be a multiple of 16 in range [-4096, 4080]
345// CHECK-NEXT: #8
346// CHECK: invalid operand for instruction
347// CHECK-NEXT: stzg x0, [x0], x1
348// CHECK: invalid operand for instruction
349// CHECK-NEXT: stzg x0, [w0], #255
350// CHECK: invalid operand for instruction
351// CHECK-NEXT: stzg x0, [xzr], #255
352// CHECK: invalid operand for instruction
353// CHECK-NEXT: stzg x0, [#1], #255
354
355st2g
356st2g x0
357st2g w0
358st2g sp
359st2g #1
360st2g x0, [x0, #-4112]
361st2g x0, [x0, #4096]
362st2g x0, [x0, #8]
363st2g x0, [x0, x1]
364st2g x0, [w0]
365st2g x0, [xzr]
366st2g x0, [#1]
367
368// CHECK: too few operands for instruction
369// CHECK-NEXT: st2g
370// CHECK: too few operands for instruction
371// CHECK-NEXT: st2g x0
372// CHECK: invalid operand for instruction
373// CHECK-NEXT: st2g w0
374// CHECK: too few operands for instruction
375// CHECK-NEXT: st2g sp
376// CHECK: invalid operand for instruction
377// CHECK-NEXT: st2g #1
378// CHECK: index must be a multiple of 16 in range [-4096, 4080]
379// CHECK-NEXT: #-4112
380// CHECK: index must be a multiple of 16 in range [-4096, 4080]
381// CHECK-NEXT: #4096
382// CHECK: index must be a multiple of 16 in range [-4096, 4080]
383// CHECK-NEXT: #8
384// CHECK: invalid operand for instruction
385// CHECK-NEXT: st2g x0, [x0, x1]
386// CHECK: invalid operand for instruction
387// CHECK-NEXT: st2g x0, [w0]
388// CHECK: invalid operand for instruction
389// CHECK-NEXT: st2g x0, [xzr]
390// CHECK: invalid operand for instruction
391// CHECK-NEXT: st2g x0, [#1]
392
393stz2g
394stz2g x0
395stz2g w0
396stz2g sp
397stz2g #1
398stz2g x0, [x0, #-4112]
399stz2g x0, [x0, #4096]
400stz2g x0, [x0, #8]
401stz2g x0, [x0, x1]
402stz2g x0, [w0]
403stz2g x0, [xzr]
404stz2g x0, [#1]
405
406// CHECK: too few operands for instruction
407// CHECK-NEXT: stz2g
408// CHECK: too few operands for instruction
409// CHECK-NEXT: stz2g x0
410// CHECK: invalid operand for instruction
411// CHECK-NEXT: stz2g w0
412// CHECK: too few operands for instruction
413// CHECK-NEXT: stz2g sp
414// CHECK: invalid operand for instruction
415// CHECK-NEXT: stz2g #1
416// CHECK: index must be a multiple of 16 in range [-4096, 4080]
417// CHECK-NEXT: #-4112
418// CHECK: index must be a multiple of 16 in range [-4096, 4080]
419// CHECK-NEXT: #4096
420// CHECK: index must be a multiple of 16 in range [-4096, 4080]
421// CHECK-NEXT: #8
422// CHECK: invalid operand for instruction
423// CHECK-NEXT: stz2g x0, [x0, x1]
424// CHECK: invalid operand for instruction
425// CHECK-NEXT: stz2g x0, [w0]
426// CHECK: invalid operand for instruction
427// CHECK-NEXT: stz2g x0, [xzr]
428// CHECK: invalid operand for instruction
429// CHECK-NEXT: stz2g x0, [#1]
430
431st2g x0, [x0, #-4112]!
432st2g x0, [x0, #4096]!
433st2g x0, [x0, #8]!
434st2g x0, [x0, x1]!
435st2g x0, [w0, #256]!
436st2g x0, [xzr, #256]!
437st2g x0, [#1, #256]!
438
439// CHECK: index must be a multiple of 16 in range [-4096, 4080]
440// CHECK-NEXT: #-4112
441// CHECK: index must be a multiple of 16 in range [-4096, 4080]
442// CHECK-NEXT: #4096
443// CHECK: index must be a multiple of 16 in range [-4096, 4080]
444// CHECK-NEXT: #8
445// CHECK: invalid operand for instruction
446// CHECK-NEXT: st2g x0, [x0, x1]!
447// CHECK: invalid operand for instruction
448// CHECK-NEXT: st2g x0, [w0, #256]!
449// CHECK: invalid operand for instruction
450// CHECK-NEXT: st2g x0, [xzr, #256]!
451// CHECK: invalid operand for instruction
452// CHECK-NEXT: st2g x0, [#1, #256]!
453
454stz2g x0, [x0, #-4112]!
455stz2g x0, [x0, #4096]!
456stz2g x0, [x0, #8]!
457stz2g x0, [x0, x1]!
458stz2g x0, [w0, #255]!
459stz2g x0, [xzr, #255]!
460stz2g x0, [#1, #255]!
461
462// CHECK: index must be a multiple of 16 in range [-4096, 4080]
463// CHECK-NEXT: #-4112
464// CHECK: index must be a multiple of 16 in range [-4096, 4080]
465// CHECK-NEXT: #4096
466// CHECK: index must be a multiple of 16 in range [-4096, 4080]
467// CHECK-NEXT: #8
468// CHECK: invalid operand for instruction
469// CHECK-NEXT: stz2g x0, [x0, x1]!
470// CHECK: invalid operand for instruction
471// CHECK-NEXT: stz2g x0, [w0, #255]!
472// CHECK: invalid operand for instruction
473// CHECK-NEXT: stz2g x0, [xzr, #255]!
474// CHECK: invalid operand for instruction
475// CHECK-NEXT: stz2g x0, [#1, #255]!
476
477st2g x0, [x0], #-4112
478st2g x0, [x0], #4096
479st2g x0, [x0], #8
480st2g x0, [x0], x1
481st2g x0, [w0], #255
482st2g x0, [xzr], #255
483st2g x0, [#1], #255
484
485// CHECK: index must be a multiple of 16 in range [-4096, 4080]
486// CHECK-NEXT: #-4112
487// CHECK: index must be a multiple of 16 in range [-4096, 4080]
488// CHECK-NEXT: #4096
489// CHECK: index must be a multiple of 16 in range [-4096, 4080]
490// CHECK-NEXT: #8
491// CHECK: invalid operand for instruction
492// CHECK-NEXT: st2g x0, [x0], x1
493// CHECK: invalid operand for instruction
494// CHECK-NEXT: st2g x0, [w0], #255
495// CHECK: invalid operand for instruction
496// CHECK-NEXT: st2g x0, [xzr], #255
497// CHECK: invalid operand for instruction
498// CHECK-NEXT: st2g x0, [#1], #255
499
500stz2g x0, [x0], #-4112
501stz2g x0, [x0], #4096
502stz2g x0, [x0], #8
503stz2g x0, [x0], x1
504stz2g x0, [w0], #255
505stz2g x0, [xzr], #255
506stz2g x0, [#1], #255
507
508// CHECK: index must be a multiple of 16 in range [-4096, 4080]
509// CHECK-NEXT: #-4112
510// CHECK: index must be a multiple of 16 in range [-4096, 4080]
511// CHECK-NEXT: #4096
512// CHECK: index must be a multiple of 16 in range [-4096, 4080]
513// CHECK-NEXT: #8
514// CHECK: invalid operand for instruction
515// CHECK-NEXT: stz2g x0, [x0], x1
516// CHECK: invalid operand for instruction
517// CHECK-NEXT: stz2g x0, [w0], #255
518// CHECK: invalid operand for instruction
519// CHECK-NEXT: stz2g x0, [xzr], #255
520// CHECK: invalid operand for instruction
521// CHECK-NEXT: stz2g x0, [#1], #255
522
523stgp sp, x1, [x2, #16]
524stgp x0, sp, [x2, #16]
525stgp x0, x1, [xzr, #16]
526stgp x0, x1, [x2, #-1040]
527stgp x0, x1, [x2, #1024]
528stgp x0, x1, [x2, #8]
529stgp x0, x1, [x2, x3]
530stgp w0, x1, [x2, #1]
531stgp x0, w1, [x2, #1]
532stgp x0, x1, [w2, #1]
533stgp #1, x1, [x3, #1]
534stgp x0, #1, [x3, #1]
535stgp x0, x1, [#1, #1]
536
537// CHECK: invalid operand for instruction
538// CHECK-NEXT: stgp sp
539// CHECK: invalid operand for instruction
540// CHECK-NEXT: stgp x0, sp
541// CHECK: invalid operand for instruction
542// CHECK-NEXT: stgp x0, x1, [xzr
543// CHECK: index must be a multiple of 16 in range [-1024, 1008]
544// CHECK-NEXT: #-1040
545// CHECK: index must be a multiple of 16 in range [-1024, 1008]
546// CHECK-NEXT: #1024
547// CHECK: index must be a multiple of 16 in range [-1024, 1008]
548// CHECK-NEXT: #8
549// CHECK: invalid operand for instruction
550// CHECK-NEXT: stgp x0, x1, [x2, x3]
551// CHECK: invalid operand for instruction
552// CHECK-NEXT: stgp w0, x1, [x2, #1]
553// CHECK: invalid operand for instruction
554// CHECK-NEXT: stgp x0, w1, [x2, #1]
555// CHECK: invalid operand for instruction
556// CHECK-NEXT: stgp x0, x1, [w2, #1]
557// CHECK: invalid operand for instruction
558// CHECK-NEXT: stgp #1, x1, [x3, #1]
559// CHECK: invalid operand for instruction
560// CHECK-NEXT: stgp x0, #1, [x3, #1]
561// CHECK: invalid operand for instruction
562// CHECK-NEXT: stgp x0, x1, [#1, #1]
563
564stgp sp, x1, [x2, #16]!
565stgp x0, sp, [x2, #16]!
566stgp x0, x1, [xzr, #16]!
567stgp x0, x1, [x2, #-1040]!
568stgp x0, x1, [x2, #1024]!
569stgp x0, x1, [x2, #8]!
570stgp x0, x1, [x2, x3]!
571stgp w0, x1, [x2, #1]!
572stgp x0, w1, [x2, #1]!
573stgp x0, x1, [w2, #1]!
574stgp #1, x1, [x3, #1]!
575stgp x0, #1, [x3, #1]!
576stgp x0, x1, [#1, #1]!
577
578// CHECK: invalid operand for instruction
579// CHECK-NEXT: stgp sp
580// CHECK: invalid operand for instruction
581// CHECK-NEXT: stgp x0, sp
582// CHECK: invalid operand for instruction
583// CHECK-NEXT: stgp x0, x1, [xzr
584// CHECK: index must be a multiple of 16 in range [-1024, 1008]
585// CHECK-NEXT: #-1040
586// CHECK: index must be a multiple of 16 in range [-1024, 1008]
587// CHECK-NEXT: #1024
588// CHECK: index must be a multiple of 16 in range [-1024, 1008]
589// CHECK-NEXT: #8
590// CHECK: invalid operand for instruction
591// CHECK-NEXT: stgp x0, x1, [x2, x3]!
592// CHECK: invalid operand for instruction
593// CHECK-NEXT: stgp w0, x1, [x2, #1]!
594// CHECK: invalid operand for instruction
595// CHECK-NEXT: stgp x0, w1, [x2, #1]!
596// CHECK: invalid operand for instruction
597// CHECK-NEXT: stgp x0, x1, [w2, #1]!
598// CHECK: invalid operand for instruction
599// CHECK-NEXT: stgp #1, x1, [x3, #1]!
600// CHECK: invalid operand for instruction
601// CHECK-NEXT: stgp x0, #1, [x3, #1]!
602// CHECK: invalid operand for instruction
603// CHECK-NEXT: stgp x0, x1, [#1, #1]!
604
605stgp sp, x1, [x2], #16
606stgp x0, sp, [x2], #16
607stgp x0, x1, [xzr], #16
608stgp x0, x1, [x2], #-1040
609stgp x0, x1, [x2], #1024
610stgp x0, x1, [x2], #8
611stgp x0, x1, [x2], x3
612stgp w0, x1, [x2], #1
613stgp x0, w1, [x2], #1
614stgp x0, x1, [w2], #1
615stgp #1, x1, [x2], #1
616stgp x0, #1, [x2], #1
617stgp x0, x1, [#1], #1
618
619// CHECK: invalid operand for instruction
620// CHECK-NEXT: stgp sp
621// CHECK: invalid operand for instruction
622// CHECK-NEXT: stgp x0, sp
623// CHECK: invalid operand for instruction
624// CHECK-NEXT: stgp x0, x1, [xzr
625// CHECK: index must be a multiple of 16 in range [-1024, 1008]
626// CHECK-NEXT: #-1040
627// CHECK: index must be a multiple of 16 in range [-1024, 1008]
628// CHECK-NEXT: #1024
629// CHECK: index must be a multiple of 16 in range [-1024, 1008]
630// CHECK-NEXT: #8
631// CHECK: invalid operand for instruction
632// CHECK-NEXT: stgp x0, x1, [x2], x3
633// CHECK: invalid operand for instruction
634// CHECK-NEXT: stgp w0, x1, [x2], #1
635// CHECK: invalid operand for instruction
636// CHECK-NEXT: stgp x0, w1, [x2], #1
637// CHECK: invalid operand for instruction
638// CHECK-NEXT: stgp x0, x1, [w2], #1
639// CHECK: invalid operand for instruction
640// CHECK-NEXT: stgp #1, x1, [x2], #1
641// CHECK: invalid operand for instruction
642// CHECK-NEXT: stgp x0, #1, [x2], #1
643// CHECK: invalid operand for instruction
644// CHECK-NEXT: stgp x0, x1, [#1], #1
645
646mrs tco
647mrs gcr_el1
648mrs rgsr_el1
649mrs tfsr_el1
650mrs tfsr_el2
651mrs tfsr_el3
652mrs tfsr_el12
653mrs tfsre0_el1
654mrs gmid_el1
655
656// CHECK:      invalid operand for instruction
657// CHECK-NEXT: tco
658// CHECK:      invalid operand for instruction
659// CHECK-NEXT: gcr_el1
660// CHECK:      invalid operand for instruction
661// CHECK-NEXT: rgsr_el1
662// CHECK:      invalid operand for instruction
663// CHECK-NEXT: tfsr_el1
664// CHECK:      invalid operand for instruction
665// CHECK-NEXT: tfsr_el2
666// CHECK:      invalid operand for instruction
667// CHECK-NEXT: tfsr_el3
668// CHECK:      invalid operand for instruction
669// CHECK-NEXT: tfsr_el12
670// CHECK:      invalid operand for instruction
671// CHECK-NEXT: tfsre0_el1
672// CHECK:      invalid operand for instruction
673// CHECK-NEXT: gmid_el1
674
675mrs tco, #0
676mrs tco, x0
677mrs gcr_el1, x1
678mrs rgsr_el1, x2
679mrs tfsr_el1, x3
680mrs tfsr_el2, x4
681mrs tfsr_el3, x5
682mrs tfsr_el12, x6
683mrs tfsre0_el1, x7
684mrs gmid_el1, x7
685
686// CHECK:      invalid operand for instruction
687// CHECK-NEXT: tco, #0
688// CHECK:      invalid operand for instruction
689// CHECK-NEXT: tco, x0
690// CHECK:      invalid operand for instruction
691// CHECK-NEXT: gcr_el1
692// CHECK:      invalid operand for instruction
693// CHECK-NEXT: rgsr_el1
694// CHECK:      invalid operand for instruction
695// CHECK-NEXT: tfsr_el1
696// CHECK:      invalid operand for instruction
697// CHECK-NEXT: tfsr_el2
698// CHECK:      invalid operand for instruction
699// CHECK-NEXT: tfsr_el3
700// CHECK:      invalid operand for instruction
701// CHECK-NEXT: tfsr_el12
702// CHECK:      invalid operand for instruction
703// CHECK-NEXT: tfsre0_el1
704// CHECK:      invalid operand for instruction
705// CHECK-NEXT: gmid_el1
706
707msr tco
708msr gcr_el1
709msr rgsr_el1
710msr tfsr_el1
711msr tfsr_el2
712msr tfsr_el3
713msr tfsr_el12
714msr tfsre0_el1
715msr gmid_el1
716
717// CHECK:      too few operands for instruction
718// CHECK-NEXT: tco
719// CHECK:      too few operands for instruction
720// CHECK-NEXT: gcr_el1
721// CHECK:      too few operands for instruction
722// CHECK-NEXT: rgsr_el1
723// CHECK:      too few operands for instruction
724// CHECK-NEXT: tfsr_el1
725// CHECK:      too few operands for instruction
726// CHECK-NEXT: tfsr_el2
727// CHECK:      too few operands for instruction
728// CHECK-NEXT: tfsr_el3
729// CHECK:      too few operands for instruction
730// CHECK-NEXT: tfsr_el12
731// CHECK:      too few operands for instruction
732// CHECK-NEXT: tfsre0_el1
733// CHECK:      expected writable system register or pstate
734// CHECK-NEXT: gmid_el1
735
736msr x0, tco
737msr x1, gcr_el1
738msr x2, rgsr_el1
739msr x3, tfsr_el1
740msr x4, tfsr_el2
741msr x5, tfsr_el3
742msr x6, tfsr_el12
743msr x7, tfsre0_el1
744msr x7, gmid_el1
745
746// CHECK:      expected writable system register or pstate
747// CHECK-NEXT: tco
748// CHECK:      expected writable system register or pstate
749// CHECK-NEXT: gcr_el1
750// CHECK:      expected writable system register or pstate
751// CHECK-NEXT: rgsr_el1
752// CHECK:      expected writable system register or pstate
753// CHECK-NEXT: tfsr_el1
754// CHECK:      expected writable system register or pstate
755// CHECK-NEXT: tfsr_el2
756// CHECK:      expected writable system register or pstate
757// CHECK-NEXT: tfsr_el3
758// CHECK:      expected writable system register or pstate
759// CHECK-NEXT: tfsr_el12
760// CHECK:      expected writable system register or pstate
761// CHECK-NEXT: tfsre0_el1
762// CHECK:      expected writable system register or pstate
763// CHECK-NEXT: gmid_el1
764
765msr gmid_el1, x7
766
767// CHECK:      expected writable system register or pstate
768// CHECK-NEXT: gmid_el1
769
770// Among the system registers added by MTE, only TCO can be used with MSR (imm).
771// The rest can only be used with MSR (reg).
772msr gcr_el1, #1
773msr rgsr_el1, #2
774msr tfsr_el1, #3
775msr tfsr_el2, #4
776msr tfsr_el3, #5
777msr tfsr_el12, #6
778msr tfsre0_el1, #7
779// Is read only
780msr gmid_el1, #7
781
782// CHECK:      invalid operand for instruction
783// CHECK-NEXT: gcr_el1
784// CHECK:      invalid operand for instruction
785// CHECK-NEXT: rgsr_el1
786// CHECK:      invalid operand for instruction
787// CHECK-NEXT: tfsr_el1
788// CHECK:      invalid operand for instruction
789// CHECK-NEXT: tfsr_el2
790// CHECK:      invalid operand for instruction
791// CHECK-NEXT: tfsr_el3
792// CHECK:      invalid operand for instruction
793// CHECK-NEXT: tfsr_el12
794// CHECK:      invalid operand for instruction
795// CHECK-NEXT: tfsre0_el1
796// CHECK:      expected writable system register or pstate
797// CHECK-NEXT: gmid_el1
798
799// Xd cannot be the stack pointer, the rest can
800subps sp, x0, x1
801subp  sp, x2, x3
802subp  w0, x1, x2
803subp  x0, w1, x2
804subp  x0, x1, w2
805subps w0, x1, x2
806subps x0, w1, x2
807subps x0, x1, w2
808subp  #1, x1, x2
809subp  x0, #1, x2
810subp  x0, x1, #1
811subps #1, x1, x2
812subps x0, #1, x2
813subps x0, x1, #1
814
815// CHECK:      invalid operand for instruction
816// CHECK-NEXT: sp
817// CHECK:      invalid operand for instruction
818// CHECK-NEXT: sp
819// CHECK:      invalid operand for instruction
820// CHECK-NEXT: subp  w0, x1, x2
821// CHECK:      invalid operand for instruction
822// CHECK-NEXT: subp  x0, w1, x2
823// CHECK:      invalid operand for instruction
824// CHECK-NEXT: subp  x0, x1, w2
825// CHECK:      invalid operand for instruction
826// CHECK-NEXT: subps w0, x1, x2
827// CHECK:      invalid operand for instruction
828// CHECK-NEXT: subps x0, w1, x2
829// CHECK:      invalid operand for instruction
830// CHECK-NEXT: subps x0, x1, w2
831// CHECK: invalid operand for instruction
832// CHECK-NEXT: subp  #1, x1, x2
833// CHECK: invalid operand for instruction
834// CHECK-NEXT: subp  x0, #1, x2
835// CHECK: invalid operand for instruction
836// CHECK-NEXT: subp  x0, x1, #1
837// CHECK: invalid operand for instruction
838// CHECK-NEXT: subps #1, x1, x2
839// CHECK: invalid operand for instruction
840// CHECK-NEXT: subps x0, #1, x2
841// CHECK: invalid operand for instruction
842// CHECK-NEXT: subps x0, x1, #1
843
844subps x0, x1, x2, x3
845subp  x0, x1, x2, x3
846
847// CHECK: invalid operand for instruction
848// CHECK-NEXT: subps x0, x1, x2, x3
849// CHECK: invalid operand for instruction
850// CHECK-NEXT: subp x0, x1, x2, x3
851
852subps
853subp
854cmpp
855subps x0
856subp  x0
857cmpp  x0
858subps x0, x1
859subp  x0, x1
860
861// CHECK:      too few operands for instruction
862// CHECK-NEXT: subps
863// CHECK:      too few operands for instruction
864// CHECK-NEXT: subp
865// CHECK:      too few operands for instruction
866// CHECK-NEXT: cmpp
867// CHECK:      too few operands for instruction
868// CHECK-NEXT: subps x0
869// CHECK:      too few operands for instruction
870// CHECK-NEXT: subp x0
871// CHECK:      too few operands for instruction
872// CHECK-NEXT: cmpp x0
873// CHECK:      too few operands for instruction
874// CHECK-NEXT: subps x0, x1
875// CHECK:      too few operands for instruction
876// CHECK-NEXT: subp x0, x1
877
878ldg sp, [x0, #0]
879ldg x0, [x0, x0]
880ldg x0, [x0, #4096]
881ldg x0, [x0, #-4112]
882ldg #1, [x0, #255]
883ldg x0, [#1, #255]
884
885// CHECK:      invalid operand for instruction
886// CHECK-NEXT: ldg sp, [x0, #0]
887// CHECK:      invalid operand for instruction
888// CHECK-NEXT: ldg x0, [x0, x0]
889// CHECK:      index must be a multiple of 16 in range [-4096, 4080].
890// CHECK-NEXT: ldg x0, [x0, #4096]
891// CHECK:      index must be a multiple of 16 in range [-4096, 4080].
892// CHECK-NEXT: ldg x0, [x0, #-4112]
893// CHECK:      invalid operand for instruction
894// CHECK-NEXT: ldg #1, [x0, #255]
895// CHECK:      invalid operand for instruction
896// CHECK-NEXT: ldg x0, [#1, #255]
897
898ldg
899ldg x0
900ldg x0, [#0]
901ldg w0, [x1]
902ldg x0, [w1]
903
904// CHECK:      too few operands for instruction
905// CHECK-NEXT: ldg
906// CHECK:      too few operands for instruction
907// CHECK-NEXT: ldg x0
908// CHECK:      invalid operand for instruction
909// CHECK-NEXT: ldg x0, [#0]
910// CHECK:      invalid operand for instruction
911// CHECK-NEXT: ldg w0, [x1]
912// CHECK:      invalid operand for instruction
913// CHECK-NEXT: ldg x0, [w1]
914
915ldgm
916ldgm x0
917ldgm w0, [x1]
918ldgm x0, [w1]
919ldgm #1, [x1]
920ldgm x0, [#1]
921ldgm sp, [x0]
922
923// CHECK:      too few operands for instruction
924// CHECK-NEXT: ldgm
925// CHECK:      too few operands for instruction
926// CHECK-NEXT: ldgm x0
927// CHECK:      invalid operand for instruction
928// CHECK-NEXT: ldgm w0, [x1]
929// CHECK:      invalid operand for instruction
930// CHECK-NEXT: ldgm x0, [w1]
931// CHECK:      invalid operand for instruction
932// CHECK-NEXT: ldgm #1, [x1]
933// CHECK:      invalid operand for instruction
934// CHECK-NEXT: ldgm x0, [#1]
935// CHECK:      invalid operand for instruction
936// CHECK-NEXT: ldgm sp, [x0]
937
938stgm
939stgm x0
940stgm sp, [x0]
941stgm w0, [x0]
942stgm x0, [w0]
943stgm #1, [x1]
944stgm x0, [#1]
945
946// CHECK:      too few operands for instruction
947// CHECK-NEXT: stgm
948// CHECK:      too few operands for instruction
949// CHECK-NEXT: stgm x0
950// CHECK:      invalid operand for instruction
951// CHECK-NEXT: stgm sp, [x0]
952// CHECK:      invalid operand for instruction
953// CHECK-NEXT: stgm w0, [x0]
954// CHECK:      invalid operand for instruction
955// CHECK-NEXT: stgm x0, [w0]
956// CHECK:      invalid operand for instruction
957// CHECK-NEXT: stgm #1, [x1]
958// CHECK:      invalid operand for instruction
959// CHECK-NEXT: stgm x0, [#1]
960
961stzgm
962stzgm x0
963stzgm sp, [x0]
964stzgm w0, [x0]
965stzgm x0, [w0]
966stzgm #1, [x1]
967stzgm x0, [#1]
968
969// CHECK:      too few operands for instruction
970// CHECK-NEXT: stzgm
971// CHECK:      too few operands for instruction
972// CHECK-NEXT: stzgm x0
973// CHECK:      invalid operand for instruction
974// CHECK-NEXT: stzgm sp, [x0]
975// CHECK:      invalid operand for instruction
976// CHECK-NEXT: stzgm w0, [x0]
977// CHECK:      invalid operand for instruction
978// CHECK-NEXT: stzgm x0, [w0]
979// CHECK:      invalid operand for instruction
980// CHECK-NEXT: stzgm #1, [x1]
981// CHECK:      invalid operand for instruction
982// CHECK-NEXT: stzgm x0, [#1]
983