1 // RUN
: not llvm-mc
-triple
=aarch64
-show-encoding
-mattr
=+sme2
2>&1 < %s | FileCheck
%s
3 // --------------------------------------------------------------------------//
6 usmlall za.s
[w11
, 4:7, vgx2
], {z12.h-z14.h
}, z8.h
[3]
7 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
8 // CHECK-NEXT
: usmlall za.s
[w11
, 4:7, vgx2
], {z12.h-z14.h
}, z8.h
[3]
9 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
11 usmlall za.s
[w11
, 4:7, vgx4
], {z12.h-z17.h
}, z8.h
[3]
12 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid number of vectors
13 // CHECK-NEXT
: usmlall za.s
[w11
, 4:7, vgx4
], {z12.h-z17.h
}, z8.h
[3]
14 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
16 usmlall za.s
[w10
, 4:7], {z8.b-z11.
b}, {z21.b-z24.
b}
17 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: Invalid vector list
, expected list with
4 consecutive SVE vectors
, where the first vector is
a multiple of
4 and with matching element types
18 // CHECK-NEXT
: usmlall za.s
[w10
, 4:7], {z8.b-z11.
b}, {z21.b-z24.
b}
19 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
21 usmlall za.s
[w10
, 4:7], {z8.b-z9.
b}, {z21.b-z22.
b}
22 // 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
23 // CHECK-NEXT
: usmlall za.s
[w10
, 4:7], {z8.b-z9.
b}, {z21.b-z22.
b}
24 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
26 // --------------------------------------------------------------------------//
27 // Invalid indexed-vector register
29 usmlall za.s
[w10
, 0:3], z19.
b, z4.s
[4]
30 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: Invalid restricted vector register
, expected z0.b.
.z15.b
31 // CHECK-NEXT
: usmlall za.s
[w10
, 0:3], z19.
b, z4.s
[4]
32 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
34 usmlall za.s
[w10
, 4:7], z10.
b, z30.
b[1]
35 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: Invalid restricted vector register
, expected z0.b.
.z15.b
36 // CHECK-NEXT
: usmlall za.s
[w10
, 4:7], z10.
b, z30.
b[1]
37 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
39 // --------------------------------------------------------------------------//
40 // Invalid vector select register
42 usmlall za.s
[w7
, 6:7, vgx2
], {z12.b-z13.
b}, {z8.b-z9.
b}
43 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: operand must
be a register in range
[w8
, w11
]
44 // CHECK-NEXT
: usmlall za.s
[w7
, 6:7, vgx2
], {z12.b-z13.
b}, {z8.b-z9.
b}
45 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
47 usmlall za.s
[w12
, 6:7, vgx2
], {z12.b-z13.
b}, {z8.b-z9.
b}
48 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: operand must
be a register in range
[w8
, w11
]
49 // CHECK-NEXT
: usmlall za.s
[w12
, 6:7, vgx2
], {z12.b-z13.
b}, {z8.b-z9.
b}
50 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
52 // --------------------------------------------------------------------------//
53 // Invalid vector select offset
55 usmlall za.s
[w11
, 4:8], {z30.b-z31.
b}, z15.
b[15]
56 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
57 // CHECK-NEXT
: usmlall za.s
[w11
, 4:8], {z30.b-z31.
b}, z15.
b[15]
58 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
60 usmlall za.s
[w8
, 5:8, vgx2
], {z22.b-z23.
b}, z14.
b[2]
61 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: vector select offset must
be an immediate range of the form
<immf
>:<imml
>, where the first immediate is
a multiple of
4 in the range
[0, 4] or [0, 12] depending on the instruction
, and the second immediate is immf
+ 3.
62 // CHECK-NEXT
: usmlall za.s
[w8
, 5:8, vgx2
], {z22.b-z23.
b}, z14.
b[2]
63 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
65 // --------------------------------------------------------------------------//
66 // Invalid Register Suffix
68 usmlall za.h
[w8
, 6:7, vgx2
], {z12.b-z13.
b}, {z8.b-z9.
b}
69 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid matrix operand
, expected suffix
.s
70 // CHECK-NEXT
: usmlall za.h
[w8
, 6:7, vgx2
], {z12.b-z13.
b}, {z8.b-z9.
b}
71 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
73 // --------------------------------------------------------------------------//
74 // Invalid vector lane index
76 usmlall za.s
[w8
, 0:3], {z0.b-z1.
b}, z0.
b[16]
77 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: vector lane must
be an integer in range
[0, 15].
78 // CHECK-NEXT
: usmlall za.s
[w8
, 0:3], {z0.b-z1.
b}, z0.
b[16]
79 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
81 usmlall za.s
[w8
, 0:3], {z0.b-z1.
b}, z0.
b[-1]
82 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: vector lane must
be an integer in range
[0, 15].
83 // CHECK-NEXT
: usmlall za.s
[w8
, 0:3], {z0.b-z1.
b}, z0.
b[-1]
84 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}: