1 // RUN
: not llvm-mc
-triple aarch64
-show-encoding
-mattr
=+i8mm
< %s
2>&1 | FileCheck
%s
3 // No interesting edge cases for
[US
]MMLA
, except for the fact that the data
4 // types are fixed
(no
64-bit version
), and USMMLA exists
, but SUMMLA does
not.
5 smmla v1.2s
, v16.8
b, v31.8
b
6 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
7 summla v1.4s
, v16.16
b, v31.16
b
8 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: unrecognized instruction mnemonic
, did you mean
: smmla
, ummla
, usmmla?
10 // USDOT
(vector
) has two valid data type combinations
, others are rejected.
11 usdot v3.4s
, v15.8
b, v30.8
b
12 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
13 usdot v3.2s
, v15.16
b, v30.16
b
14 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
16 // For USDOT
and SUDOT
(indexed
), the index is in range
[0,3] (regardless of data types
)
17 usdot v31.2s
, v1.8
b, v2.4
b[4]
18 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: vector lane must
be an integer in range
[0, 3].
19 usdot v31.4s
, v1.16
b, v2.4
b[4]
20 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: vector lane must
be an integer in range
[0, 3].
21 sudot v31.2s
, v1.8
b, v2.4
b[4]
22 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: vector lane must
be an integer in range
[0, 3].
23 sudot v31.4s
, v1.16
b, v2.4
b[4]
24 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: vector lane must
be an integer in range
[0, 3].
26 // The arrangement specifiers of the first two operands must match.
27 usdot v31.4s
, v1.8
b, v2.4
b[0]
28 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
29 usdot v31.2s
, v1.16
b, v2.4
b[0]
30 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
31 sudot v31.4s
, v1.8
b, v2.4
b[0]
32 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction
33 sudot v31.2s
, v1.16
b, v2.4
b[0]
34 // CHECK
: [[@LINE-
1]]:{{[0-9]+}}: error
: invalid operand for instruction