1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme 2>&1 < %s| FileCheck %s
2
3// --------------------------------------------------------------------------//
4// Registers list not in ascending order
5
6zero    {za1.s, za0.s}
7// CHECK: [[@LINE-1]]:{{[0-9]+}}: warning: tile list not in ascending order
8// CHECK-NEXT: zero {za1.s, za0.s}
9// CHECK-NEXT:              ^
10
11zero    {za0.d, za1.d, za4.d, za3.d}
12// CHECK: [[@LINE-1]]:{{[0-9]+}}: warning: tile list not in ascending order
13// CHECK-NEXT: zero {za0.d, za1.d, za4.d, za3.d}
14// CHECK-NEXT:                            ^
15
16// --------------------------------------------------------------------------//
17// Duplicate tile
18
19zero    {za0.s, za0.s}
20// CHECK: [[@LINE-1]]:{{[0-9]+}}: warning: duplicate tile in list
21// CHECK-NEXT: zero {za0.s, za0.s}
22// CHECK-NEXT:              ^
23
24zero    {za0.d, za1.d, za2.d, za2.d, za3.d}
25// CHECK: [[@LINE-1]]:{{[0-9]+}}: warning: duplicate tile in list
26// CHECK-NEXT: zero {za0.d, za1.d, za2.d, za2.d, za3.d}
27// CHECK-NEXT:                            ^
28
29// --------------------------------------------------------------------------//
30// Mismatched register size suffix
31
32zero    {za0.b, za5.d}
33// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: mismatched register size suffix
34// CHECK-NEXT: zero {za0.b, za5.d}
35// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
36
37// --------------------------------------------------------------------------//
38// Missing '}'
39
40zero    {za
41// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: '}' expected
42// CHECK-NEXT: zero {za
43// CHECK-NEXT:         ^
44// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
45
46// --------------------------------------------------------------------------//
47// Invalid matrix tile
48
49zero    {za0.b, za1.b}
50// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
51// CHECK-NEXT: zero    {za0.b, za1.b}
52// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
53
54zero    {za2.h}
55// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
56// CHECK-NEXT: zero    {za2.h}
57// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
58
59zero    {za0.s, za1.s, za2.s, za3.s, za4.s}
60// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
61// CHECK-NEXT: zero    {za0.s, za1.s, za2.s, za3.s, za4.s}
62// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
63
64zero    {za0.d, za1.d, za2.d, za3.d, za4.d, za5.d, za6.d, za7.d, za8.d}
65// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
66// CHECK-NEXT: zero {za0.d, za1.d, za2.d, za3.d, za4.d, za5.d, za6.d, za7.d, za8.d}
67// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
68
69zero    {za0h.b}
70// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
71// CHECK-NEXT: zero    {za0h.b}
72// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
73
74zero    {za0.s, za1h.s}
75// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
76// CHECK-NEXT: zero    {za0.s, za1h.s}
77// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
78
79zero    {za15.q}
80// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
81// CHECK-NEXT: zero {za15.q}
82// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
83