1 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
-mattr
=+mops
,+mte
< %s
2> %t | FileCheck
%s
--check-prefix
=CHECK
--check-prefix
=CHECK-MTE
2 // RUN
: FileCheck
--check-prefix
=CHECK-ERROR
%s
< %t
3 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
-mattr
=+v8.8
a,+mte
< %s
2> %t | FileCheck
%s
--check-prefix
=CHECK
--check-prefix
=CHECK-MTE
4 // RUN
: FileCheck
--check-prefix
=CHECK-ERROR
%s
< %t
5 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
-mattr
=+mops
< %s
2> %t | FileCheck
%s
--check-prefix
=CHECK
6 // RUN
: FileCheck
--check-prefix
=CHECK-NO-MTE-ERR
%s
< %t
7 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
-show-encoding
-mattr
=+v8.8
a < %s
2> %t | FileCheck
%s
--check-prefix
=CHECK
8 // RUN
: FileCheck
--check-prefix
=CHECK-NO-MTE-ERR
%s
< %t
9 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
< %s
2> %t
10 // RUN
: FileCheck
--check-prefix
=CHECK-NO-MOPS-ERR
--check-prefix
=CHECK-NO-MOPSMTE-ERR
%s
< %t
12 // CHECK
: [0x40,0x04,0x01,0x19]
13 // CHECK-NEXT
: [0x40,0x44,0x01,0x19]
14 // CHECK-NEXT
: [0x40,0x84,0x01,0x19]
15 // CHECK-NEXT
: [0x40,0xc4,0x01,0x19]
16 // CHECK-NEXT
: [0x40,0x14,0x01,0x19]
17 // CHECK-NEXT
: [0x40,0x54,0x01,0x19]
18 // CHECK-NEXT
: [0x40,0x94,0x01,0x19]
19 // CHECK-NEXT
: [0x40,0xd4,0x01,0x19]
20 // CHECK-NEXT
: [0x40,0x24,0x01,0x19]
21 // CHECK-NEXT
: [0x40,0x64,0x01,0x19]
22 // CHECK-NEXT
: [0x40,0xa4,0x01,0x19]
23 // CHECK-NEXT
: [0x40,0xe4,0x01,0x19]
24 // CHECK-NEXT
: [0x40,0x34,0x01,0x19]
25 // CHECK-NEXT
: [0x40,0x74,0x01,0x19]
26 // CHECK-NEXT
: [0x40,0xb4,0x01,0x19]
27 // CHECK-NEXT
: [0x40,0xf4,0x01,0x19]
28 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
29 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
30 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
31 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
32 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
33 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
34 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
35 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
36 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
37 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
38 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
39 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
40 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
41 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
42 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
43 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
44 cpyfp
[x0
]!, [x1
]!, x2
!
45 cpyfpwn
[x0
]!, [x1
]!, x2
!
46 cpyfprn
[x0
]!, [x1
]!, x2
!
47 cpyfpn
[x0
]!, [x1
]!, x2
!
48 cpyfpwt
[x0
]!, [x1
]!, x2
!
49 cpyfpwtwn
[x0
]!, [x1
]!, x2
!
50 cpyfpwtrn
[x0
]!, [x1
]!, x2
!
51 cpyfpwtn
[x0
]!, [x1
]!, x2
!
52 cpyfprt
[x0
]!, [x1
]!, x2
!
53 cpyfprtwn
[x0
]!, [x1
]!, x2
!
54 cpyfprtrn
[x0
]!, [x1
]!, x2
!
55 cpyfprtn
[x0
]!, [x1
]!, x2
!
56 cpyfpt
[x0
]!, [x1
]!, x2
!
57 cpyfptwn
[x0
]!, [x1
]!, x2
!
58 cpyfptrn
[x0
]!, [x1
]!, x2
!
59 cpyfptn
[x0
]!, [x1
]!, x2
!
61 // CHECK
: [0x40,0x04,0x41,0x19]
62 // CHECK-NEXT
: [0x40,0x44,0x41,0x19]
63 // CHECK-NEXT
: [0x40,0x84,0x41,0x19]
64 // CHECK-NEXT
: [0x40,0xc4,0x41,0x19]
65 // CHECK-NEXT
: [0x40,0x14,0x41,0x19]
66 // CHECK-NEXT
: [0x40,0x54,0x41,0x19]
67 // CHECK-NEXT
: [0x40,0x94,0x41,0x19]
68 // CHECK-NEXT
: [0x40,0xd4,0x41,0x19]
69 // CHECK-NEXT
: [0x40,0x24,0x41,0x19]
70 // CHECK-NEXT
: [0x40,0x64,0x41,0x19]
71 // CHECK-NEXT
: [0x40,0xa4,0x41,0x19]
72 // CHECK-NEXT
: [0x40,0xe4,0x41,0x19]
73 // CHECK-NEXT
: [0x40,0x34,0x41,0x19]
74 // CHECK-NEXT
: [0x40,0x74,0x41,0x19]
75 // CHECK-NEXT
: [0x40,0xb4,0x41,0x19]
76 // CHECK-NEXT
: [0x40,0xf4,0x41,0x19]
77 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
78 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
79 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
80 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
81 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
82 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
83 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
84 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
85 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
86 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
87 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
88 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
89 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
90 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
91 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
92 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
93 cpyfm
[x0
]!, [x1
]!, x2
!
94 cpyfmwn
[x0
]!, [x1
]!, x2
!
95 cpyfmrn
[x0
]!, [x1
]!, x2
!
96 cpyfmn
[x0
]!, [x1
]!, x2
!
97 cpyfmwt
[x0
]!, [x1
]!, x2
!
98 cpyfmwtwn
[x0
]!, [x1
]!, x2
!
99 cpyfmwtrn
[x0
]!, [x1
]!, x2
!
100 cpyfmwtn
[x0
]!, [x1
]!, x2
!
101 cpyfmrt
[x0
]!, [x1
]!, x2
!
102 cpyfmrtwn
[x0
]!, [x1
]!, x2
!
103 cpyfmrtrn
[x0
]!, [x1
]!, x2
!
104 cpyfmrtn
[x0
]!, [x1
]!, x2
!
105 cpyfmt
[x0
]!, [x1
]!, x2
!
106 cpyfmtwn
[x0
]!, [x1
]!, x2
!
107 cpyfmtrn
[x0
]!, [x1
]!, x2
!
108 cpyfmtn
[x0
]!, [x1
]!, x2
!
110 // CHECK
: [0x40,0x04,0x81,0x19]
111 // CHECK-NEXT
: [0x40,0x44,0x81,0x19]
112 // CHECK-NEXT
: [0x40,0x84,0x81,0x19]
113 // CHECK-NEXT
: [0x40,0xc4,0x81,0x19]
114 // CHECK-NEXT
: [0x40,0x14,0x81,0x19]
115 // CHECK-NEXT
: [0x40,0x54,0x81,0x19]
116 // CHECK-NEXT
: [0x40,0x94,0x81,0x19]
117 // CHECK-NEXT
: [0x40,0xd4,0x81,0x19]
118 // CHECK-NEXT
: [0x40,0x24,0x81,0x19]
119 // CHECK-NEXT
: [0x40,0x64,0x81,0x19]
120 // CHECK-NEXT
: [0x40,0xa4,0x81,0x19]
121 // CHECK-NEXT
: [0x40,0xe4,0x81,0x19]
122 // CHECK-NEXT
: [0x40,0x34,0x81,0x19]
123 // CHECK-NEXT
: [0x40,0x74,0x81,0x19]
124 // CHECK-NEXT
: [0x40,0xb4,0x81,0x19]
125 // CHECK-NEXT
: [0x40,0xf4,0x81,0x19]
126 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
127 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
128 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
129 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
130 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
131 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
132 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
133 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
134 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
135 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
136 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
137 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
138 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
139 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
140 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
141 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
142 cpyfe
[x0
]!, [x1
]!, x2
!
143 cpyfewn
[x0
]!, [x1
]!, x2
!
144 cpyfern
[x0
]!, [x1
]!, x2
!
145 cpyfen
[x0
]!, [x1
]!, x2
!
146 cpyfewt
[x0
]!, [x1
]!, x2
!
147 cpyfewtwn
[x0
]!, [x1
]!, x2
!
148 cpyfewtrn
[x0
]!, [x1
]!, x2
!
149 cpyfewtn
[x0
]!, [x1
]!, x2
!
150 cpyfert
[x0
]!, [x1
]!, x2
!
151 cpyfertwn
[x0
]!, [x1
]!, x2
!
152 cpyfertrn
[x0
]!, [x1
]!, x2
!
153 cpyfertn
[x0
]!, [x1
]!, x2
!
154 cpyfet
[x0
]!, [x1
]!, x2
!
155 cpyfetwn
[x0
]!, [x1
]!, x2
!
156 cpyfetrn
[x0
]!, [x1
]!, x2
!
157 cpyfetn
[x0
]!, [x1
]!, x2
!
159 // CHECK
: [0x40,0x04,0x01,0x1d]
160 // CHECK-NEXT
: [0x40,0x44,0x01,0x1d]
161 // CHECK-NEXT
: [0x40,0x84,0x01,0x1d]
162 // CHECK-NEXT
: [0x40,0xc4,0x01,0x1d]
163 // CHECK-NEXT
: [0x40,0x14,0x01,0x1d]
164 // CHECK-NEXT
: [0x40,0x54,0x01,0x1d]
165 // CHECK-NEXT
: [0x40,0x94,0x01,0x1d]
166 // CHECK-NEXT
: [0x40,0xd4,0x01,0x1d]
167 // CHECK-NEXT
: [0x40,0x24,0x01,0x1d]
168 // CHECK-NEXT
: [0x40,0x64,0x01,0x1d]
169 // CHECK-NEXT
: [0x40,0xa4,0x01,0x1d]
170 // CHECK-NEXT
: [0x40,0xe4,0x01,0x1d]
171 // CHECK-NEXT
: [0x40,0x34,0x01,0x1d]
172 // CHECK-NEXT
: [0x40,0x74,0x01,0x1d]
173 // CHECK-NEXT
: [0x40,0xb4,0x01,0x1d]
174 // CHECK-NEXT
: [0x40,0xf4,0x01,0x1d]
175 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
176 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
177 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
178 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
179 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
180 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
181 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
182 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
183 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
184 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
185 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
186 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
187 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
188 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
189 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
190 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
191 cpyp
[x0
]!, [x1
]!, x2
!
192 cpypwn
[x0
]!, [x1
]!, x2
!
193 cpyprn
[x0
]!, [x1
]!, x2
!
194 cpypn
[x0
]!, [x1
]!, x2
!
195 cpypwt
[x0
]!, [x1
]!, x2
!
196 cpypwtwn
[x0
]!, [x1
]!, x2
!
197 cpypwtrn
[x0
]!, [x1
]!, x2
!
198 cpypwtn
[x0
]!, [x1
]!, x2
!
199 cpyprt
[x0
]!, [x1
]!, x2
!
200 cpyprtwn
[x0
]!, [x1
]!, x2
!
201 cpyprtrn
[x0
]!, [x1
]!, x2
!
202 cpyprtn
[x0
]!, [x1
]!, x2
!
203 cpypt
[x0
]!, [x1
]!, x2
!
204 cpyptwn
[x0
]!, [x1
]!, x2
!
205 cpyptrn
[x0
]!, [x1
]!, x2
!
206 cpyptn
[x0
]!, [x1
]!, x2
!
208 // CHECK
: [0x40,0x04,0x41,0x1d]
209 // CHECK-NEXT
: [0x40,0x44,0x41,0x1d]
210 // CHECK-NEXT
: [0x40,0x84,0x41,0x1d]
211 // CHECK-NEXT
: [0x40,0xc4,0x41,0x1d]
212 // CHECK-NEXT
: [0x40,0x14,0x41,0x1d]
213 // CHECK-NEXT
: [0x40,0x54,0x41,0x1d]
214 // CHECK-NEXT
: [0x40,0x94,0x41,0x1d]
215 // CHECK-NEXT
: [0x40,0xd4,0x41,0x1d]
216 // CHECK-NEXT
: [0x40,0x24,0x41,0x1d]
217 // CHECK-NEXT
: [0x40,0x64,0x41,0x1d]
218 // CHECK-NEXT
: [0x40,0xa4,0x41,0x1d]
219 // CHECK-NEXT
: [0x40,0xe4,0x41,0x1d]
220 // CHECK-NEXT
: [0x40,0x34,0x41,0x1d]
221 // CHECK-NEXT
: [0x40,0x74,0x41,0x1d]
222 // CHECK-NEXT
: [0x40,0xb4,0x41,0x1d]
223 // CHECK-NEXT
: [0x40,0xf4,0x41,0x1d]
224 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
225 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
226 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
227 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
228 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
229 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
230 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
231 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
232 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
233 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
234 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
235 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
236 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
237 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
238 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
239 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
240 cpym
[x0
]!, [x1
]!, x2
!
241 cpymwn
[x0
]!, [x1
]!, x2
!
242 cpymrn
[x0
]!, [x1
]!, x2
!
243 cpymn
[x0
]!, [x1
]!, x2
!
244 cpymwt
[x0
]!, [x1
]!, x2
!
245 cpymwtwn
[x0
]!, [x1
]!, x2
!
246 cpymwtrn
[x0
]!, [x1
]!, x2
!
247 cpymwtn
[x0
]!, [x1
]!, x2
!
248 cpymrt
[x0
]!, [x1
]!, x2
!
249 cpymrtwn
[x0
]!, [x1
]!, x2
!
250 cpymrtrn
[x0
]!, [x1
]!, x2
!
251 cpymrtn
[x0
]!, [x1
]!, x2
!
252 cpymt
[x0
]!, [x1
]!, x2
!
253 cpymtwn
[x0
]!, [x1
]!, x2
!
254 cpymtrn
[x0
]!, [x1
]!, x2
!
255 cpymtn
[x0
]!, [x1
]!, x2
!
257 // CHECK
: [0x40,0x04,0x81,0x1d]
258 // CHECK-NEXT
: [0x40,0x44,0x81,0x1d]
259 // CHECK-NEXT
: [0x40,0x84,0x81,0x1d]
260 // CHECK-NEXT
: [0x40,0xc4,0x81,0x1d]
261 // CHECK-NEXT
: [0x40,0x14,0x81,0x1d]
262 // CHECK-NEXT
: [0x40,0x54,0x81,0x1d]
263 // CHECK-NEXT
: [0x40,0x94,0x81,0x1d]
264 // CHECK-NEXT
: [0x40,0xd4,0x81,0x1d]
265 // CHECK-NEXT
: [0x40,0x24,0x81,0x1d]
266 // CHECK-NEXT
: [0x40,0x64,0x81,0x1d]
267 // CHECK-NEXT
: [0x40,0xa4,0x81,0x1d]
268 // CHECK-NEXT
: [0x40,0xe4,0x81,0x1d]
269 // CHECK-NEXT
: [0x40,0x34,0x81,0x1d]
270 // CHECK-NEXT
: [0x40,0x74,0x81,0x1d]
271 // CHECK-NEXT
: [0x40,0xb4,0x81,0x1d]
272 // CHECK-NEXT
: [0x40,0xf4,0x81,0x1d]
273 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
274 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
275 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
276 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
277 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
278 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
279 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
280 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
281 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
282 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
283 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
284 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
285 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
286 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
287 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
288 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
289 cpye
[x0
]!, [x1
]!, x2
!
290 cpyewn
[x0
]!, [x1
]!, x2
!
291 cpyern
[x0
]!, [x1
]!, x2
!
292 cpyen
[x0
]!, [x1
]!, x2
!
293 cpyewt
[x0
]!, [x1
]!, x2
!
294 cpyewtwn
[x0
]!, [x1
]!, x2
!
295 cpyewtrn
[x0
]!, [x1
]!, x2
!
296 cpyewtn
[x0
]!, [x1
]!, x2
!
297 cpyert
[x0
]!, [x1
]!, x2
!
298 cpyertwn
[x0
]!, [x1
]!, x2
!
299 cpyertrn
[x0
]!, [x1
]!, x2
!
300 cpyertn
[x0
]!, [x1
]!, x2
!
301 cpyet
[x0
]!, [x1
]!, x2
!
302 cpyetwn
[x0
]!, [x1
]!, x2
!
303 cpyetrn
[x0
]!, [x1
]!, x2
!
304 cpyetn
[x0
]!, [x1
]!, x2
!
306 // CHECK
: [0x20,0x04,0xc2,0x19]
307 // CHECK-NEXT
: [0x20,0x14,0xc2,0x19]
308 // CHECK-NEXT
: [0x20,0x24,0xc2,0x19]
309 // CHECK-NEXT
: [0x20,0x34,0xc2,0x19]
310 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
311 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
312 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
313 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
317 setptn
[x0
]!, x1
!, x2
319 // CHECK
: [0x20,0x44,0xc2,0x19]
320 // CHECK
: [0x20,0x54,0xc2,0x19]
321 // CHECK
: [0x20,0x64,0xc2,0x19]
322 // CHECK
: [0x20,0x74,0xc2,0x19]
323 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
324 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
325 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
326 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
330 setmtn
[x0
]!, x1
!, x2
332 // CHECK
: [0x20,0x84,0xc2,0x19]
333 // CHECK
: [0x20,0x94,0xc2,0x19]
334 // CHECK
: [0x20,0xa4,0xc2,0x19]
335 // CHECK
: [0x20,0xb4,0xc2,0x19]
336 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
337 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
338 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
339 // CHECK-NO-MOPS-ERR
: error
: instruction requires
: mops
343 setetn
[x0
]!, x1
!, x2
345 // CHECK-MTE
: [0x20,0x04,0xc2,0x1d]
346 // CHECK-MTE
: [0x20,0x14,0xc2,0x1d]
347 // CHECK-MTE
: [0x20,0x24,0xc2,0x1d]
348 // CHECK-MTE
: [0x20,0x34,0xc2,0x1d]
349 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
350 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
351 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
352 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
353 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
354 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
355 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
356 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
358 setgpt
[x0
]!, x1
!, x2
359 setgpn
[x0
]!, x1
!, x2
360 setgptn
[x0
]!, x1
!, x2
362 // CHECK-MTE
: [0x20,0x44,0xc2,0x1d]
363 // CHECK-MTE
: [0x20,0x54,0xc2,0x1d]
364 // CHECK-MTE
: [0x20,0x64,0xc2,0x1d]
365 // CHECK-MTE
: [0x20,0x74,0xc2,0x1d]
366 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
367 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
368 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
369 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
370 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
371 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
372 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
373 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
375 setgmt
[x0
]!, x1
!, x2
376 setgmn
[x0
]!, x1
!, x2
377 setgmtn
[x0
]!, x1
!, x2
379 // CHECK-MTE
: [0x20,0x84,0xc2,0x1d]
380 // CHECK-MTE
: [0x20,0x94,0xc2,0x1d]
381 // CHECK-MTE
: [0x20,0xa4,0xc2,0x1d]
382 // CHECK-MTE
: [0x20,0xb4,0xc2,0x1d]
383 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
384 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
385 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
386 // CHECK-NO-MTE-ERR
: error
: instruction requires
: mte
387 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
388 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
389 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
390 // CHECK-NO-MOPSMTE-ERR
: error
: instruction requires
: mops mte
392 setget
[x0
]!, x1
!, x2
393 setgen
[x0
]!, x1
!, x2
394 setgetn
[x0
]!, x1
!, x2
396 // All operand must
be different from each other
398 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and source registers are the same
399 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and size registers are the same
400 // CHECK-ERROR
: error
: invalid CPY instruction
, source
and size registers are the same
401 cpyfp
[x0
]!, [x0
]!, x1
!
402 cpyfp
[x0
]!, [x1
]!, x0
!
403 cpyfp
[x1
]!, [x0
]!, x0
!
405 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and source registers are the same
406 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and size registers are the same
407 // CHECK-ERROR
: error
: invalid CPY instruction
, source
and size registers are the same
408 cpyfm
[x0
]!, [x0
]!, x1
!
409 cpyfm
[x0
]!, [x1
]!, x0
!
410 cpyfm
[x1
]!, [x0
]!, x0
!
412 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and source registers are the same
413 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and size registers are the same
414 // CHECK-ERROR
: error
: invalid CPY instruction
, source
and size registers are the same
415 cpyfe
[x0
]!, [x0
]!, x1
!
416 cpyfe
[x0
]!, [x1
]!, x0
!
417 cpyfe
[x1
]!, [x0
]!, x0
!
419 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and source registers are the same
420 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and size registers are the same
421 // CHECK-ERROR
: error
: invalid CPY instruction
, source
and size registers are the same
422 cpyp
[x0
]!, [x0
]!, x1
!
423 cpyp
[x0
]!, [x1
]!, x0
!
424 cpyp
[x1
]!, [x0
]!, x0
!
426 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and source registers are the same
427 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and size registers are the same
428 // CHECK-ERROR
: error
: invalid CPY instruction
, source
and size registers are the same
429 cpym
[x0
]!, [x0
]!, x1
!
430 cpym
[x0
]!, [x1
]!, x0
!
431 cpym
[x1
]!, [x0
]!, x0
!
433 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and source registers are the same
434 // CHECK-ERROR
: error
: invalid CPY instruction
, destination
and size registers are the same
435 // CHECK-ERROR
: error
: invalid CPY instruction
, source
and size registers are the same
436 cpye
[x0
]!, [x0
]!, x1
!
437 cpye
[x0
]!, [x1
]!, x0
!
438 cpye
[x1
]!, [x0
]!, x0
!
440 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and size registers are the same
441 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and source registers are the same
442 // CHECK-ERROR
: error
: invalid SET instruction
, source
and size registers are the same
447 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and size registers are the same
448 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and source registers are the same
449 // CHECK-ERROR
: error
: invalid SET instruction
, source
and size registers are the same
454 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and size registers are the same
455 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and source registers are the same
456 // CHECK-ERROR
: error
: invalid SET instruction
, source
and size registers are the same
461 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and size registers are the same
462 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and source registers are the same
463 // CHECK-ERROR
: error
: invalid SET instruction
, source
and size registers are the same
468 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and size registers are the same
469 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and source registers are the same
470 // CHECK-ERROR
: error
: invalid SET instruction
, source
and size registers are the same
475 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and size registers are the same
476 // CHECK-ERROR
: error
: invalid SET instruction
, destination
and source registers are the same
477 // CHECK-ERROR
: error
: invalid SET instruction
, source
and size registers are the same
482 // SP cannot
be used as argument at any position
484 // CHECK-ERROR
: error
: invalid operand for instruction
485 // CHECK-ERROR
: error
: invalid operand for instruction
486 // CHECK-ERROR
: error
: invalid operand for instruction
487 cpyfp
[sp
]!, [x1
]!, x2
!
488 cpyfp
[x0
]!, [sp
]!, x2
!
489 cpyfp
[x0
]!, [x1
]!, sp
!
491 // CHECK-ERROR
: error
: invalid operand for instruction
492 // CHECK-ERROR
: error
: invalid operand for instruction
493 // CHECK-ERROR
: error
: invalid operand for instruction
494 cpyfm
[sp
]!, [x1
]!, x2
!
495 cpyfm
[x0
]!, [sp
]!, x2
!
496 cpyfm
[x0
]!, [x1
]!, sp
!
498 // CHECK-ERROR
: error
: invalid operand for instruction
499 // CHECK-ERROR
: error
: invalid operand for instruction
500 // CHECK-ERROR
: error
: invalid operand for instruction
501 cpyfe
[sp
]!, [x1
]!, x2
!
502 cpyfe
[x0
]!, [sp
]!, x2
!
503 cpyfe
[x0
]!, [x1
]!, sp
!
505 // CHECK-ERROR
: error
: invalid operand for instruction
506 // CHECK-ERROR
: error
: invalid operand for instruction
507 // CHECK-ERROR
: error
: invalid operand for instruction
508 cpyp
[sp
]!, [x2
]!, x2
!
509 cpyp
[x0
]!, [sp
]!, x2
!
510 cpyp
[x0
]!, [x1
]!, sp
!
512 // CHECK-ERROR
: error
: invalid operand for instruction
513 // CHECK-ERROR
: error
: invalid operand for instruction
514 // CHECK-ERROR
: error
: invalid operand for instruction
515 cpym
[sp
]!, [x2
]!, x2
!
516 cpym
[x0
]!, [sp
]!, x2
!
517 cpym
[x0
]!, [x1
]!, sp
!
519 // CHECK-ERROR
: error
: invalid operand for instruction
520 // CHECK-ERROR
: error
: invalid operand for instruction
521 // CHECK-ERROR
: error
: invalid operand for instruction
522 cpye
[sp
]!, [x2
]!, x2
!
523 cpye
[x0
]!, [sp
]!, x2
!
524 cpye
[x0
]!, [x1
]!, sp
!
526 // CHECK-ERROR
: error
: invalid operand for instruction
527 // CHECK-ERROR
: error
: invalid operand for instruction
528 // CHECK-ERROR
: error
: invalid operand for instruction
533 // CHECK-ERROR
: error
: invalid operand for instruction
534 // CHECK-ERROR
: error
: invalid operand for instruction
535 // CHECK-ERROR
: error
: invalid operand for instruction
540 // CHECK-ERROR
: error
: invalid operand for instruction
541 // CHECK-ERROR
: error
: invalid operand for instruction
542 // CHECK-ERROR
: error
: invalid operand for instruction
547 // CHECK-ERROR
: error
: invalid operand for instruction
548 // CHECK-ERROR
: error
: invalid operand for instruction
549 // CHECK-ERROR
: error
: invalid operand for instruction
554 // CHECK-ERROR
: error
: invalid operand for instruction
555 // CHECK-ERROR
: error
: invalid operand for instruction
556 // CHECK-ERROR
: error
: invalid operand for instruction
561 // CHECK-ERROR
: error
: invalid operand for instruction
562 // CHECK-ERROR
: error
: invalid operand for instruction
563 // CHECK-ERROR
: error
: invalid operand for instruction
568 // XZR can only
be used at
:
569 // - the size operand in CPY.
570 // - the size
or source operands in SET.
572 // CHECK-ERROR
: error
: invalid operand for instruction
573 // CHECK-ERROR
: error
: invalid operand for instruction
574 // CHECK
: cpyfp
[x0
]!, [x1
]!, xzr
!
575 cpyfp
[xzr
]!, [x1
]!, x2
!
576 cpyfp
[x0
]!, [xzr
]!, x2
!
577 cpyfp
[x0
]!, [x1
]!, xzr
!
579 // CHECK-ERROR
: error
: invalid operand for instruction
580 // CHECK-ERROR
: error
: invalid operand for instruction
581 // CHECK
: cpyfm
[x0
]!, [x1
]!, xzr
!
582 cpyfm
[xzr
]!, [x1
]!, x2
!
583 cpyfm
[x0
]!, [xzr
]!, x2
!
584 cpyfm
[x0
]!, [x1
]!, xzr
!
586 // CHECK-ERROR
: error
: invalid operand for instruction
587 // CHECK-ERROR
: error
: invalid operand for instruction
588 // CHECK
: cpyfe
[x0
]!, [x1
]!, xzr
!
589 cpyfe
[xzr
]!, [x1
]!, x2
!
590 cpyfe
[x0
]!, [xzr
]!, x2
!
591 cpyfe
[x0
]!, [x1
]!, xzr
!
593 // CHECK-ERROR
: error
: invalid operand for instruction
594 // CHECK-ERROR
: error
: invalid operand for instruction
595 // CHECK
: cpyp
[x0
]!, [x1
]!, xzr
!
596 cpyp
[xzr
]!, [x2
]!, x2
!
597 cpyp
[x0
]!, [xzr
]!, x2
!
598 cpyp
[x0
]!, [x1
]!, xzr
!
600 // CHECK-ERROR
: error
: invalid operand for instruction
601 // CHECK-ERROR
: error
: invalid operand for instruction
602 // CHECK
: cpym
[x0
]!, [x1
]!, xzr
!
603 cpym
[xzr
]!, [x2
]!, x2
!
604 cpym
[x0
]!, [xzr
]!, x2
!
605 cpym
[x0
]!, [x1
]!, xzr
!
607 // CHECK-ERROR
: error
: invalid operand for instruction
608 // CHECK-ERROR
: error
: invalid operand for instruction
609 // CHECK
: cpye
[x0
]!, [x1
]!, xzr
!
610 cpye
[xzr
]!, [x2
]!, x2
!
611 cpye
[x0
]!, [xzr
]!, x2
!
612 cpye
[x0
]!, [x1
]!, xzr
!
614 // CHECK-ERROR
: error
: invalid operand for instruction
615 // CHECK
: setp
[x0
]!, xzr
!, x2
616 // CHECK
: setp
[x0
]!, x1
!, xzr
621 // CHECK-ERROR
: error
: invalid operand for instruction
622 // CHECK
: setm
[x0
]!, xzr
!, x2
623 // CHECK
: setm
[x0
]!, x1
!, xzr
628 // CHECK-ERROR
: error
: invalid operand for instruction
629 // CHECK
: sete
[x0
]!, xzr
!, x2
630 // CHECK
: sete
[x0
]!, x1
!, xzr
635 // CHECK-ERROR
: error
: invalid operand for instruction
636 // CHECK-MTE
: setgp
[x0
]!, xzr
!, x2
637 // CHECK-MTE
: setgp
[x0
]!, x1
!, xzr
638 setgp
[xzr
]!, x1
!, x2
639 setgp
[x0
]!, xzr
!, x2
640 setgp
[x0
]!, x1
!, xzr
642 // CHECK-ERROR
: error
: invalid operand for instruction
643 // CHECK-MTE
: setgm
[x0
]!, xzr
!, x2
644 // CHECK-MTE
: setgm
[x0
]!, x1
!, xzr
645 setgm
[xzr
]!, x1
!, x2
646 setgm
[x0
]!, xzr
!, x2
647 setgm
[x0
]!, x1
!, xzr
649 // CHECK-ERROR
: error
: invalid operand for instruction
650 // CHECK-MTE
: setge
[x0
]!, xzr
!, x2
651 // CHECK-MTE
: setge
[x0
]!, x1
!, xzr
652 setge
[xzr
]!, x1
!, x2
653 setge
[x0
]!, xzr
!, x2
654 setge
[x0
]!, x1
!, xzr