1+ // RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2p2 2 >&1 < %s| FileCheck %s
2+
3+ // --------------------------------------------------------------------------//
4+ // Invalid ZA register
5+
6+ stmopa za4.s, {z30.b-z31.b}, z31.b, z31[3 ]
7+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: invalid operand for instruction
8+ // CHECK-NEXT: stmopa za4.s, {z30.b-z31.b}, z31.b, z31[3 ]
9+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
10+
11+ stmopa za4.s, {z30.h-z31.h}, z31.h, z31[3 ]
12+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: invalid operand for instruction
13+ // CHECK-NEXT: stmopa za4.s, {z30.h-z31.h}, z31.h, z31[3 ]
14+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
15+
16+ // --------------------------------------------------------------------------//
17+ // Invalid vector list operand
18+
19+ stmopa za3.s, {z29.b-z30.b}, z31.b, z31[3 ]
20+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: Invalid vector list, expected list with 2 consecutive SVE vectors, where the first vector is a multiple of 2 and with matching element types
21+ // CHECK-NEXT: stmopa za3.s, {z29.b-z30.b}, z31.b, z31[3 ]
22+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
23+
24+ stmopa za3.s, {z29.h-z30.h}, z31.h, z31[3 ]
25+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: Invalid vector list, expected list with 2 consecutive SVE vectors, where the first vector is a multiple of 2 and with matching element types
26+ // CHECK-NEXT: stmopa za3.s, {z29.h-z30.h}, z31.h, z31[3 ]
27+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
28+
29+ // --------------------------------------------------------------------------//
30+ // Invalid ZK register
31+
32+ stmopa za3.s, {z28.b-z29.b}, z31.b, z27[3 ]
33+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: invalid restricted vector register, expected register in z20..z23 or z28..z31
34+ // CHECK-NEXT: stmopa za3.s, {z28.b-z29.b}, z31.b, z27[3 ]
35+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
36+
37+ stmopa za3.s, {z28.h-z29.h}, z31.h, z24[3 ]
38+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: invalid restricted vector register, expected register in z20..z23 or z28..z31
39+ // CHECK-NEXT: stmopa za3.s, {z28.h-z29.h}, z31.h, z24[3 ]
40+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
41+
42+ stmopa za3.s, {z28.h-z29.h}, z31.h, z27[3 ]
43+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: invalid restricted vector register, expected register in z20..z23 or z28..z31
44+ // CHECK-NEXT: stmopa za3.s, {z28.h-z29.h}, z31.h, z27[3 ]
45+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
46+
47+ // --------------------------------------------------------------------------//
48+ // Invalid immediate
49+
50+ stmopa za3.s, {z28.b-z29.b}, z31.b, z20[4 ]
51+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: vector lane must be an integer in range [0 , 3 ].
52+ // CHECK-NEXT: stmopa za3.s, {z28.b-z29.b}, z31.b, z20[4 ]
53+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
54+
55+ stmopa za3.s, {z28.h-z29.h}, z31.h, z20[4 ]
56+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: vector lane must be an integer in range [0 , 3 ].
57+ // CHECK-NEXT: stmopa za3.s, {z28.h-z29.h}, z31.h, z20[4 ]
58+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
59+
60+ // --------------------------------------------------------------------------//
61+ // Invalid ZPR type suffix
62+
63+ stmopa za0.h, {z28.b-z29.b}, z31.b, z20[2 ]
64+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: invalid matrix operand, expected za[0-3 ].s
65+ // CHECK-NEXT: stmopa za0.h, {z28.b-z29.b}, z31.b, z20[2 ]
66+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
67+
68+ stmopa za0.h, {z28.h-z29.h}, z31.h, z20[2 ]
69+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: invalid matrix operand, expected za[0-3 ].s
70+ // CHECK-NEXT: stmopa za0.h, {z28.h-z29.h}, z31.h, z20[2 ]
71+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
72+
73+ stmopa za3.s, {z28.s-z29.s}, z31.s, z20[2 ]
74+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: invalid operand for instruction
75+ // CHECK-NEXT: stmopa za3.s, {z28.s-z29.s}, z31.s, z20[2 ]
76+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
77+
78+ stmopa za3.d, {z28.s-z29.s}, z31.s, z20[3 ]
79+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: invalid matrix operand, expected za[0-3 ].s
80+ // CHECK-NEXT: stmopa za3.d, {z28.s-z29.s}, z31.s, z20[3 ]
81+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
82+
83+ stmopa za3.d, {z28.h-z29.h}, z31.h, z20[3 ]
84+ // CHECK: [[@LINE-1 ]]:{{[0-9 ]+}}: error: invalid matrix operand, expected za[0-3 ].s
85+ // CHECK-NEXT: stmopa za3.d, {z28.h-z29.h}, z31.h, z20[3 ]
86+ // CHECK-NOT : [[@LINE-1 ]]:{{[0-9 ]+}}:
0 commit comments