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.2
a,fullfp16
-show-encoding
-output-asm-variant
=1 < %s | FileCheck
%s
--check-prefix
=CHECK
--check-prefix
=FP16
6 ;
-----------------------------------------------------------------------------
7 ; Floating-point arithmetic
8 ;
-----------------------------------------------------------------------------
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]
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]
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]
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]
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]
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]
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]
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]
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]
116 fnmadd h1
, h2
, h3
, h4
117 fnmadd s1
, s2
, s3
, s4
118 fnmadd d1
, d2
, d3
, d4
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]
126 fnmsub h1
, h2
, h3
, h4
127 fnmsub s1
, s2
, s3
, s4
128 fnmsub d1
, d2
, d3
, d4
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]
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]
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]
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]
166 ;
-----------------------------------------------------------------------------
167 ; Floating-point comparison
168 ;
-----------------------------------------------------------------------------
173 fccmpe h1
, h2
, #0, eq
174 fccmpe s1
, s2
, #0, eq
175 fccmpe d1
, d2
, #0, eq
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]
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]
222 ;
-----------------------------------------------------------------------------
223 ; Floating-point conditional select
224 ;
-----------------------------------------------------------------------------
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]
236 ;
-----------------------------------------------------------------------------
237 ; Floating-point convert
238 ;
-----------------------------------------------------------------------------
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]
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
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
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]
534 ;
-----------------------------------------------------------------------------
535 ; Floating-point move
536 ;
-----------------------------------------------------------------------------
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]
570 fmov d1
, #-4.843750e-01
571 fmov d1
, #4.843750e-01
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]
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]
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]
618 ;
-----------------------------------------------------------------------------
619 ; Floating-point round to integral
620 ;
-----------------------------------------------------------------------------
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]
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]
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]
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]
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]
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]
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]
695 ; CHECK
: cmhs d0
, d0
, d0 ; encoding
: [0x00,0x3c,0xe0,0x7e]
696 ; CHECK
: cmtst d0
, d0
, d0 ; encoding
: [0x00,0x8c,0xe0,0x5e]
700 ;
-----------------------------------------------------------------------------
701 ; Floating-point extract
and narrow
702 ;
-----------------------------------------------------------------------------
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]
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]
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]