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-a55
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
3 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-a65
-show-encoding
< %s| FileCheck
%s
--check-prefix
=CHECK-DOTPROD
4 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-a65ae
-show-encoding
< %s| FileCheck
%s
--check-prefix
=CHECK-DOTPROD
5 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-a75
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
6 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-a76
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
7 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-a77
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
8 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-a78
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
9 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-x1
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
10 // RUN
: llvm-mc
-triple aarch64
-mcpu
=neoverse-e1
-show-encoding
< %s| FileCheck
%s
--check-prefix
=CHECK-DOTPROD
11 // RUN
: llvm-mc
-triple aarch64
-mcpu
=neoverse-n1
-show-encoding
< %s| FileCheck
%s
--check-prefix
=CHECK-DOTPROD
12 // RUN
: llvm-mc
-triple aarch64
-mcpu
=neoverse-n2
-show-encoding
< %s| FileCheck
%s
--check-prefix
=CHECK-DOTPROD
13 // RUN
: llvm-mc
-triple aarch64
-mcpu
=tsv110
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
14 // RUN
: llvm-mc
-triple aarch64
-mcpu
=cortex-r82
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
15 // RUN
: llvm-mc
-triple aarch64
-mattr
=+v8r
,+dotprod
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
16 // RUN
: llvm-mc
-triple aarch64
-mcpu
=ampere1
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
17 // RUN
: llvm-mc
-triple aarch64
-mcpu
=ampere1a
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
18 // RUN
: llvm-mc
-triple aarch64
-mcpu
=ampere1b
-show-encoding
< %s | FileCheck
%s
--check-prefix
=CHECK-DOTPROD
20 // RUN
: not llvm-mc
-triple aarch64
-mattr
=+v8.2
a -show-encoding
< %s
2> %t
21 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
22 // RUN
: not llvm-mc
-triple aarch64
-mattr
=+v8r
-show-encoding
< %s
2> %t
23 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
24 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=cortex-r82
-mattr
=-dotprod
-show-encoding
< %s
2> %t
25 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
26 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=cortex-a65
-mattr
=-dotprod
-show-encoding
< %s
2> %t
27 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
28 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=cortex-a65ae
-mattr
=-dotprod
-show-encoding
< %s
2> %t
29 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
30 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=neoverse-e1
-mattr
=-dotprod
-show-encoding
< %s
2> %t
31 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
32 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=cortex-a77
-mattr
=-dotprod
-show-encoding
< %s
2> %t
33 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
34 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=cortex-a78
-mattr
=-dotprod
-show-encoding
< %s
2> %t
35 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
36 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=cortex-x1
-mattr
=-dotprod
-show-encoding
< %s
2> %t
37 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
38 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=neoverse-n1
-mattr
=-dotprod
-show-encoding
< %s
2> %t
39 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
40 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=neoverse-n2
-mattr
=-dotprod
-show-encoding
< %s
2> %t
41 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
42 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=ampere1
-mattr
=-dotprod
-show-encoding
< %s
2> %t
43 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
44 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=ampere1a
-mattr
=-dotprod
-show-encoding
< %s
2> %t
45 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
46 // RUN
: not llvm-mc
-triple aarch64
-mcpu
=ampere1b
-mattr
=-dotprod
-show-encoding
< %s
2> %t
47 // RUN
: FileCheck
--check-prefix
=CHECK-NO-DOTPROD
< %t %s
49 udot v0.2s
, v1.8
b, v2.8
b
50 sdot v0.2s
, v1.8
b, v2.8
b
51 udot v0.4s
, v1.16
b, v2.16
b
52 sdot v0.4s
, v1.16
b, v2.16
b
53 udot v0.2s
, v1.8
b, v2.4
b[0]
54 sdot v0.2s
, v1.8
b, v2.4
b[1]
55 udot v0.4s
, v1.16
b, v2.4
b[2]
56 sdot v0.4s
, v1.16
b, v2.4
b[3]
58 // Check that the upper case types are aliases
59 udot v0.2S
, v1.8
B, v2.4
B[0]
60 udot v0.4S
, v1.16
B, v2.4
B[2]
62 // CHECK-DOTPROD
: udot v0.2s
, v1.8
b, v2.8
b // encoding
: [0x20,0x94,0x82,0x2e]
63 // CHECK-DOTPROD
: sdot v0.2s
, v1.8
b, v2.8
b // encoding
: [0x20,0x94,0x82,0x0e]
64 // CHECK-DOTPROD
: udot v0.4s
, v1.16
b, v2.16
b // encoding
: [0x20,0x94,0x82,0x6e]
65 // CHECK-DOTPROD
: sdot v0.4s
, v1.16
b, v2.16
b // encoding
: [0x20,0x94,0x82,0x4e]
66 // CHECK-DOTPROD
: udot v0.2s
, v1.8
b, v2.4
b[0] // encoding
: [0x20,0xe0,0x82,0x2f]
67 // CHECK-DOTPROD
: sdot v0.2s
, v1.8
b, v2.4
b[1] // encoding
: [0x20,0xe0,0xa2,0x0f]
68 // CHECK-DOTPROD
: udot v0.4s
, v1.16
b, v2.4
b[2] // encoding
: [0x20,0xe8,0x82,0x6f]
69 // CHECK-DOTPROD
: sdot v0.4s
, v1.16
b, v2.4
b[3] // encoding
: [0x20,0xe8,0xa2,0x4f]
71 // CHECK-DOTPROD
: udot v0.2s
, v1.8
b, v2.4
b[0] // encoding
: [0x20,0xe0,0x82,0x2f]
72 // CHECK-DOTPROD
: udot v0.4s
, v1.16
b, v2.4
b[2] // encoding
: [0x20,0xe8,0x82,0x6f]
74 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
75 // CHECK-NO-DOTPROD
: udot v0.2s
, v1.8
b, v2.8
b
76 // CHECK-NO-DOTPROD
: ^
77 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
78 // CHECK-NO-DOTPROD
: sdot v0.2s
, v1.8
b, v2.8
b
79 // CHECK-NO-DOTPROD
: ^
80 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
81 // CHECK-NO-DOTPROD
: udot v0.4s
, v1.16
b, v2.16
b
82 // CHECK-NO-DOTPROD
: ^
83 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
84 // CHECK-NO-DOTPROD
: sdot v0.4s
, v1.16
b, v2.16
b
85 // CHECK-NO-DOTPROD
: ^
86 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
87 // CHECK-NO-DOTPROD
: udot v0.2s
, v1.8
b, v2.4
b[0]
88 // CHECK-NO-DOTPROD
: ^
89 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
90 // CHECK-NO-DOTPROD
: sdot v0.2s
, v1.8
b, v2.4
b[1]
91 // CHECK-NO-DOTPROD
: ^
92 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
93 // CHECK-NO-DOTPROD
: udot v0.4s
, v1.16
b, v2.4
b[2]
94 // CHECK-NO-DOTPROD
: ^
95 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
96 // CHECK-NO-DOTPROD
: sdot v0.4s
, v1.16
b, v2.4
b[3]
97 // CHECK-NO-DOTPROD
: ^
99 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
100 // CHECK-NO-DOTPROD
: udot v0.2S
, v1.8
B, v2.4
B[0]
101 // CHECK-NO-DOTPROD
: ^
102 // CHECK-NO-DOTPROD
: error
: instruction requires
: dotprod
103 // CHECK-NO-DOTPROD
: udot v0.4S
, v1.16
B, v2.4
B[2]
104 // CHECK-NO-DOTPROD
: ^