1 // RUN
: not llvm-mc
-triple
=aarch64
-show-encoding
-mattr
=+sve2
,+faminmax
2>&1 < %s | FileCheck
%s
2 // RUN
: not llvm-mc
-triple
=aarch64
-show-encoding
-mattr
=+sme2
,+faminmax
2>&1 < %s | FileCheck
%s
5 // Invalid predicate register
7 famin z0.h
, p8
/m
, z0.h
, z1.h
8 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid restricted predicate register
, expected p0.
.p7 (without element suffix)
9 // CHECK-NEXT
: famin z0.h
, p8
/m
, z0.h
, z1.h
10 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
12 famin z31.s
, p7
/z
, z31.s
, z30.s
13 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
14 // CHECK-NEXT
: famin z31.s
, p7
/z
, z31.s
, z30.s
15 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
17 // --------------------------------------------------------------------------//
18 // Invalid vector suffix
20 famin z23.h
, p3
/m
, z23.h
, z13.s
21 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid element width
22 // CHECK-NEXT
: famin z23.h
, p3
/m
, z23.h
, z13.s
23 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
25 famin z23.
b, p3
/m
, z23.d
, z13.d
26 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid element width
27 // CHECK-NEXT
: famin z23.
b, p3
/m
, z23.d
, z13.d
28 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
30 // --------------------------------------------------------------------------//
31 // Z register out of range
33 famin z31.s
, p7
/z
, z31.s
, z32.s
34 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
35 // CHECK-NEXT
: famin z31.s
, p7
/z
, z31.s
, z32.s
36 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
38 famin z0.d
, p0
/m
, z0.d
, z35.d
39 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
40 // CHECK-NEXT
: famin z0.d
, p0
/m
, z0.d
, z35.d
41 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
43 // --------------------------------------------------------------------------//
44 // Negative tests for instructions that are incompatible with movprfx
47 famin z23.h
, p3
/m
, z23.h
, z13.h
48 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: instruction is unpredictable when following
a movprfx writing to
a different destination
49 // CHECK-NEXT
: famin z23.h
, p3
/m
, z23.h
, z13.h
50 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
54 // Invalid predicate register
56 famax z0.h
, p8
/m
, z0.h
, z1.h
57 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid restricted predicate register
, expected p0.
.p7 (without element suffix)
58 // CHECK-NEXT
: famax z0.h
, p8
/m
, z0.h
, z1.h
59 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
61 famax z31.s
, p7
/z
, z31.s
, z30.s
62 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
63 // CHECK-NEXT
: famax z31.s
, p7
/z
, z31.s
, z30.s
64 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
66 // --------------------------------------------------------------------------//
67 // Invalid vector suffix
69 famax z23.h
, p3
/m
, z23.h
, z13.s
70 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid element width
71 // CHECK-NEXT
: famax z23.h
, p3
/m
, z23.h
, z13.s
72 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
74 famax z23.
b, p3
/m
, z23.d
, z13.d
75 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid element width
76 // CHECK-NEXT
: famax z23.
b, p3
/m
, z23.d
, z13.d
77 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
79 // --------------------------------------------------------------------------//
80 // Z register out of range
82 famax z31.s
, p7
/z
, z31.s
, z32.s
83 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
84 // CHECK-NEXT
: famax z31.s
, p7
/z
, z31.s
, z32.s
85 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
87 famax z0.d
, p0
/m
, z0.d
, z35.d
88 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
89 // CHECK-NEXT
: famax z0.d
, p0
/m
, z0.d
, z35.d
90 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
92 // --------------------------------------------------------------------------//
93 // Negative tests for instructions that are incompatible with movprfx
96 famax z23.h
, p3
/m
, z23.h
, z13.h
97 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: instruction is unpredictable when following
a movprfx writing to
a different destination
98 // CHECK-NEXT
: famax z23.h
, p3
/m
, z23.h
, z13.h
99 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}: