1 // RUN
: not llvm-mc
-triple
=aarch64
-show-encoding
-mattr
=+sme2p2
2>&1 < %s| FileCheck
%s
3 // --------------------------------------------------------------------------//
6 sutmopa za4.s
, {z30.b-z31.
b}, z31.
b, z31
[3]
7 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
8 // CHECK-NEXT
: sutmopa za4.s
, {z30.b-z31.
b}, z31.
b, z31
[3]
9 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
11 // --------------------------------------------------------------------------//
12 // Invalid vector list operand
14 sutmopa za3.s
, {z29.b-z30.
b}, z31.
b, z31
[3]
15 // 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
16 // CHECK-NEXT
: sutmopa za3.s
, {z29.b-z30.
b}, z31.
b, z31
[3]
17 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
19 // --------------------------------------------------------------------------//
20 // Invalid ZK register
22 sutmopa za3.s
, {z28.b-z29.
b}, z31.
b, z19
[2]
23 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid restricted vector register
, expected register in z20.
.z23 or z28..z31
24 // CHECK-NEXT
: sutmopa za3.s
, {z28.b-z29.
b}, z31.
b, z19
[2]
25 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
27 sutmopa za3.s
, {z28.b-z29.
b}, z31.
b, z24
[2]
28 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid restricted vector register
, expected register in z20.
.z23 or z28..z31
29 // CHECK-NEXT
: sutmopa za3.s
, {z28.b-z29.
b}, z31.
b, z24
[2]
30 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
32 sutmopa za3.s
, {z28.b-z29.
b}, z31.
b, z27
[2]
33 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid restricted vector register
, expected register in z20.
.z23 or z28..z31
34 // CHECK-NEXT
: sutmopa za3.s
, {z28.b-z29.
b}, z31.
b, z27
[2]
35 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
37 // --------------------------------------------------------------------------//
40 sutmopa za3.s
, {z28.b-z29.
b}, z31.
b, z29
[4]
41 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: vector lane must
be an integer in range
[0, 3].
42 // CHECK-NEXT
: sutmopa za3.s
, {z28.b-z29.
b}, z31.
b, z29
[4]
43 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
45 // --------------------------------------------------------------------------//
46 // Invalid ZPR type suffix
48 sutmopa za0.h
, {z28.b-z29.
b}, z31.
b, z20
[2]
49 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid matrix operand
, expected za
[0-3].s
50 // CHECK-NEXT
: sutmopa za0.h
, {z28.b-z29.
b}, z31.
b, z20
[2]
51 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
53 sutmopa za0.h
, {z28.h-z29.h
}, z31.h
, z20
[2]
54 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid matrix operand
, expected za
[0-3].s
55 // CHECK-NEXT
: sutmopa za0.h
, {z28.h-z29.h
}, z31.h
, z20
[2]
56 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
58 sutmopa za3.s
, {z28.h-z29.h
}, z31.h
, z20
[3]
59 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
60 // CHECK-NEXT
: sutmopa za3.s
, {z28.h-z29.h
}, z31.h
, z20
[3]
61 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
63 sutmopa za3.s
, {z28.s-z29.s
}, z31.s
, z20
[2]
64 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
65 // CHECK-NEXT
: sutmopa za3.s
, {z28.s-z29.s
}, z31.s
, z20
[2]
66 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
68 sutmopa za3.d
, {z28.s-z29.s
}, z31.s
, z20
[3]
69 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid matrix operand
, expected za
[0-3].s
70 // CHECK-NEXT
: sutmopa za3.d
, {z28.s-z29.s
}, z31.s
, z20
[3]
71 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
73 sutmopa za3.d
, {z28.h-z29.h
}, z31.h
, z20
[3]
74 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid matrix operand
, expected za
[0-3].s
75 // CHECK-NEXT
: sutmopa za3.d
, {z28.h-z29.h
}, z31.h
, z20
[3]
76 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}: