• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
3
4---
5name:            fptrunc_s16_s32_fpr
6legalized:       true
7regBankSelected: true
8
9registers:
10  - { id: 0, class: fpr }
11  - { id: 1, class: fpr }
12
13body:             |
14  bb.0:
15    liveins: $s0
16
17    ; CHECK-LABEL: name: fptrunc_s16_s32_fpr
18    ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
19    ; CHECK: [[FCVTHSr:%[0-9]+]]:fpr16 = FCVTHSr [[COPY]]
20    ; CHECK: $h0 = COPY [[FCVTHSr]]
21    %0(s32) = COPY $s0
22    %1(s16) = G_FPTRUNC %0
23    $h0 = COPY %1(s16)
24...
25
26---
27name:            fptrunc_s16_s64_fpr
28legalized:       true
29regBankSelected: true
30
31registers:
32  - { id: 0, class: fpr }
33  - { id: 1, class: fpr }
34
35body:             |
36  bb.0:
37    liveins: $d0
38
39    ; CHECK-LABEL: name: fptrunc_s16_s64_fpr
40    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
41    ; CHECK: [[FCVTHDr:%[0-9]+]]:fpr16 = FCVTHDr [[COPY]]
42    ; CHECK: $h0 = COPY [[FCVTHDr]]
43    %0(s64) = COPY $d0
44    %1(s16) = G_FPTRUNC %0
45    $h0 = COPY %1(s16)
46...
47
48---
49name:            fptrunc_s32_s64_fpr
50legalized:       true
51regBankSelected: true
52
53registers:
54  - { id: 0, class: fpr }
55  - { id: 1, class: fpr }
56
57body:             |
58  bb.0:
59    liveins: $d0
60
61    ; CHECK-LABEL: name: fptrunc_s32_s64_fpr
62    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
63    ; CHECK: [[FCVTSDr:%[0-9]+]]:fpr32 = FCVTSDr [[COPY]]
64    ; CHECK: $s0 = COPY [[FCVTSDr]]
65    %0(s64) = COPY $d0
66    %1(s32) = G_FPTRUNC %0
67    $s0 = COPY %1(s32)
68...
69
70---
71name:            fptrunc_v4s16_v4s32_fpr
72legalized:       true
73regBankSelected: true
74
75registers:
76  - { id: 0, class: fpr }
77  - { id: 1, class: fpr }
78
79body:             |
80  bb.0:
81    liveins: $d0
82    ; CHECK-LABEL: name: fptrunc_v4s16_v4s32_fpr
83    ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
84    ; CHECK: [[FCVTNv4i16:%[0-9]+]]:fpr64 = FCVTNv4i16 [[COPY]]
85    ; CHECK: $d0 = COPY [[FCVTNv4i16]]
86    %0(<4 x s32>) = COPY $q0
87    %1(<4 x s16>) = G_FPTRUNC %0
88    $d0 = COPY %1(<4 x s16>)
89...
90
91---
92name:            fptrunc_v2s32_v2s64_fpr
93legalized:       true
94regBankSelected: true
95
96registers:
97  - { id: 0, class: fpr }
98  - { id: 1, class: fpr }
99
100body:             |
101  bb.0:
102    liveins: $q0
103    ; CHECK-LABEL: name: fptrunc_v2s32_v2s64_fpr
104    ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
105    ; CHECK: [[FCVTNv2i32:%[0-9]+]]:fpr64 = FCVTNv2i32 [[COPY]]
106    ; CHECK: $d0 = COPY [[FCVTNv2i32]]
107    %0(<2 x s64>) = COPY $q0
108    %1(<2 x s32>) = G_FPTRUNC %0
109    $d0 = COPY %1(<2 x s32>)
110...
111
112---
113name:            fpext_s32_s16_fpr
114legalized:       true
115regBankSelected: true
116
117registers:
118  - { id: 0, class: fpr }
119  - { id: 1, class: fpr }
120
121body:             |
122  bb.0:
123    liveins: $h0
124
125    ; CHECK-LABEL: name: fpext_s32_s16_fpr
126    ; CHECK: [[COPY:%[0-9]+]]:fpr16 = COPY $h0
127    ; CHECK: [[FCVTSHr:%[0-9]+]]:fpr32 = FCVTSHr [[COPY]]
128    ; CHECK: $s0 = COPY [[FCVTSHr]]
129    %0(s16) = COPY $h0
130    %1(s32) = G_FPEXT %0
131    $s0 = COPY %1(s32)
132...
133
134---
135name:            fpext_s64_s16_fpr
136legalized:       true
137regBankSelected: true
138
139registers:
140  - { id: 0, class: fpr }
141  - { id: 1, class: fpr }
142
143body:             |
144  bb.0:
145    liveins: $h0
146
147    ; CHECK-LABEL: name: fpext_s64_s16_fpr
148    ; CHECK: [[COPY:%[0-9]+]]:fpr16 = COPY $h0
149    ; CHECK: [[FCVTDHr:%[0-9]+]]:fpr64 = FCVTDHr [[COPY]]
150    ; CHECK: $d0 = COPY [[FCVTDHr]]
151    %0(s16) = COPY $h0
152    %1(s64) = G_FPEXT %0
153    $d0 = COPY %1(s64)
154...
155
156---
157name:            fpext_s64_s32_fpr
158legalized:       true
159regBankSelected: true
160
161registers:
162  - { id: 0, class: fpr }
163  - { id: 1, class: fpr }
164
165body:             |
166  bb.0:
167    liveins: $d0
168
169    ; CHECK-LABEL: name: fpext_s64_s32_fpr
170    ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
171    ; CHECK: [[FCVTDSr:%[0-9]+]]:fpr64 = FCVTDSr [[COPY]]
172    ; CHECK: $d0 = COPY [[FCVTDSr]]
173    %0(s32) = COPY $s0
174    %1(s64) = G_FPEXT %0
175    $d0 = COPY %1(s64)
176...
177
178---
179name:            fpext_v4s32_v4s16_fpr
180legalized:       true
181regBankSelected: true
182
183registers:
184  - { id: 0, class: fpr }
185  - { id: 1, class: fpr }
186
187body:             |
188  bb.0:
189    liveins: $d0
190    ; CHECK-LABEL: name: fpext_v4s32_v4s16_fpr
191    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
192    ; CHECK: [[FCVTLv4i16:%[0-9]+]]:fpr128 = FCVTLv4i16 [[COPY]]
193    ; CHECK: $q0 = COPY [[FCVTLv4i16]]
194    %0(<4 x s16>) = COPY $d0
195    %1(<4 x s32>) = G_FPEXT %0
196    $q0 = COPY %1(<4 x s32>)
197...
198
199---
200name:            fpext_v2s64_v2s32_fpr
201legalized:       true
202regBankSelected: true
203
204registers:
205  - { id: 0, class: fpr }
206  - { id: 1, class: fpr }
207
208body:             |
209  bb.0:
210    liveins: $d0
211    ; CHECK-LABEL: name: fpext_v2s64_v2s32_fpr
212    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
213    ; CHECK: [[FCVTLv2i32:%[0-9]+]]:fpr128 = FCVTLv2i32 [[COPY]]
214    ; CHECK: $q0 = COPY [[FCVTLv2i32]]
215    %0(<2 x s32>) = COPY $d0
216    %1(<2 x s64>) = G_FPEXT %0
217    $q0 = COPY %1(<2 x s64>)
218...
219
220---
221name:            sitofp_s32_s32_fpr
222legalized:       true
223regBankSelected: true
224
225registers:
226  - { id: 0, class: gpr }
227  - { id: 1, class: fpr }
228
229body:             |
230  bb.0:
231    liveins: $w0
232
233    ; CHECK-LABEL: name: sitofp_s32_s32_fpr
234    ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
235    ; CHECK: [[SCVTFUWSri:%[0-9]+]]:fpr32 = SCVTFUWSri [[COPY]]
236    ; CHECK: $s0 = COPY [[SCVTFUWSri]]
237    %0(s32) = COPY $w0
238    %1(s32) = G_SITOFP %0
239    $s0 = COPY %1(s32)
240...
241
242---
243name:            sitofp_s32_s64_fpr
244legalized:       true
245regBankSelected: true
246
247registers:
248  - { id: 0, class: gpr }
249  - { id: 1, class: fpr }
250
251body:             |
252  bb.0:
253    liveins: $x0
254
255    ; CHECK-LABEL: name: sitofp_s32_s64_fpr
256    ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
257    ; CHECK: [[SCVTFUXSri:%[0-9]+]]:fpr32 = SCVTFUXSri [[COPY]]
258    ; CHECK: $s0 = COPY [[SCVTFUXSri]]
259    %0(s64) = COPY $x0
260    %1(s32) = G_SITOFP %0
261    $s0 = COPY %1(s32)
262...
263
264---
265name:            sitofp_s64_s32_fpr
266legalized:       true
267regBankSelected: true
268
269registers:
270  - { id: 0, class: gpr }
271  - { id: 1, class: fpr }
272
273body:             |
274  bb.0:
275    liveins: $w0
276
277    ; CHECK-LABEL: name: sitofp_s64_s32_fpr
278    ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
279    ; CHECK: [[SCVTFUWDri:%[0-9]+]]:fpr64 = SCVTFUWDri [[COPY]]
280    ; CHECK: $d0 = COPY [[SCVTFUWDri]]
281    %0(s32) = COPY $w0
282    %1(s64) = G_SITOFP %0
283    $d0 = COPY %1(s64)
284...
285
286---
287name:            sitofp_s64_s64_fpr
288legalized:       true
289regBankSelected: true
290
291registers:
292  - { id: 0, class: gpr }
293  - { id: 1, class: fpr }
294
295body:             |
296  bb.0:
297    liveins: $x0
298
299    ; CHECK-LABEL: name: sitofp_s64_s64_fpr
300    ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
301    ; CHECK: [[SCVTFUXDri:%[0-9]+]]:fpr64 = SCVTFUXDri [[COPY]]
302    ; CHECK: $d0 = COPY [[SCVTFUXDri]]
303    %0(s64) = COPY $x0
304    %1(s64) = G_SITOFP %0
305    $d0 = COPY %1(s64)
306...
307
308---
309name:            uitofp_s32_s32_fpr
310legalized:       true
311regBankSelected: true
312
313registers:
314  - { id: 0, class: gpr }
315  - { id: 1, class: fpr }
316
317body:             |
318  bb.0:
319    liveins: $w0
320
321    ; CHECK-LABEL: name: uitofp_s32_s32_fpr
322    ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
323    ; CHECK: [[UCVTFUWSri:%[0-9]+]]:fpr32 = UCVTFUWSri [[COPY]]
324    ; CHECK: $s0 = COPY [[UCVTFUWSri]]
325    %0(s32) = COPY $w0
326    %1(s32) = G_UITOFP %0
327    $s0 = COPY %1(s32)
328...
329
330---
331name:            uitofp_s32_s64_fpr
332legalized:       true
333regBankSelected: true
334
335registers:
336  - { id: 0, class: gpr }
337  - { id: 1, class: fpr }
338
339body:             |
340  bb.0:
341    liveins: $x0
342
343    ; CHECK-LABEL: name: uitofp_s32_s64_fpr
344    ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
345    ; CHECK: [[UCVTFUXSri:%[0-9]+]]:fpr32 = UCVTFUXSri [[COPY]]
346    ; CHECK: $s0 = COPY [[UCVTFUXSri]]
347    %0(s64) = COPY $x0
348    %1(s32) = G_UITOFP %0
349    $s0 = COPY %1(s32)
350...
351
352---
353name:            uitofp_s64_s32_fpr
354legalized:       true
355regBankSelected: true
356
357registers:
358  - { id: 0, class: gpr }
359  - { id: 1, class: fpr }
360
361body:             |
362  bb.0:
363    liveins: $w0
364
365    ; CHECK-LABEL: name: uitofp_s64_s32_fpr
366    ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0
367    ; CHECK: [[UCVTFUWDri:%[0-9]+]]:fpr64 = UCVTFUWDri [[COPY]]
368    ; CHECK: $d0 = COPY [[UCVTFUWDri]]
369    %0(s32) = COPY $w0
370    %1(s64) = G_UITOFP %0
371    $d0 = COPY %1(s64)
372...
373
374---
375name:            uitofp_s64_s64_fpr
376legalized:       true
377regBankSelected: true
378
379registers:
380  - { id: 0, class: gpr }
381  - { id: 1, class: fpr }
382
383body:             |
384  bb.0:
385    liveins: $x0
386
387    ; CHECK-LABEL: name: uitofp_s64_s64_fpr
388    ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0
389    ; CHECK: [[UCVTFUXDri:%[0-9]+]]:fpr64 = UCVTFUXDri [[COPY]]
390    ; CHECK: $d0 = COPY [[UCVTFUXDri]]
391    %0(s64) = COPY $x0
392    %1(s64) = G_UITOFP %0
393    $d0 = COPY %1(s64)
394...
395
396---
397name:            fptosi_s32_s32_gpr
398legalized:       true
399regBankSelected: true
400
401registers:
402  - { id: 0, class: fpr }
403  - { id: 1, class: gpr }
404
405body:             |
406  bb.0:
407    liveins: $s0
408
409    ; CHECK-LABEL: name: fptosi_s32_s32_gpr
410    ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
411    ; CHECK: [[FCVTZSUWSr:%[0-9]+]]:gpr32 = FCVTZSUWSr [[COPY]]
412    ; CHECK: $w0 = COPY [[FCVTZSUWSr]]
413    %0(s32) = COPY $s0
414    %1(s32) = G_FPTOSI %0
415    $w0 = COPY %1(s32)
416...
417
418---
419name:            fptosi_s32_s64_gpr
420legalized:       true
421regBankSelected: true
422
423registers:
424  - { id: 0, class: fpr }
425  - { id: 1, class: gpr }
426
427body:             |
428  bb.0:
429    liveins: $d0
430
431    ; CHECK-LABEL: name: fptosi_s32_s64_gpr
432    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
433    ; CHECK: [[FCVTZSUWDr:%[0-9]+]]:gpr32 = FCVTZSUWDr [[COPY]]
434    ; CHECK: $w0 = COPY [[FCVTZSUWDr]]
435    %0(s64) = COPY $d0
436    %1(s32) = G_FPTOSI %0
437    $w0 = COPY %1(s32)
438...
439
440---
441name:            fptosi_s64_s32_gpr
442legalized:       true
443regBankSelected: true
444
445registers:
446  - { id: 0, class: fpr }
447  - { id: 1, class: gpr }
448
449body:             |
450  bb.0:
451    liveins: $s0
452
453    ; CHECK-LABEL: name: fptosi_s64_s32_gpr
454    ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
455    ; CHECK: [[FCVTZSUXSr:%[0-9]+]]:gpr64 = FCVTZSUXSr [[COPY]]
456    ; CHECK: $x0 = COPY [[FCVTZSUXSr]]
457    %0(s32) = COPY $s0
458    %1(s64) = G_FPTOSI %0
459    $x0 = COPY %1(s64)
460...
461
462---
463name:            fptosi_s64_s64_gpr
464legalized:       true
465regBankSelected: true
466
467registers:
468  - { id: 0, class: fpr }
469  - { id: 1, class: gpr }
470
471body:             |
472  bb.0:
473    liveins: $d0
474
475    ; CHECK-LABEL: name: fptosi_s64_s64_gpr
476    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
477    ; CHECK: [[FCVTZSUXDr:%[0-9]+]]:gpr64 = FCVTZSUXDr [[COPY]]
478    ; CHECK: $x0 = COPY [[FCVTZSUXDr]]
479    %0(s64) = COPY $d0
480    %1(s64) = G_FPTOSI %0
481    $x0 = COPY %1(s64)
482...
483
484---
485name:            fptoui_s32_s32_gpr
486legalized:       true
487regBankSelected: true
488
489registers:
490  - { id: 0, class: fpr }
491  - { id: 1, class: gpr }
492
493body:             |
494  bb.0:
495    liveins: $s0
496
497    ; CHECK-LABEL: name: fptoui_s32_s32_gpr
498    ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
499    ; CHECK: [[FCVTZUUWSr:%[0-9]+]]:gpr32 = FCVTZUUWSr [[COPY]]
500    ; CHECK: $w0 = COPY [[FCVTZUUWSr]]
501    %0(s32) = COPY $s0
502    %1(s32) = G_FPTOUI %0
503    $w0 = COPY %1(s32)
504...
505
506---
507name:            fptoui_s32_s64_gpr
508legalized:       true
509regBankSelected: true
510
511registers:
512  - { id: 0, class: fpr }
513  - { id: 1, class: gpr }
514
515body:             |
516  bb.0:
517    liveins: $d0
518
519    ; CHECK-LABEL: name: fptoui_s32_s64_gpr
520    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
521    ; CHECK: [[FCVTZUUWDr:%[0-9]+]]:gpr32 = FCVTZUUWDr [[COPY]]
522    ; CHECK: $w0 = COPY [[FCVTZUUWDr]]
523    %0(s64) = COPY $d0
524    %1(s32) = G_FPTOUI %0
525    $w0 = COPY %1(s32)
526...
527
528---
529name:            fptoui_s64_s32_gpr
530legalized:       true
531regBankSelected: true
532
533registers:
534  - { id: 0, class: fpr }
535  - { id: 1, class: gpr }
536
537body:             |
538  bb.0:
539    liveins: $s0
540
541    ; CHECK-LABEL: name: fptoui_s64_s32_gpr
542    ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
543    ; CHECK: [[FCVTZUUXSr:%[0-9]+]]:gpr64 = FCVTZUUXSr [[COPY]]
544    ; CHECK: $x0 = COPY [[FCVTZUUXSr]]
545    %0(s32) = COPY $s0
546    %1(s64) = G_FPTOUI %0
547    $x0 = COPY %1(s64)
548...
549
550---
551name:            fptoui_s64_s64_gpr
552legalized:       true
553regBankSelected: true
554
555registers:
556  - { id: 0, class: fpr }
557  - { id: 1, class: gpr }
558
559body:             |
560  bb.0:
561    liveins: $d0
562
563    ; CHECK-LABEL: name: fptoui_s64_s64_gpr
564    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
565    ; CHECK: [[FCVTZUUXDr:%[0-9]+]]:gpr64 = FCVTZUUXDr [[COPY]]
566    ; CHECK: $x0 = COPY [[FCVTZUUXDr]]
567    %0(s64) = COPY $d0
568    %1(s64) = G_FPTOUI %0
569    $x0 = COPY %1(s64)
570...
571