1 // RUN
: llvm-mc
-triple aarch64
-mattr
=+dotprod
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
2 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-a75
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
3 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-a76
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
4 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-a55
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
5 // RUN
: llvm-mc
-triple aarch64
-mcpu
=tsv110
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
6 // RUN
: not llvm-mc
-triple aarch64
-mattr
=+v8.2
a -show-encoding
< %s
2> %t
7 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
9 udot v0.2s
, v1.8
b, v2.8
b
10 sdot v0.2s
, v1.8
b, v2.8
b
11 udot v0.4s
, v1.16
b, v2.16
b
12 sdot v0.4s
, v1.16
b, v2.16
b
13 udot v0.2s
, v1.8
b, v2.4
b[0]
14 sdot v0.2s
, v1.8
b, v2.4
b[1]
15 udot v0.4s
, v1.16
b, v2.4
b[2]
16 sdot v0.4s
, v1.16
b, v2.4
b[3]
18 // Check that the upper case types are aliases
19 udot v0.2S
, v1.8
B, v2.4
B[0]
20 udot v0.4S
, v1.16
B, v2.4
B[2]
22 // CHECK-DOTPROD
: udot v0.2s
, v1.8
b, v2.8
b // encoding
: [0x20,0x94,0x82,0x2e]
23 // CHECK-DOTPROD
: sdot v0.2s
, v1.8
b, v2.8
b // encoding
: [0x20,0x94,0x82,0x0e]
24 // CHECK-DOTPROD
: udot v0.4s
, v1.16
b, v2.16
b // encoding
: [0x20,0x94,0x82,0x6e]
25 // CHECK-DOTPROD
: sdot v0.4s
, v1.16
b, v2.16
b // encoding
: [0x20,0x94,0x82,0x4e]
26 // CHECK-DOTPROD
: udot v0.2s
, v1.8
b, v2.4
b[0] // encoding
: [0x20,0xe0,0x82,0x2f]
27 // CHECK-DOTPROD
: sdot v0.2s
, v1.8
b, v2.4
b[1] // encoding
: [0x20,0xe0,0xa2,0x0f]
28 // CHECK-DOTPROD
: udot v0.4s
, v1.16
b, v2.4
b[2] // encoding
: [0x20,0xe8,0x82,0x6f]
29 // CHECK-DOTPROD
: sdot v0.4s
, v1.16
b, v2.4
b[3] // encoding
: [0x20,0xe8,0xa2,0x4f]
31 // CHECK-DOTPROD
: udot v0.2s
, v1.8
b, v2.4
b[0] // encoding
: [0x20,0xe0,0x82,0x2f]
32 // CHECK-DOTPROD
: udot v0.4s
, v1.16
b, v2.4
b[2] // encoding
: [0x20,0xe8,0x82,0x6f]
34 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
35 // CHECK-NO-DOTPROD
: udot v0.2s
, v1.8
b, v2.8
b
36 // CHECK-NO-DOTPROD
: ^
37 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
38 // CHECK-NO-DOTPROD
: sdot v0.2s
, v1.8
b, v2.8
b
39 // CHECK-NO-DOTPROD
: ^
40 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
41 // CHECK-NO-DOTPROD
: udot v0.4s
, v1.16
b, v2.16
b
42 // CHECK-NO-DOTPROD
: ^
43 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
44 // CHECK-NO-DOTPROD
: sdot v0.4s
, v1.16
b, v2.16
b
45 // CHECK-NO-DOTPROD
: ^
46 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
47 // CHECK-NO-DOTPROD
: udot v0.2s
, v1.8
b, v2.4
b[0]
48 // CHECK-NO-DOTPROD
: ^
49 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
50 // CHECK-NO-DOTPROD
: sdot v0.2s
, v1.8
b, v2.4
b[1]
51 // CHECK-NO-DOTPROD
: ^
52 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
53 // CHECK-NO-DOTPROD
: udot v0.4s
, v1.16
b, v2.4
b[2]
54 // CHECK-NO-DOTPROD
: ^
55 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
56 // CHECK-NO-DOTPROD
: sdot v0.4s
, v1.16
b, v2.4
b[3]
57 // CHECK-NO-DOTPROD
: ^
59 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
60 // CHECK-NO-DOTPROD
: udot v0.2S
, v1.8
B, v2.4
B[0]
61 // CHECK-NO-DOTPROD
: ^
62 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
63 // CHECK-NO-DOTPROD
: udot v0.4S
, v1.16
B, v2.4
B[2]
64 // CHECK-NO-DOTPROD
: ^