xref: /llvm-project/llvm/test/MC/AArch64/SME/zero.s (revision ae16b2ed9871b5624fdcb4286fbd0d6ddfd88961)
1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s \
2// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
4// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR
5// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme < %s \
6// RUN:        | llvm-objdump -d --mattr=+sme - | FileCheck %s --check-prefix=CHECK-INST
7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme < %s \
8// RUN:   | llvm-objdump -d --mattr=-sme - | FileCheck %s --check-prefix=CHECK-UNKNOWN
9// Disassemble encoding and check the re-encoding (-show-encoding) matches.
10// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme < %s \
11// RUN:        | sed '/.text/d' | sed 's/.*encoding: //g' \
12// RUN:        | llvm-mc -triple=aarch64 -mattr=+sme -disassemble -show-encoding \
13// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
14
15zero    {}
16// CHECK-INST: zero    {}
17// CHECK-ENCODING: [0x00,0x00,0x08,0xc0]
18// CHECK-ERROR: instruction requires: sme
19// CHECK-UNKNOWN: c0080000 <unknown>
20
21zero    {za0.d, za2.d, za4.d, za6.d}
22// CHECK-INST: zero {za0.h}
23// CHECK-ENCODING: [0x55,0x00,0x08,0xc0]
24// CHECK-ERROR: instruction requires: sme
25// CHECK-UNKNOWN: c0080055 <unknown>
26
27zero    {za0.d, za1.d, za2.d, za4.d, za5.d, za7.d}
28// CHECK-INST: zero    {za0.d, za1.d, za2.d, za4.d, za5.d, za7.d}
29// CHECK-ENCODING: [0xb7,0x00,0x08,0xc0]
30// CHECK-ERROR: instruction requires: sme
31// CHECK-UNKNOWN: c00800b7 <unknown>
32
33zero    {za0.d, za1.d, za2.d, za3.d, za4.d, za5.d, za6.d, za7.d}
34// CHECK-INST: zero {za}
35// CHECK-ENCODING: [0xff,0x00,0x08,0xc0]
36// CHECK-ERROR: instruction requires: sme
37// CHECK-UNKNOWN: c00800ff <unknown>
38
39// --------------------------------------------------------------------------//
40// Aliases
41
42zero {za}
43// CHECK-INST: zero {za}
44// CHECK-ENCODING: [0xff,0x00,0x08,0xc0]
45// CHECK-ERROR: instruction requires: sme
46// CHECK-UNKNOWN: c00800ff <unknown>
47
48zero {za0.b}
49// CHECK-INST: zero {za}
50// CHECK-ENCODING: [0xff,0x00,0x08,0xc0]
51// CHECK-ERROR: instruction requires: sme
52// CHECK-UNKNOWN: c00800ff <unknown>
53
54zero {za0.h}
55// CHECK-INST: zero {za0.h}
56// CHECK-ENCODING: [0x55,0x00,0x08,0xc0]
57// CHECK-ERROR: instruction requires: sme
58// CHECK-UNKNOWN: c0080055 <unknown>
59
60zero {za1.h}
61// CHECK-INST: zero {za1.h}
62// CHECK-ENCODING: [0xaa,0x00,0x08,0xc0]
63// CHECK-ERROR: instruction requires: sme
64// CHECK-UNKNOWN: c00800aa <unknown>
65
66zero {za0.h,za1.h}
67// CHECK-INST: zero {za}
68// CHECK-ENCODING: [0xff,0x00,0x08,0xc0]
69// CHECK-ERROR: instruction requires: sme
70// CHECK-UNKNOWN: c00800ff <unknown>
71
72zero {za0.s}
73// CHECK-INST: zero {za0.s}
74// CHECK-ENCODING: [0x11,0x00,0x08,0xc0]
75// CHECK-ERROR: instruction requires: sme
76// CHECK-UNKNOWN: c0080011 <unknown>
77
78zero {za1.s}
79// CHECK-INST: zero {za1.s}
80// CHECK-ENCODING: [0x22,0x00,0x08,0xc0]
81// CHECK-ERROR: instruction requires: sme
82// CHECK-UNKNOWN: c0080022 <unknown>
83
84zero {za2.s}
85// CHECK-INST: zero {za2.s}
86// CHECK-ENCODING: [0x44,0x00,0x08,0xc0]
87// CHECK-ERROR: instruction requires: sme
88// CHECK-UNKNOWN: c0080044 <unknown>
89
90zero {za3.s}
91// CHECK-INST: zero {za3.s}
92// CHECK-ENCODING: [0x88,0x00,0x08,0xc0]
93// CHECK-ERROR: instruction requires: sme
94// CHECK-UNKNOWN: c0080088 <unknown>
95
96zero {za0.s,za1.s}
97// CHECK-INST: zero {za0.s,za1.s}
98// CHECK-ENCODING: [0x33,0x00,0x08,0xc0]
99// CHECK-ERROR: instruction requires: sme
100// CHECK-UNKNOWN: c0080033 <unknown>
101
102zero {za0.s,za2.s}
103// CHECK-INST: zero {za0.h}
104// CHECK-ENCODING: [0x55,0x00,0x08,0xc0]
105// CHECK-ERROR: instruction requires: sme
106// CHECK-UNKNOWN: c0080055 <unknown>
107
108zero {za0.s,za3.s}
109// CHECK-INST: zero {za0.s,za3.s}
110// CHECK-ENCODING: [0x99,0x00,0x08,0xc0]
111// CHECK-ERROR: instruction requires: sme
112// CHECK-UNKNOWN: c0080099 <unknown>
113
114zero {za1.s,za2.s}
115// CHECK-INST: zero {za1.s,za2.s}
116// CHECK-ENCODING: [0x66,0x00,0x08,0xc0]
117// CHECK-ERROR: instruction requires: sme
118// CHECK-UNKNOWN: c0080066 <unknown>
119
120zero {za1.s,za3.s}
121// CHECK-INST: zero {za1.h}
122// CHECK-ENCODING: [0xaa,0x00,0x08,0xc0]
123// CHECK-ERROR: instruction requires: sme
124// CHECK-UNKNOWN: c00800aa <unknown>
125
126zero {za2.s,za3.s}
127// CHECK-INST: zero {za2.s,za3.s}
128// CHECK-ENCODING: [0xcc,0x00,0x08,0xc0]
129// CHECK-ERROR: instruction requires: sme
130// CHECK-UNKNOWN: c00800cc <unknown>
131
132zero {za0.s,za1.s,za2.s}
133// CHECK-INST: zero {za0.s,za1.s,za2.s}
134// CHECK-ENCODING: [0x77,0x00,0x08,0xc0]
135// CHECK-ERROR: instruction requires: sme
136// CHECK-UNKNOWN: c0080077 <unknown>
137
138zero {za0.s,za1.s,za3.s}
139// CHECK-INST: zero {za0.s,za1.s,za3.s}
140// CHECK-ENCODING: [0xbb,0x00,0x08,0xc0]
141// CHECK-ERROR: instruction requires: sme
142// CHECK-UNKNOWN: c00800bb <unknown>
143
144zero {za0.s,za2.s,za3.s}
145// CHECK-INST: zero {za0.s,za2.s,za3.s}
146// CHECK-ENCODING: [0xdd,0x00,0x08,0xc0]
147// CHECK-ERROR: instruction requires: sme
148// CHECK-UNKNOWN: c00800dd <unknown>
149
150zero {za1.s,za2.s,za3.s}
151// CHECK-INST: zero {za1.s,za2.s,za3.s}
152// CHECK-ENCODING: [0xee,0x00,0x08,0xc0]
153// CHECK-ERROR: instruction requires: sme
154// CHECK-UNKNOWN: c00800ee <unknown>
155
156zero {za0.s,za1.s,za2.s,za3.s}
157// CHECK-INST: zero {za}
158// CHECK-ENCODING: [0xff,0x00,0x08,0xc0]
159// CHECK-ERROR: instruction requires: sme
160// CHECK-UNKNOWN: c00800ff <unknown>
161
162zero {za0.d,za1.d,za2.d,za3.d,za4.d,za5.d,za6.d,za7.d}
163// CHECK-INST: zero {za}
164// CHECK-ENCODING: [0xff,0x00,0x08,0xc0]
165// CHECK-ERROR: instruction requires: sme
166// CHECK-UNKNOWN: c00800ff <unknown>
167
168zero {za0.d,za2.d,za4.d,za6.d}
169// CHECK-INST: zero {za0.h}
170// CHECK-ENCODING: [0x55,0x00,0x08,0xc0]
171// CHECK-ERROR: instruction requires: sme
172// CHECK-UNKNOWN: c0080055 <unknown>
173
174zero {za1.d,za3.d,za5.d,za7.d}
175// CHECK-INST: zero {za1.h}
176// CHECK-ENCODING: [0xaa,0x00,0x08,0xc0]
177// CHECK-ERROR: instruction requires: sme
178// CHECK-UNKNOWN: c00800aa <unknown>
179
180zero {za0.d,za4.d}
181// CHECK-INST: zero {za0.s}
182// CHECK-ENCODING: [0x11,0x00,0x08,0xc0]
183// CHECK-ERROR: instruction requires: sme
184// CHECK-UNKNOWN: c0080011 <unknown>
185
186zero {za1.d,za5.d}
187// CHECK-INST: zero {za1.s}
188// CHECK-ENCODING: [0x22,0x00,0x08,0xc0]
189// CHECK-ERROR: instruction requires: sme
190// CHECK-UNKNOWN: c0080022 <unknown>
191
192zero {za2.d,za6.d}
193// CHECK-INST: zero {za2.s}
194// CHECK-ENCODING: [0x44,0x00,0x08,0xc0]
195// CHECK-ERROR: instruction requires: sme
196// CHECK-UNKNOWN: c0080044 <unknown>
197
198zero {za3.d,za7.d}
199// CHECK-INST: zero {za3.s}
200// CHECK-ENCODING: [0x88,0x00,0x08,0xc0]
201// CHECK-ERROR: instruction requires: sme
202// CHECK-UNKNOWN: c0080088 <unknown>
203
204zero {za0.d,za1.d,za4.d,za5.d}
205// CHECK-INST: zero {za0.s,za1.s}
206// CHECK-ENCODING: [0x33,0x00,0x08,0xc0]
207// CHECK-ERROR: instruction requires: sme
208// CHECK-UNKNOWN: c0080033 <unknown>
209
210zero {za0.d,za3.d,za4.d,za7.d}
211// CHECK-INST: zero {za0.s,za3.s}
212// CHECK-ENCODING: [0x99,0x00,0x08,0xc0]
213// CHECK-ERROR: instruction requires: sme
214// CHECK-UNKNOWN: c0080099 <unknown>
215
216zero {za1.d,za2.d,za5.d,za6.d}
217// CHECK-INST: zero {za1.s,za2.s}
218// CHECK-ENCODING: [0x66,0x00,0x08,0xc0]
219// CHECK-ERROR: instruction requires: sme
220// CHECK-UNKNOWN: c0080066 <unknown>
221
222zero {za2.d,za3.d,za6.d,za7.d}
223// CHECK-INST: zero {za2.s,za3.s}
224// CHECK-ENCODING: [0xcc,0x00,0x08,0xc0]
225// CHECK-ERROR: instruction requires: sme
226// CHECK-UNKNOWN: c00800cc <unknown>
227
228zero {za0.d,za1.d,za2.d,za4.d,za5.d,za6.d}
229// CHECK-INST: zero {za0.s,za1.s,za2.s}
230// CHECK-ENCODING: [0x77,0x00,0x08,0xc0]
231// CHECK-ERROR: instruction requires: sme
232// CHECK-UNKNOWN: c0080077 <unknown>
233
234zero {za0.d,za1.d,za3.d,za4.d,za5.d,za7.d}
235// CHECK-INST: zero {za0.s,za1.s,za3.s}
236// CHECK-ENCODING: [0xbb,0x00,0x08,0xc0]
237// CHECK-ERROR: instruction requires: sme
238// CHECK-UNKNOWN: c00800bb <unknown>
239
240zero {za0.d,za2.d,za3.d,za4.d,za6.d,za7.d}
241// CHECK-INST: zero {za0.s,za2.s,za3.s}
242// CHECK-ENCODING: [0xdd,0x00,0x08,0xc0]
243// CHECK-ERROR: instruction requires: sme
244// CHECK-UNKNOWN: c00800dd <unknown>
245
246zero {za1.d,za2.d,za3.d,za5.d,za6.d,za7.d}
247// CHECK-INST: zero {za1.s,za2.s,za3.s}
248// CHECK-ENCODING: [0xee,0x00,0x08,0xc0]
249// CHECK-ERROR: instruction requires: sme
250// CHECK-UNKNOWN: c00800ee <unknown>
251