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