Remove FileCheck from test case token_landingpad.ll.
[oota-llvm.git] / test / MC / AArch64 / arm64-fp-encoding.s
1 ; RUN: not llvm-mc -triple arm64-apple-darwin -mattr=neon -show-encoding -output-asm-variant=1 < %s 2>%t | FileCheck %s
2 ; RUN: FileCheck %s < %t --check-prefix=NO-FP16
3 ; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon,v8.2a,fullfp16 -show-encoding -output-asm-variant=1 < %s | FileCheck %s --check-prefix=CHECK --check-prefix=FP16
4
5 foo:
6 ;-----------------------------------------------------------------------------
7 ; Floating-point arithmetic
8 ;-----------------------------------------------------------------------------
9
10   fabs h1, h2
11   fabs s1, s2
12   fabs d1, d2
13
14 ; FP16:  fabs h1, h2                 ; encoding: [0x41,0xc0,0xe0,0x1e]
15 ; NO-FP16: error: instruction requires:
16 ; NO-FP16-NEXT:  fabs h1, h2
17 ; CHECK: fabs s1, s2                 ; encoding: [0x41,0xc0,0x20,0x1e]
18 ; CHECK: fabs d1, d2                 ; encoding: [0x41,0xc0,0x60,0x1e]
19
20   fadd h1, h2, h3
21   fadd s1, s2, s3
22   fadd d1, d2, d3
23
24 ; FP16:  fadd h1, h2, h3             ; encoding: [0x41,0x28,0xe3,0x1e]
25 ; NO-FP16: error: instruction requires:
26 ; NO-FP16-NEXT:  fadd h1, h2, h3
27 ; CHECK: fadd s1, s2, s3             ; encoding: [0x41,0x28,0x23,0x1e]
28 ; CHECK: fadd d1, d2, d3             ; encoding: [0x41,0x28,0x63,0x1e]
29
30   fdiv h1, h2, h3
31   fdiv s1, s2, s3
32   fdiv d1, d2, d3
33
34 ; FP16:  fdiv h1, h2, h3             ; encoding: [0x41,0x18,0xe3,0x1e]
35 ; NO-FP16: error: instruction requires:
36 ; NO-FP16-NEXT:  fdiv h1, h2, h3
37 ; CHECK: fdiv s1, s2, s3             ; encoding: [0x41,0x18,0x23,0x1e]
38 ; CHECK: fdiv d1, d2, d3             ; encoding: [0x41,0x18,0x63,0x1e]
39
40   fmadd h1, h2, h3, h4
41   fmadd s1, s2, s3, s4
42   fmadd d1, d2, d3, d4
43
44 ; FP16:  fmadd h1, h2, h3, h4        ; encoding: [0x41,0x10,0xc3,0x1f]
45 ; NO-FP16: error: instruction requires:
46 ; NO-FP16-NEXT:  fmadd h1, h2, h3, h4
47 ; CHECK: fmadd s1, s2, s3, s4        ; encoding: [0x41,0x10,0x03,0x1f]
48 ; CHECK: fmadd d1, d2, d3, d4        ; encoding: [0x41,0x10,0x43,0x1f]
49
50   fmax   h1, h2, h3
51   fmax   s1, s2, s3
52   fmax   d1, d2, d3
53   fmaxnm h1, h2, h3
54   fmaxnm s1, s2, s3
55   fmaxnm d1, d2, d3
56
57 ; FP16:  fmax   h1, h2, h3           ; encoding: [0x41,0x48,0xe3,0x1e]
58 ; NO-FP16: error: instruction requires:
59 ; NO-FP16-NEXT: fmax   h1, h2, h3
60 ; CHECK: fmax   s1, s2, s3           ; encoding: [0x41,0x48,0x23,0x1e]
61 ; CHECK: fmax   d1, d2, d3           ; encoding: [0x41,0x48,0x63,0x1e]
62 ; FP16:  fmaxnm h1, h2, h3           ; encoding: [0x41,0x68,0xe3,0x1e]
63 ; NO-FP16: error: instruction requires:
64 ; NO-FP16-NEXT: fmaxnm h1, h2, h3
65 ; CHECK: fmaxnm s1, s2, s3           ; encoding: [0x41,0x68,0x23,0x1e]
66 ; CHECK: fmaxnm d1, d2, d3           ; encoding: [0x41,0x68,0x63,0x1e]
67
68   fmin   h1, h2, h3
69   fmin   s1, s2, s3
70   fmin   d1, d2, d3
71   fminnm h1, h2, h3
72   fminnm s1, s2, s3
73   fminnm d1, d2, d3
74
75 ; FP16:  fmin   h1, h2, h3           ; encoding: [0x41,0x58,0xe3,0x1e]
76 ; NO-FP16: error: instruction requires:
77 ; NO-FP16-NEXT: fmin   h1, h2, h3
78 ; CHECK: fmin   s1, s2, s3           ; encoding: [0x41,0x58,0x23,0x1e]
79 ; CHECK: fmin   d1, d2, d3           ; encoding: [0x41,0x58,0x63,0x1e]
80 ; FP16:  fminnm h1, h2, h3           ; encoding: [0x41,0x78,0xe3,0x1e]
81 ; NO-FP16: error: instruction requires:
82 ; NO-FP16-NEXT: fminnm h1, h2, h3
83 ; CHECK: fminnm s1, s2, s3           ; encoding: [0x41,0x78,0x23,0x1e]
84 ; CHECK: fminnm d1, d2, d3           ; encoding: [0x41,0x78,0x63,0x1e]
85
86   fmsub h1, h2, h3, h4
87   fmsub s1, s2, s3, s4
88   fmsub d1, d2, d3, d4
89
90 ; FP16:  fmsub h1, h2, h3, h4        ; encoding: [0x41,0x90,0xc3,0x1f]
91 ; NO-FP16: error: instruction requires:
92 ; NO-FP16-NEXT: fmsub h1, h2, h3, h4
93 ; CHECK: fmsub s1, s2, s3, s4        ; encoding: [0x41,0x90,0x03,0x1f]
94 ; CHECK: fmsub d1, d2, d3, d4        ; encoding: [0x41,0x90,0x43,0x1f]
95
96   fmul h1, h2, h3
97   fmul s1, s2, s3
98   fmul d1, d2, d3
99
100 ; FP16:  fmul h1, h2, h3             ; encoding: [0x41,0x08,0xe3,0x1e]
101 ; NO-FP16: error: instruction requires:
102 ; NO-FP16-NEXT: fmul h1, h2, h3
103 ; CHECK: fmul s1, s2, s3             ; encoding: [0x41,0x08,0x23,0x1e]
104 ; CHECK: fmul d1, d2, d3             ; encoding: [0x41,0x08,0x63,0x1e]
105
106   fneg h1, h2
107   fneg s1, s2
108   fneg d1, d2
109
110 ; FP16:  fneg h1, h2                 ; encoding: [0x41,0x40,0xe1,0x1e]
111 ; NO-FP16: error: instruction requires:
112 ; NO-FP16-NEXT: fneg h1, h2
113 ; CHECK: fneg s1, s2                 ; encoding: [0x41,0x40,0x21,0x1e]
114 ; CHECK: fneg d1, d2                 ; encoding: [0x41,0x40,0x61,0x1e]
115
116   fnmadd h1, h2, h3, h4
117   fnmadd s1, s2, s3, s4
118   fnmadd d1, d2, d3, d4
119
120 ; FP16:  fnmadd h1, h2, h3, h4       ; encoding: [0x41,0x10,0xe3,0x1f]
121 ; NO-FP16: error: instruction requires:
122 ; NO-FP16-NEXT: fnmadd h1, h2, h3, h4
123 ; CHECK: fnmadd s1, s2, s3, s4       ; encoding: [0x41,0x10,0x23,0x1f]
124 ; CHECK: fnmadd d1, d2, d3, d4       ; encoding: [0x41,0x10,0x63,0x1f]
125
126   fnmsub h1, h2, h3, h4
127   fnmsub s1, s2, s3, s4
128   fnmsub d1, d2, d3, d4
129
130 ; FP16:  fnmsub h1, h2, h3, h4       ; encoding: [0x41,0x90,0xe3,0x1f]
131 ; NO-FP16: error: instruction requires:
132 ; NO-FP16-NEXT: fnmsub h1, h2, h3, h4
133 ; CHECK: fnmsub s1, s2, s3, s4       ; encoding: [0x41,0x90,0x23,0x1f]
134 ; CHECK: fnmsub d1, d2, d3, d4       ; encoding: [0x41,0x90,0x63,0x1f]
135
136   fnmul h1, h2, h3
137   fnmul s1, s2, s3
138   fnmul d1, d2, d3
139
140 ; FP16:  fnmul h1, h2, h3            ; encoding: [0x41,0x88,0xe3,0x1e]
141 ; NO-FP16: error: instruction requires:
142 ; NO-FP16-NEXT: fnmul h1, h2, h3
143 ; CHECK: fnmul s1, s2, s3            ; encoding: [0x41,0x88,0x23,0x1e]
144 ; CHECK: fnmul d1, d2, d3            ; encoding: [0x41,0x88,0x63,0x1e]
145
146   fsqrt h1, h2
147   fsqrt s1, s2
148   fsqrt d1, d2
149
150 ; FP16:  fsqrt h1, h2                ; encoding: [0x41,0xc0,0xe1,0x1e]
151 ; NO-FP16: error: instruction requires:
152 ; NO-FP16-NEXT: fsqrt h1, h2
153 ; CHECK: fsqrt s1, s2                ; encoding: [0x41,0xc0,0x21,0x1e]
154 ; CHECK: fsqrt d1, d2                ; encoding: [0x41,0xc0,0x61,0x1e]
155
156   fsub h1, h2, h3
157   fsub s1, s2, s3
158   fsub d1, d2, d3
159
160 ; FP16:  fsub h1, h2, h3             ; encoding: [0x41,0x38,0xe3,0x1e]
161 ; NO-FP16: error: instruction requires:
162 ; NO-FP16-NEXT: fsub h1, h2, h3
163 ; CHECK: fsub s1, s2, s3             ; encoding: [0x41,0x38,0x23,0x1e]
164 ; CHECK: fsub d1, d2, d3             ; encoding: [0x41,0x38,0x63,0x1e]
165
166 ;-----------------------------------------------------------------------------
167 ; Floating-point comparison
168 ;-----------------------------------------------------------------------------
169
170   fccmp  h1, h2, #0, eq
171   fccmp  s1, s2, #0, eq
172   fccmp  d1, d2, #0, eq
173   fccmpe h1, h2, #0, eq
174   fccmpe s1, s2, #0, eq
175   fccmpe d1, d2, #0, eq
176
177 ; FP16:  fccmp  h1, h2, #0, eq       ; encoding: [0x20,0x04,0xe2,0x1e]
178 ; NO-FP16: error: instruction requires:
179 ; NO-FP16-NEXT: fccmp  h1, h2, #0, eq
180 ; CHECK: fccmp  s1, s2, #0, eq       ; encoding: [0x20,0x04,0x22,0x1e]
181 ; CHECK: fccmp  d1, d2, #0, eq       ; encoding: [0x20,0x04,0x62,0x1e]
182 ; FP16:  fccmpe h1, h2, #0, eq       ; encoding: [0x30,0x04,0xe2,0x1e]
183 ; NO-FP16: error: instruction requires:
184 ; NO-FP16-NEXT: fccmpe h1, h2, #0, eq
185 ; CHECK: fccmpe s1, s2, #0, eq       ; encoding: [0x30,0x04,0x22,0x1e]
186 ; CHECK: fccmpe d1, d2, #0, eq       ; encoding: [0x30,0x04,0x62,0x1e]
187
188   fcmp  h1, h2
189   fcmp  s1, s2
190   fcmp  d1, d2
191   fcmp  h1, #0.0
192   fcmp  s1, #0.0
193   fcmp  d1, #0.0
194   fcmpe h1, h2
195   fcmpe s1, s2
196   fcmpe d1, d2
197   fcmpe h1, #0.0
198   fcmpe s1, #0.0
199   fcmpe d1, #0.0
200
201 ; FP16:  fcmp  h1, h2                ; encoding: [0x20,0x20,0xe2,0x1e]
202 ; NO-FP16: error: instruction requires:
203 ; NO-FP16-NEXT: fcmp  h1, h2
204 ; CHECK: fcmp  s1, s2                ; encoding: [0x20,0x20,0x22,0x1e]
205 ; CHECK: fcmp  d1, d2                ; encoding: [0x20,0x20,0x62,0x1e]
206 ; FP16:  fcmp  h1, #0.0              ; encoding: [0x28,0x20,0xe0,0x1e]
207 ; NO-FP16: error: instruction requires:
208 ; NO-FP16-NEXT: fcmp  h1, #0.0
209 ; CHECK: fcmp  s1, #0.0              ; encoding: [0x28,0x20,0x20,0x1e]
210 ; CHECK: fcmp  d1, #0.0              ; encoding: [0x28,0x20,0x60,0x1e]
211 ; FP16:  fcmpe h1, h2                ; encoding: [0x30,0x20,0xe2,0x1e]
212 ; NO-FP16: error: instruction requires:
213 ; NO-FP16-NEXT: fcmpe h1, h2
214 ; CHECK: fcmpe s1, s2                ; encoding: [0x30,0x20,0x22,0x1e]
215 ; CHECK: fcmpe d1, d2                ; encoding: [0x30,0x20,0x62,0x1e]
216 ; FP16:  fcmpe h1, #0.0              ; encoding: [0x38,0x20,0xe0,0x1e]
217 ; NO-FP16: error: instruction requires:
218 ; NO-FP16-NEXT: fcmpe h1, #0.0
219 ; CHECK: fcmpe s1, #0.0              ; encoding: [0x38,0x20,0x20,0x1e]
220 ; CHECK: fcmpe d1, #0.0              ; encoding: [0x38,0x20,0x60,0x1e]
221
222 ;-----------------------------------------------------------------------------
223 ; Floating-point conditional select
224 ;-----------------------------------------------------------------------------
225
226   fcsel h1, h2, h3, eq
227   fcsel s1, s2, s3, eq
228   fcsel d1, d2, d3, eq
229
230 ; FP16:  fcsel h1, h2, h3, eq        ; encoding: [0x41,0x0c,0xe3,0x1e]
231 ; NO-FP16: error: instruction requires:
232 ; NO-FP16-NEXT: fcsel h1, h2, h3, eq
233 ; CHECK: fcsel s1, s2, s3, eq        ; encoding: [0x41,0x0c,0x23,0x1e]
234 ; CHECK: fcsel d1, d2, d3, eq        ; encoding: [0x41,0x0c,0x63,0x1e]
235
236 ;-----------------------------------------------------------------------------
237 ; Floating-point convert
238 ;-----------------------------------------------------------------------------
239
240   fcvt h1, d2
241   fcvt s1, d2
242   fcvt d1, h2
243   fcvt s1, h2
244   fcvt d1, s2
245   fcvt h1, s2
246
247 ; CHECK: fcvt h1, d2                 ; encoding: [0x41,0xc0,0x63,0x1e]
248 ; CHECK: fcvt s1, d2                 ; encoding: [0x41,0x40,0x62,0x1e]
249 ; CHECK: fcvt d1, h2                 ; encoding: [0x41,0xc0,0xe2,0x1e]
250 ; CHECK: fcvt s1, h2                 ; encoding: [0x41,0x40,0xe2,0x1e]
251 ; CHECK: fcvt d1, s2                 ; encoding: [0x41,0xc0,0x22,0x1e]
252 ; CHECK: fcvt h1, s2                 ; encoding: [0x41,0xc0,0x23,0x1e]
253
254   fcvtas w1, d2
255   fcvtas x1, d2
256   fcvtas w1, s2
257   fcvtas x1, s2
258   fcvtas w1, h2
259   fcvtas x1, h2
260
261 ; CHECK: fcvtas w1, d2                  ; encoding: [0x41,0x00,0x64,0x1e]
262 ; CHECK: fcvtas x1, d2                  ; encoding: [0x41,0x00,0x64,0x9e]
263 ; CHECK: fcvtas w1, s2                  ; encoding: [0x41,0x00,0x24,0x1e]
264 ; CHECK: fcvtas x1, s2                  ; encoding: [0x41,0x00,0x24,0x9e]
265 ; FP16:  fcvtas w1, h2                  ; encoding: [0x41,0x00,0xe4,0x1e]
266 ; NO-FP16: error: instruction requires:
267 ; NO-FP16-NEXT: fcvtas  w1, h2
268 ; FP16:  fcvtas x1, h2                  ; encoding: [0x41,0x00,0xe4,0x9e]
269 ; NO-FP16: error: instruction requires:
270 ; NO-FP16-NEXT: fcvtas  x1, h2
271
272   fcvtau w1, h2
273   fcvtau w1, s2
274   fcvtau w1, d2
275   fcvtau x1, h2
276   fcvtau x1, s2
277   fcvtau x1, d2
278
279 ; FP16:  fcvtau w1, h2                  ; encoding: [0x41,0x00,0xe5,0x1e]
280 ; NO-FP16: error: instruction requires:
281 ; NO-FP16-NEXT: fcvtau  w1, h2
282 ; CHECK: fcvtau w1, s2                  ; encoding: [0x41,0x00,0x25,0x1e]
283 ; CHECK: fcvtau w1, d2                  ; encoding: [0x41,0x00,0x65,0x1e]
284 ; FP16:  fcvtau x1, h2                  ; encoding: [0x41,0x00,0xe5,0x9e]
285 ; NO-FP16: error: instruction requires:
286 ; NO-FP16-NEXT: fcvtau  x1, h2
287 ; CHECK: fcvtau x1, s2                  ; encoding: [0x41,0x00,0x25,0x9e]
288 ; CHECK: fcvtau x1, d2                  ; encoding: [0x41,0x00,0x65,0x9e]
289
290   fcvtms w1, h2
291   fcvtms w1, s2
292   fcvtms w1, d2
293   fcvtms x1, h2
294   fcvtms x1, s2
295   fcvtms x1, d2
296
297 ; FP16:  fcvtms w1, h2                  ; encoding: [0x41,0x00,0xf0,0x1e]
298 ; NO-FP16: error: instruction requires:
299 ; NO-FP16-NEXT: fcvtms  w1, h2
300 ; CHECK: fcvtms w1, s2                  ; encoding: [0x41,0x00,0x30,0x1e]
301 ; CHECK: fcvtms w1, d2                  ; encoding: [0x41,0x00,0x70,0x1e]
302 ; FP16:  fcvtms x1, h2                  ; encoding: [0x41,0x00,0xf0,0x9e]
303 ; NO-FP16: error: instruction requires:
304 ; NO-FP16-NEXT: fcvtms  x1, h2
305 ; CHECK: fcvtms x1, s2                  ; encoding: [0x41,0x00,0x30,0x9e]
306 ; CHECK: fcvtms x1, d2                  ; encoding: [0x41,0x00,0x70,0x9e]
307
308   fcvtmu w1, h2
309   fcvtmu w1, s2
310   fcvtmu w1, d2
311   fcvtmu x1, h2
312   fcvtmu x1, s2
313   fcvtmu x1, d2
314
315 ; FP16:  fcvtmu w1, h2                  ; encoding: [0x41,0x00,0xf1,0x1e]
316 ; NO-FP16: error: instruction requires:
317 ; NO-FP16-NEXT: fcvtmu  w1, h2
318 ; CHECK: fcvtmu w1, s2                  ; encoding: [0x41,0x00,0x31,0x1e]
319 ; CHECK: fcvtmu w1, d2                  ; encoding: [0x41,0x00,0x71,0x1e]
320 ; FP16:  fcvtmu x1, h2                  ; encoding: [0x41,0x00,0xf1,0x9e]
321 ; NO-FP16: error: instruction requires:
322 ; NO-FP16-NEXT: fcvtmu  x1, h2
323 ; CHECK: fcvtmu x1, s2                  ; encoding: [0x41,0x00,0x31,0x9e]
324 ; CHECK: fcvtmu x1, d2                  ; encoding: [0x41,0x00,0x71,0x9e]
325
326   fcvtns w1, h2
327   fcvtns w1, s2
328   fcvtns w1, d2
329   fcvtns x1, h2
330   fcvtns x1, s2
331   fcvtns x1, d2
332
333 ; FP16:  fcvtns w1, h2                  ; encoding: [0x41,0x00,0xe0,0x1e]
334 ; NO-FP16: error: instruction requires:
335 ; NO-FP16-NEXT: fcvtns  w1, h2
336 ; CHECK: fcvtns w1, s2                  ; encoding: [0x41,0x00,0x20,0x1e]
337 ; CHECK: fcvtns w1, d2                  ; encoding: [0x41,0x00,0x60,0x1e]
338 ; FP16:  fcvtns x1, h2                  ; encoding: [0x41,0x00,0xe0,0x9e]
339 ; NO-FP16: error: instruction requires:
340 ; NO-FP16-NEXT: fcvtns  x1, h2
341 ; CHECK: fcvtns x1, s2                  ; encoding: [0x41,0x00,0x20,0x9e]
342 ; CHECK: fcvtns x1, d2                  ; encoding: [0x41,0x00,0x60,0x9e]
343
344   fcvtnu w1, h2
345   fcvtnu w1, s2
346   fcvtnu w1, d2
347   fcvtnu x1, h2
348   fcvtnu x1, s2
349   fcvtnu x1, d2
350
351 ; FP16:  fcvtnu w1, h2                  ; encoding: [0x41,0x00,0xe1,0x1e]
352 ; NO-FP16: error: instruction requires:
353 ; NO-FP16-NEXT: fcvtnu  w1, h2
354 ; CHECK: fcvtnu w1, s2                  ; encoding: [0x41,0x00,0x21,0x1e]
355 ; CHECK: fcvtnu w1, d2                  ; encoding: [0x41,0x00,0x61,0x1e]
356 ; FP16:  fcvtnu x1, h2                  ; encoding: [0x41,0x00,0xe1,0x9e]
357 ; NO-FP16: error: instruction requires:
358 ; NO-FP16-NEXT: fcvtnu  x1, h2
359 ; CHECK: fcvtnu x1, s2                  ; encoding: [0x41,0x00,0x21,0x9e]
360 ; CHECK: fcvtnu x1, d2                  ; encoding: [0x41,0x00,0x61,0x9e]
361
362   fcvtps w1, h2
363   fcvtps w1, s2
364   fcvtps w1, d2
365   fcvtps x1, h2
366   fcvtps x1, s2
367   fcvtps x1, d2
368
369 ; FP16:  fcvtps w1, h2                  ; encoding: [0x41,0x00,0xe8,0x1e]
370 ; NO-FP16: error: instruction requires:
371 ; NO-FP16-NEXT: fcvtps  w1, h2
372 ; CHECK: fcvtps w1, s2                  ; encoding: [0x41,0x00,0x28,0x1e]
373 ; CHECK: fcvtps w1, d2                  ; encoding: [0x41,0x00,0x68,0x1e]
374 ; FP16:  fcvtps x1, h2                  ; encoding: [0x41,0x00,0xe8,0x9e]
375 ; NO-FP16: error: instruction requires:
376 ; NO-FP16-NEXT: fcvtps  x1, h2
377 ; CHECK: fcvtps x1, s2                  ; encoding: [0x41,0x00,0x28,0x9e]
378 ; CHECK: fcvtps x1, d2                  ; encoding: [0x41,0x00,0x68,0x9e]
379
380   fcvtpu w1, h2
381   fcvtpu w1, s2
382   fcvtpu w1, d2
383   fcvtpu x1, h2
384   fcvtpu x1, s2
385   fcvtpu x1, d2
386
387 ; FP16:  fcvtpu w1, h2                  ; encoding: [0x41,0x00,0xe9,0x1e]
388 ; NO-FP16: error: instruction requires:
389 ; NO-FP16-NEXT: fcvtpu  w1, h2
390 ; CHECK: fcvtpu w1, s2                  ; encoding: [0x41,0x00,0x29,0x1e]
391 ; CHECK: fcvtpu w1, d2                  ; encoding: [0x41,0x00,0x69,0x1e]
392 ; FP16:  fcvtpu x1, h2                  ; encoding: [0x41,0x00,0xe9,0x9e]
393 ; NO-FP16: error: instruction requires:
394 ; NO-FP16-NEXT: fcvtpu  x1, h2
395 ; CHECK: fcvtpu x1, s2                  ; encoding: [0x41,0x00,0x29,0x9e]
396 ; CHECK: fcvtpu x1, d2                  ; encoding: [0x41,0x00,0x69,0x9e]
397
398   fcvtzs w1, h2
399   fcvtzs w1, h2, #1
400   fcvtzs w1, s2
401   fcvtzs w1, s2, #1
402   fcvtzs w1, d2
403   fcvtzs w1, d2, #1
404   fcvtzs x1, h2
405   fcvtzs x1, h2, #1
406   fcvtzs x1, s2
407   fcvtzs x1, s2, #1
408   fcvtzs x1, d2
409   fcvtzs x1, d2, #1
410
411 ; FP16:  fcvtzs w1, h2                  ; encoding: [0x41,0x00,0xf8,0x1e]
412 ; NO-FP16: error: instruction requires:
413 ; NO-FP16-NEXT: fcvtzs  w1, h2
414 ; FP16:  fcvtzs w1, h2, #1              ; encoding: [0x41,0xfc,0xd8,0x1e]
415 ; NO-FP16: error: instruction requires:
416 ; NO-FP16-NEXT: fcvtzs  w1, h2, #1
417 ; CHECK: fcvtzs w1, s2                  ; encoding: [0x41,0x00,0x38,0x1e]
418 ; CHECK: fcvtzs w1, s2, #1              ; encoding: [0x41,0xfc,0x18,0x1e]
419 ; CHECK: fcvtzs w1, d2                  ; encoding: [0x41,0x00,0x78,0x1e]
420 ; CHECK: fcvtzs w1, d2, #1              ; encoding: [0x41,0xfc,0x58,0x1e]
421 ; FP16:  fcvtzs x1, h2                  ; encoding: [0x41,0x00,0xf8,0x9e]
422 ; NO-FP16: error: instruction requires:
423 ; NO-FP16-NEXT: fcvtzs  x1, h2
424 ; FP16:  fcvtzs x1, h2, #1              ; encoding: [0x41,0xfc,0xd8,0x9e]
425 ; NO-FP16: error: instruction requires:
426 ; NO-FP16-NEXT: fcvtzs  x1, h2, #1
427 ; CHECK: fcvtzs x1, s2                  ; encoding: [0x41,0x00,0x38,0x9e]
428 ; CHECK: fcvtzs x1, s2, #1              ; encoding: [0x41,0xfc,0x18,0x9e]
429 ; CHECK: fcvtzs x1, d2                  ; encoding: [0x41,0x00,0x78,0x9e]
430 ; CHECK: fcvtzs x1, d2, #1              ; encoding: [0x41,0xfc,0x58,0x9e]
431
432   fcvtzu w1, h2
433   fcvtzu w1, h2, #1
434   fcvtzu w1, s2
435   fcvtzu w1, s2, #1
436   fcvtzu w1, d2
437   fcvtzu w1, d2, #1
438   fcvtzu x1, h2
439   fcvtzu x1, h2, #1
440   fcvtzu x1, s2
441   fcvtzu x1, s2, #1
442   fcvtzu x1, d2
443   fcvtzu x1, d2, #1
444
445 ; FP16:  fcvtzu w1, h2                  ; encoding: [0x41,0x00,0xf9,0x1e]
446 ; NO-FP16: error: instruction requires:
447 ; NO-FP16-NEXT: fcvtzu  w1, h2
448 ; FP16:  fcvtzu w1, h2, #1              ; encoding: [0x41,0xfc,0xd9,0x1e]
449 ; NO-FP16: error: instruction requires:
450 ; NO-FP16-NEXT: fcvtzu  w1, h2, #1
451 ; CHECK: fcvtzu w1, s2                  ; encoding: [0x41,0x00,0x39,0x1e]
452 ; CHECK: fcvtzu w1, s2, #1              ; encoding: [0x41,0xfc,0x19,0x1e]
453 ; CHECK: fcvtzu w1, d2                  ; encoding: [0x41,0x00,0x79,0x1e]
454 ; CHECK: fcvtzu w1, d2, #1              ; encoding: [0x41,0xfc,0x59,0x1e]
455 ; FP16:  fcvtzu x1, h2                  ; encoding: [0x41,0x00,0xf9,0x9e]
456 ; NO-FP16: error: instruction requires:
457 ; NO-FP16-NEXT: fcvtzu  x1, h2
458 ; FP16:  fcvtzu x1, h2, #1              ; encoding: [0x41,0xfc,0xd9,0x9e]
459 ; NO-FP16: error: instruction requires:
460 ; NO-FP16-NEXT: fcvtzu  x1, h2, #1
461 ; CHECK: fcvtzu x1, s2                  ; encoding: [0x41,0x00,0x39,0x9e]
462 ; CHECK: fcvtzu x1, s2, #1              ; encoding: [0x41,0xfc,0x19,0x9e]
463 ; CHECK: fcvtzu x1, d2                  ; encoding: [0x41,0x00,0x79,0x9e]
464 ; CHECK: fcvtzu x1, d2, #1              ; encoding: [0x41,0xfc,0x59,0x9e]
465
466   scvtf h1, w2
467   scvtf h1, w2, #1
468   scvtf s1, w2
469   scvtf s1, w2, #1
470   scvtf d1, w2
471   scvtf d1, w2, #1
472   scvtf h1, x2
473   scvtf h1, x2, #1
474   scvtf s1, x2
475   scvtf s1, x2, #1
476   scvtf d1, x2
477   scvtf d1, x2, #1
478
479 ; FP16:  scvtf  h1, w2                  ; encoding: [0x41,0x00,0xe2,0x1e]
480 ; NO-FP16: error: instruction requires:
481 ; NO-FP16-NEXT: scvtf h1, w2
482 ; FP16:  scvtf  h1, w2, #1              ; encoding: [0x41,0xfc,0xc2,0x1e]
483 ; NO-FP16: error: instruction requires:
484 ; NO-FP16-NEXT: scvtf h1, w2, #1
485 ; CHECK: scvtf  s1, w2                  ; encoding: [0x41,0x00,0x22,0x1e]
486 ; CHECK: scvtf  s1, w2, #1              ; encoding: [0x41,0xfc,0x02,0x1e]
487 ; CHECK: scvtf  d1, w2                  ; encoding: [0x41,0x00,0x62,0x1e]
488 ; CHECK: scvtf  d1, w2, #1              ; encoding: [0x41,0xfc,0x42,0x1e]
489 ; FP16:  scvtf  h1, x2                  ; encoding: [0x41,0x00,0xe2,0x9e]
490 ; NO-FP16: error: instruction requires:
491 ; NO-FP16-NEXT: scvtf h1, x2
492 ; FP16:  scvtf  h1, x2, #1              ; encoding: [0x41,0xfc,0xc2,0x9e]
493 ; NO-FP16: error: instruction requires:
494 ; NO-FP16-NEXT: scvtf h1, x2, #1
495 ; CHECK: scvtf  s1, x2                  ; encoding: [0x41,0x00,0x22,0x9e]
496 ; CHECK: scvtf  s1, x2, #1              ; encoding: [0x41,0xfc,0x02,0x9e]
497 ; CHECK: scvtf  d1, x2                  ; encoding: [0x41,0x00,0x62,0x9e]
498 ; CHECK: scvtf  d1, x2, #1              ; encoding: [0x41,0xfc,0x42,0x9e]
499
500   ucvtf h1, w2
501   ucvtf h1, w2, #1
502   ucvtf s1, w2
503   ucvtf s1, w2, #1
504   ucvtf d1, w2
505   ucvtf d1, w2, #1
506   ucvtf h1, x2
507   ucvtf h1, x2, #1
508   ucvtf s1, x2
509   ucvtf s1, x2, #1
510   ucvtf d1, x2
511   ucvtf d1, x2, #1
512
513 ; FP16:  ucvtf  h1, w2                  ; encoding: [0x41,0x00,0xe3,0x1e]
514 ; NO-FP16: error: instruction requires:
515 ; NO-FP16-NEXT: ucvtf h1, w2
516 ; FP16:  ucvtf  h1, w2, #1              ; encoding: [0x41,0xfc,0xc3,0x1e]
517 ; NO-FP16: error: instruction requires:
518 ; NO-FP16-NEXT: ucvtf h1, w2, #1
519 ; CHECK: ucvtf  s1, w2                  ; encoding: [0x41,0x00,0x23,0x1e]
520 ; CHECK: ucvtf  s1, w2, #1              ; encoding: [0x41,0xfc,0x03,0x1e]
521 ; CHECK: ucvtf  d1, w2                  ; encoding: [0x41,0x00,0x63,0x1e]
522 ; CHECK: ucvtf  d1, w2, #1              ; encoding: [0x41,0xfc,0x43,0x1e]
523 ; FP16:  ucvtf  h1, x2                  ; encoding: [0x41,0x00,0xe3,0x9e]
524 ; NO-FP16: error: instruction requires:
525 ; NO-FP16-NEXT: ucvtf h1, x2
526 ; FP16:  ucvtf  h1, x2, #1              ; encoding: [0x41,0xfc,0xc3,0x9e]
527 ; NO-FP16: error: instruction requires:
528 ; NO-FP16-NEXT: ucvtf h1, x2, #1
529 ; CHECK: ucvtf  s1, x2                  ; encoding: [0x41,0x00,0x23,0x9e]
530 ; CHECK: ucvtf  s1, x2, #1              ; encoding: [0x41,0xfc,0x03,0x9e]
531 ; CHECK: ucvtf  d1, x2                  ; encoding: [0x41,0x00,0x63,0x9e]
532 ; CHECK: ucvtf  d1, x2, #1              ; encoding: [0x41,0xfc,0x43,0x9e]
533
534 ;-----------------------------------------------------------------------------
535 ; Floating-point move
536 ;-----------------------------------------------------------------------------
537
538   fmov h1, w2
539   fmov w1, h2
540   fmov h1, x2
541   fmov x1, h2
542   fmov s1, w2
543   fmov w1, s2
544   fmov d1, x2
545   fmov x1, d2
546
547 ; FP16:  fmov h1, w2                 ; encoding: [0x41,0x00,0xe7,0x1e]
548 ; NO-FP16: error: instruction requires:
549 ; NO-FP16-NEXT: fmov h1, w2
550 ; FP16:  fmov w1, h2                 ; encoding: [0x41,0x00,0xe6,0x1e]
551 ; NO-FP16: error: instruction requires:
552 ; NO-FP16-NEXT: fmov w1, h2
553 ; FP16:  fmov h1, x2                 ; encoding: [0x41,0x00,0xe7,0x9e]
554 ; NO-FP16: error: instruction requires:
555 ; NO-FP16-NEXT: fmov h1, x2
556 ; FP16:  fmov x1, h2                 ; encoding: [0x41,0x00,0xe6,0x9e]
557 ; NO-FP16: error: instruction requires:
558 ; NO-FP16-NEXT: fmov x1, h2
559 ; CHECK: fmov s1, w2                 ; encoding: [0x41,0x00,0x27,0x1e]
560 ; CHECK: fmov w1, s2                 ; encoding: [0x41,0x00,0x26,0x1e]
561 ; CHECK: fmov d1, x2                 ; encoding: [0x41,0x00,0x67,0x9e]
562 ; CHECK: fmov x1, d2                 ; encoding: [0x41,0x00,0x66,0x9e]
563
564   fmov h1, #0.125
565   fmov h1, #0x40
566   fmov s1, #0.125
567   fmov s1, #0x40
568   fmov d1, #0.125
569   fmov d1, #0x40
570   fmov d1, #-4.843750e-01
571   fmov d1, #4.843750e-01
572   fmov d3, #3
573   fmov h2, #0.0
574   fmov s2, #0.0
575   fmov d2, #0.0
576
577 ; FP16:  fmov h1, #0.12500000      ; encoding: [0x01,0x10,0xe8,0x1e]
578 ; NO-FP16: error: instruction requires:
579 ; NO-FP16-NEXT: fmov h1, #0.125
580 ; FP16:  fmov h1, #0.12500000      ; encoding: [0x01,0x10,0xe8,0x1e]
581 ; NO-FP16: error: instruction requires:
582 ; NO-FP16-NEXT: fmov h1, #0x40
583 ; CHECK: fmov s1, #0.12500000      ; encoding: [0x01,0x10,0x28,0x1e]
584 ; CHECK: fmov s1, #0.12500000      ; encoding: [0x01,0x10,0x28,0x1e]
585 ; CHECK: fmov d1, #0.12500000      ; encoding: [0x01,0x10,0x68,0x1e]
586 ; CHECK: fmov d1, #0.12500000      ; encoding: [0x01,0x10,0x68,0x1e]
587 ; CHECK: fmov d1, #-0.48437500     ; encoding: [0x01,0xf0,0x7b,0x1e]
588 ; CHECK: fmov d1, #0.48437500      ; encoding: [0x01,0xf0,0x6b,0x1e]
589 ; CHECK: fmov d3, #3.00000000      ; encoding: [0x03,0x10,0x61,0x1e]
590 ; FP16:  fmov h2, wzr                ; encoding: [0xe2,0x03,0xe7,0x1e]
591 ; NO-FP16: error: instruction requires:
592 ; NO-FP16-NEXT: fmov h2, #0.0
593 ; CHECK: fmov s2, wzr                ; encoding: [0xe2,0x03,0x27,0x1e]
594 ; CHECK: fmov d2, xzr                ; encoding: [0xe2,0x03,0x67,0x9e]
595
596   fmov h1, h2
597   fmov s1, s2
598   fmov d1, d2
599
600 ; FP16:  fmov h1, h2                 ; encoding: [0x41,0x40,0xe0,0x1e]
601 ; NO-FP16: error: instruction requires:
602 ; NO-FP16-NEXT: fmov h1, h2
603 ; CHECK: fmov s1, s2                 ; encoding: [0x41,0x40,0x20,0x1e]
604 ; CHECK: fmov d1, d2                 ; encoding: [0x41,0x40,0x60,0x1e]
605
606
607   fmov x2, v5.d[1]
608   fmov.d x9, v7[1]
609   fmov v1.d[1], x1
610   fmov.d v8[1], x6
611
612 ; CHECK: fmov.d x2, v5[1]               ; encoding: [0xa2,0x00,0xae,0x9e]
613 ; CHECK: fmov.d x9, v7[1]               ; encoding: [0xe9,0x00,0xae,0x9e]
614 ; CHECK: fmov.d v1[1], x1               ; encoding: [0x21,0x00,0xaf,0x9e]
615 ; CHECK: fmov.d v8[1], x6               ; encoding: [0xc8,0x00,0xaf,0x9e]
616
617
618 ;-----------------------------------------------------------------------------
619 ; Floating-point round to integral
620 ;-----------------------------------------------------------------------------
621
622   frinta h1, h2
623   frinta s1, s2
624   frinta d1, d2
625
626 ; FP16:  frinta h1, h2               ; encoding: [0x41,0x40,0xe6,0x1e]
627 ; NO-FP16: error: instruction requires:
628 ; NO-FP16-NEXT: frinta h1, h2
629 ; CHECK: frinta s1, s2               ; encoding: [0x41,0x40,0x26,0x1e]
630 ; CHECK: frinta d1, d2               ; encoding: [0x41,0x40,0x66,0x1e]
631
632   frinti h1, h2
633   frinti s1, s2
634   frinti d1, d2
635
636 ; FP16:  frinti h1, h2               ; encoding: [0x41,0xc0,0xe7,0x1e]
637 ; NO-FP16: error: instruction requires:
638 ; NO-FP16-NEXT: frinti h1, h2
639 ; CHECK: frinti s1, s2               ; encoding: [0x41,0xc0,0x27,0x1e]
640 ; CHECK: frinti d1, d2               ; encoding: [0x41,0xc0,0x67,0x1e]
641
642   frintm h1, h2
643   frintm s1, s2
644   frintm d1, d2
645
646 ; FP16:  frintm h1, h2               ; encoding: [0x41,0x40,0xe5,0x1e]
647 ; NO-FP16: error: instruction requires:
648 ; NO-FP16-NEXT: frintm h1, h2
649 ; CHECK: frintm s1, s2               ; encoding: [0x41,0x40,0x25,0x1e]
650 ; CHECK: frintm d1, d2               ; encoding: [0x41,0x40,0x65,0x1e]
651
652   frintn h1, h2
653   frintn s1, s2
654   frintn d1, d2
655
656 ; FP16:  frintn h1, h2               ; encoding: [0x41,0x40,0xe4,0x1e]
657 ; NO-FP16: error: instruction requires:
658 ; NO-FP16-NEXT: frintn h1, h2
659 ; CHECK: frintn s1, s2               ; encoding: [0x41,0x40,0x24,0x1e]
660 ; CHECK: frintn d1, d2               ; encoding: [0x41,0x40,0x64,0x1e]
661
662   frintp h1, h2
663   frintp s1, s2
664   frintp d1, d2
665
666 ; FP16:  frintp h1, h2               ; encoding: [0x41,0xc0,0xe4,0x1e]
667 ; NO-FP16: error: instruction requires:
668 ; NO-FP16-NEXT: frintp h1, h2
669 ; CHECK: frintp s1, s2               ; encoding: [0x41,0xc0,0x24,0x1e]
670 ; CHECK: frintp d1, d2               ; encoding: [0x41,0xc0,0x64,0x1e]
671
672   frintx h1, h2
673   frintx s1, s2
674   frintx d1, d2
675
676 ; FP16:  frintx h1, h2               ; encoding: [0x41,0x40,0xe7,0x1e]
677 ; NO-FP16: error: instruction requires:
678 ; NO-FP16-NEXT: frintx h1, h2
679 ; CHECK: frintx s1, s2               ; encoding: [0x41,0x40,0x27,0x1e]
680 ; CHECK: frintx d1, d2               ; encoding: [0x41,0x40,0x67,0x1e]
681
682   frintz h1, h2
683   frintz s1, s2
684   frintz d1, d2
685
686 ; FP16:  frintz h1, h2               ; encoding: [0x41,0xc0,0xe5,0x1e]
687 ; NO-FP16: error: instruction requires:
688 ; NO-FP16-NEXT: frintz h1, h2
689 ; CHECK: frintz s1, s2               ; encoding: [0x41,0xc0,0x25,0x1e]
690 ; CHECK: frintz d1, d2               ; encoding: [0x41,0xc0,0x65,0x1e]
691
692   cmhs d0, d0, d0
693   cmtst d0, d0, d0
694
695 ; CHECK: cmhs d0, d0, d0              ; encoding: [0x00,0x3c,0xe0,0x7e]
696 ; CHECK: cmtst  d0, d0, d0              ; encoding: [0x00,0x8c,0xe0,0x5e]
697
698
699
700 ;-----------------------------------------------------------------------------
701 ; Floating-point extract and narrow
702 ;-----------------------------------------------------------------------------
703   sqxtn b4, h2
704   sqxtn h2, s3
705   sqxtn s9, d2
706
707 ; CHECK: sqxtn b4, h2                  ; encoding: [0x44,0x48,0x21,0x5e]
708 ; CHECK: sqxtn h2, s3                  ; encoding: [0x62,0x48,0x61,0x5e]
709 ; CHECK: sqxtn s9, d2                  ; encoding: [0x49,0x48,0xa1,0x5e]
710
711   sqxtun b4, h2
712   sqxtun h2, s3
713   sqxtun s9, d2
714
715 ; CHECK: sqxtun b4, h2                  ; encoding: [0x44,0x28,0x21,0x7e]
716 ; CHECK: sqxtun h2, s3                  ; encoding: [0x62,0x28,0x61,0x7e]
717 ; CHECK: sqxtun s9, d2                  ; encoding: [0x49,0x28,0xa1,0x7e]
718
719   uqxtn b4, h2
720   uqxtn h2, s3
721   uqxtn s9, d2
722
723 ; CHECK: uqxtn b4, h2                  ; encoding: [0x44,0x48,0x21,0x7e]
724 ; CHECK: uqxtn h2, s3                  ; encoding: [0x62,0x48,0x61,0x7e]
725 ; CHECK: uqxtn s9, d2                  ; encoding: [0x49,0x48,0xa1,0x7e]