1 // RUN
: not llvm-mc
-triple
=aarch64
-show-encoding
-mattr
=+sme2
2>&1 < %s | FileCheck
%s
3 // --------------------------------------------------------------------------//
6 bfmlal za.s
[w11
, 6:7, vgx2
], {z12.h-z14.h
}, z8.h
[3]
7 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
8 // CHECK-NEXT
: bfmlal za.s
[w11
, 6:7, vgx2
], {z12.h-z14.h
}, z8.h
[3]
9 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
11 bfmlal za.s
[w11
, 6:7, vgx4
], {z12.h-z17.h
}, z8.h
[3]
12 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid number of vectors
13 // CHECK-NEXT
: bfmlal za.s
[w11
, 6:7, vgx4
], {z12.h-z17.h
}, z8.h
[3]
14 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
16 bfmlal za.s
[w10
, 2:3, vgx2
], {z10.h-z11.h
}, {z21.h-z22.h
}
17 // 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
18 // CHECK-NEXT
: bfmlal za.s
[w10
, 2:3, vgx2
], {z10.h-z11.h
}, {z21.h-z22.h
}
19 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
21 // --------------------------------------------------------------------------//
22 // Invalid indexed-vector register
24 bfmlal za.s
[w8
, 0:1], z0.h
, z17.h
[0]
25 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: Invalid restricted vector register
, expected z0.h.
.z15.h
26 // CHECK-NEXT
: bfmlal za.s
[w8
, 0:1], z0.h
, z17.h
[0]
27 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
29 bfmlal za.s
[w8
, 0:1], z0.h
, z30.h
30 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: Invalid restricted vector register
, expected z0.h.
.z15.h
31 // CHECK-NEXT
: bfmlal za.s
[w8
, 0:1], z0.h
, z30.h
32 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
34 // --------------------------------------------------------------------------//
35 // Invalid vector select register
37 bfmlal za.s
[w7
, 6:7, vgx2
], {z12.h-z13.h
}, {z8.h-z9.h
}
38 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: operand must
be a register in range
[w8
, w11
]
39 // CHECK-NEXT
: bfmlal za.s
[w7
, 6:7, vgx2
], {z12.h-z13.h
}, {z8.h-z9.h
}
40 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
42 bfmlal za.s
[w12
, 6:7, vgx4
], {z12.h-z15.h
}, {z8.h-z11.h
}
43 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: operand must
be a register in range
[w8
, w11
]
44 // CHECK-NEXT
: bfmlal za.s
[w12
, 6:7, vgx4
], {z12.h-z15.h
}, {z8.h-z11.h
}
45 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
47 // --------------------------------------------------------------------------//
48 // Invalid vector select offset
50 bfmlal za.s
[w8
, 6:9, vgx2
], {z12.h-z13.h
}, {z8.h-z9.h
}
51 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
52 // CHECK-NEXT
: bfmlal za.s
[w8
, 6:9, vgx2
], {z12.h-z13.h
}, {z8.h-z9.h
}
53 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
55 bfmlal za.s
[w8
, 9:10, vgx2
], {z12.h-z13.h
}, {z8.h-z9.h
}
56 // 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
2 in the range
[0, 6] or [0, 14] depending on the instruction
, and the second immediate is immf
+ 1.
57 // CHECK-NEXT
: bfmlal za.s
[w8
, 9:10, vgx2
], {z12.h-z13.h
}, {z8.h-z9.h
}
58 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
60 // --------------------------------------------------------------------------//
61 // Invalid Register Suffix
63 bfmlal za.h
[w8
, 6:7, vgx2
], {z12.h-z13.h
}, {z8.h-z9.h
}
64 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid matrix operand
, expected suffix
.s
65 // CHECK-NEXT
: bfmlal za.h
[w8
, 6:7, vgx2
], {z12.h-z13.h
}, {z8.h-z9.h
}
66 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
68 // --------------------------------------------------------------------------//
69 // Invalid vector lane index
71 bfmlal za.s
[w11
, 6:7, vgx4
], {z12.h-z15.h
}, z8.h
[8]
72 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: vector lane must
be an integer in range
[0, 7].
73 // CHECK-NEXT
: bfmlal za.s
[w11
, 6:7, vgx4
], {z12.h-z15.h
}, z8.h
[8]
74 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}:
76 bfmlal za.s
[w11
, 6:7, vgx4
], {z12.h-z15.h
}, z8.h
[-1]
77 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: vector lane must
be an integer in range
[0, 7].
78 // CHECK-NEXT
: bfmlal za.s
[w11
, 6:7, vgx4
], {z12.h-z15.h
}, z8.h
[-1]
79 // CHECK-
NOT: [[@LINE-
1]]:{{[0-9]+}}: