Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / regbankselect-default.mir
blob8d79c4412de67bf56e204d5ee1faeaecef08649a
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple arm64-- -run-pass=regbankselect %s -o - | FileCheck %s
4 # Check the default mappings for various instructions.
6 --- |
7   target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
9   define void @test_add_s32() { ret void }
10   define void @test_add_v4s32() { ret void }
11   define void @test_sub_s32() { ret void }
12   define void @test_sub_v4s32() { ret void }
13   define void @test_mul_s32() { ret void }
14   define void @test_mul_v4s32() { ret void }
16   define void @test_and_s32() { ret void }
17   define void @test_and_v4s32() { ret void }
18   define void @test_or_s32() { ret void }
19   define void @test_or_v4s32() { ret void }
20   define void @test_xor_s32() { ret void }
21   define void @test_xor_v4s32() { ret void }
23   define void @test_shl_s32() { ret void }
24   define void @test_shl_v4s32() { ret void }
25   define void @test_lshr_s32() { ret void }
26   define void @test_ashr_s32() { ret void }
28   define void @test_sdiv_s32() { ret void }
29   define void @test_udiv_s32() { ret void }
31   define void @test_anyext_s64_s32() { ret void }
32   define void @test_sext_s64_s32() { ret void }
33   define void @test_zext_s64_s32() { ret void }
34   define void @test_trunc_s32_s64() { ret void }
36   define void @test_constant_s32() { ret void }
37   define void @test_constant_p0() { ret void }
39   define void @test_icmp_s32() { ret void }
40   define void @test_icmp_p0() { ret void }
42   define void @test_frame_index_p0() {
43     %ptr0 = alloca i64
44     ret void
45   }
47   define void @test_ptrtoint_s64_p0() { ret void }
48   define void @test_inttoptr_p0_s64() { ret void }
50   define void @test_load_s32_p0() { ret void }
51   define void @test_store_s32_p0() { ret void }
53   define void @test_fadd_s32() { ret void }
54   define void @test_fsub_s32() { ret void }
55   define void @test_fmul_s32() { ret void }
56   define void @test_fdiv_s32() { ret void }
58   define void @test_fpext_s64_s32() { ret void }
59   define void @test_fptrunc_s32_s64() { ret void }
61   define void @test_fconstant_s32() { ret void }
62   define void @test_fneg_s32() { ret void }
64   define void @test_fcmp_s32() { ret void }
66   define void @test_sitofp_s64_s32() { ret void }
67   define void @test_sitofp_v4s32() { ret void }
68   define void @test_uitofp_s32_s64() { ret void }
69   define void @test_uitofp_v4s32() { ret void }
71   define void @test_fptosi_s64_s32() { ret void }
72   define void @test_fptosi_v4s32() { ret void }
73   define void @test_fptoui_s32_s64() { ret void }
74   define void @test_fptoui_v4s32() { ret void }
76   define void @test_gphi_ptr() { ret void }
78   define void @test_restricted_tail_call() { ret void }
80 ...
82 ---
83 name:            test_add_s32
84 legalized:       true
85 registers:
86   - { id: 0, class: _ }
87   - { id: 1, class: _ }
88 body: |
89   bb.0:
90     liveins: $w0
91     ; CHECK-LABEL: name: test_add_s32
92     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
93     ; CHECK: [[ADD:%[0-9]+]]:gpr(s32) = G_ADD [[COPY]], [[COPY]]
94     %0(s32) = COPY $w0
95     %1(s32) = G_ADD %0, %0
96 ...
98 ---
99 name:            test_add_v4s32
100 legalized:       true
101 registers:
102   - { id: 0, class: _ }
103   - { id: 1, class: _ }
104 body: |
105   bb.0:
106     liveins: $q0
107     ; CHECK-LABEL: name: test_add_v4s32
108     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
109     ; CHECK: [[ADD:%[0-9]+]]:fpr(<4 x s32>) = G_ADD [[COPY]], [[COPY]]
110     %0(<4 x s32>) = COPY $q0
111     %1(<4 x s32>) = G_ADD %0, %0
115 name:            test_sub_s32
116 legalized:       true
117 registers:
118   - { id: 0, class: _ }
119   - { id: 1, class: _ }
120 body: |
121   bb.0:
122     liveins: $w0
123     ; CHECK-LABEL: name: test_sub_s32
124     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
125     ; CHECK: [[SUB:%[0-9]+]]:gpr(s32) = G_SUB [[COPY]], [[COPY]]
126     %0(s32) = COPY $w0
127     %1(s32) = G_SUB %0, %0
131 name:            test_sub_v4s32
132 legalized:       true
133 registers:
134   - { id: 0, class: _ }
135   - { id: 1, class: _ }
136 body: |
137   bb.0:
138     liveins: $q0
139     ; CHECK-LABEL: name: test_sub_v4s32
140     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
141     ; CHECK: [[SUB:%[0-9]+]]:fpr(<4 x s32>) = G_SUB [[COPY]], [[COPY]]
142     %0(<4 x s32>) = COPY $q0
143     %1(<4 x s32>) = G_SUB %0, %0
147 name:            test_mul_s32
148 legalized:       true
149 registers:
150   - { id: 0, class: _ }
151   - { id: 1, class: _ }
152 body: |
153   bb.0:
154     liveins: $w0
155     ; CHECK-LABEL: name: test_mul_s32
156     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
157     ; CHECK: [[MUL:%[0-9]+]]:gpr(s32) = G_MUL [[COPY]], [[COPY]]
158     %0(s32) = COPY $w0
159     %1(s32) = G_MUL %0, %0
163 name:            test_mul_v4s32
164 legalized:       true
165 registers:
166   - { id: 0, class: _ }
167   - { id: 1, class: _ }
168 body: |
169   bb.0:
170     liveins: $q0
171     ; CHECK-LABEL: name: test_mul_v4s32
172     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
173     ; CHECK: [[MUL:%[0-9]+]]:fpr(<4 x s32>) = G_MUL [[COPY]], [[COPY]]
174     %0(<4 x s32>) = COPY $q0
175     %1(<4 x s32>) = G_MUL %0, %0
179 name:            test_and_s32
180 legalized:       true
181 registers:
182   - { id: 0, class: _ }
183   - { id: 1, class: _ }
184 body: |
185   bb.0:
186     liveins: $w0
187     ; CHECK-LABEL: name: test_and_s32
188     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
189     ; CHECK: [[AND:%[0-9]+]]:gpr(s32) = G_AND [[COPY]], [[COPY]]
190     %0(s32) = COPY $w0
191     %1(s32) = G_AND %0, %0
195 name:            test_and_v4s32
196 legalized:       true
197 registers:
198   - { id: 0, class: _ }
199   - { id: 1, class: _ }
200 body: |
201   bb.0:
202     liveins: $q0
203     ; CHECK-LABEL: name: test_and_v4s32
204     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
205     ; CHECK: [[AND:%[0-9]+]]:fpr(<4 x s32>) = G_AND [[COPY]], [[COPY]]
206     %0(<4 x s32>) = COPY $q0
207     %1(<4 x s32>) = G_AND %0, %0
211 name:            test_or_s32
212 legalized:       true
213 registers:
214   - { id: 0, class: _ }
215   - { id: 1, class: _ }
216 body: |
217   bb.0:
218     liveins: $w0
219     ; CHECK-LABEL: name: test_or_s32
220     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
221     ; CHECK: [[OR:%[0-9]+]]:gpr(s32) = G_OR [[COPY]], [[COPY]]
222     %0(s32) = COPY $w0
223     %1(s32) = G_OR %0, %0
227 name:            test_or_v4s32
228 legalized:       true
229 registers:
230   - { id: 0, class: _ }
231   - { id: 1, class: _ }
232 body: |
233   bb.0:
234     liveins: $q0
235     ; CHECK-LABEL: name: test_or_v4s32
236     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
237     ; CHECK: [[OR:%[0-9]+]]:fpr(<4 x s32>) = G_OR [[COPY]], [[COPY]]
238     %0(<4 x s32>) = COPY $q0
239     %1(<4 x s32>) = G_OR %0, %0
243 name:            test_xor_s32
244 legalized:       true
245 registers:
246   - { id: 0, class: _ }
247   - { id: 1, class: _ }
248 body: |
249   bb.0:
250     liveins: $w0
251     ; CHECK-LABEL: name: test_xor_s32
252     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
253     ; CHECK: [[XOR:%[0-9]+]]:gpr(s32) = G_XOR [[COPY]], [[COPY]]
254     %0(s32) = COPY $w0
255     %1(s32) = G_XOR %0, %0
259 name:            test_xor_v4s32
260 legalized:       true
261 registers:
262   - { id: 0, class: _ }
263   - { id: 1, class: _ }
264 body: |
265   bb.0:
266     liveins: $q0
267     ; CHECK-LABEL: name: test_xor_v4s32
268     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
269     ; CHECK: [[XOR:%[0-9]+]]:fpr(<4 x s32>) = G_XOR [[COPY]], [[COPY]]
270     %0(<4 x s32>) = COPY $q0
271     %1(<4 x s32>) = G_XOR %0, %0
275 name:            test_shl_s32
276 legalized:       true
277 registers:
278   - { id: 0, class: _ }
279   - { id: 1, class: _ }
280 body: |
281   bb.0:
282     liveins: $w0
283     ; CHECK-LABEL: name: test_shl_s32
284     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
285     ; CHECK: [[SHL:%[0-9]+]]:gpr(s32) = G_SHL [[COPY]], [[COPY]](s32)
286     %0(s32) = COPY $w0
287     %1(s32) = G_SHL %0, %0
291 name:            test_shl_v4s32
292 legalized:       true
293 registers:
294   - { id: 0, class: _ }
295   - { id: 1, class: _ }
296 body: |
297   bb.0:
298     liveins: $q0
299     ; CHECK-LABEL: name: test_shl_v4s32
300     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
301     ; CHECK: [[SHL:%[0-9]+]]:fpr(<4 x s32>) = G_SHL [[COPY]], [[COPY]](<4 x s32>)
302     %0(<4 x s32>) = COPY $q0
303     %1(<4 x s32>) = G_SHL %0, %0
307 name:            test_lshr_s32
308 legalized:       true
309 registers:
310   - { id: 0, class: _ }
311   - { id: 1, class: _ }
312 body: |
313   bb.0:
314     liveins: $w0
315     ; CHECK-LABEL: name: test_lshr_s32
316     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
317     ; CHECK: [[LSHR:%[0-9]+]]:gpr(s32) = G_LSHR [[COPY]], [[COPY]](s32)
318     %0(s32) = COPY $w0
319     %1(s32) = G_LSHR %0, %0
323 name:            test_ashr_s32
324 legalized:       true
325 registers:
326   - { id: 0, class: _ }
327   - { id: 1, class: _ }
328 body: |
329   bb.0:
330     liveins: $w0
331     ; CHECK-LABEL: name: test_ashr_s32
332     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
333     ; CHECK: [[ASHR:%[0-9]+]]:gpr(s32) = G_ASHR [[COPY]], [[COPY]](s32)
334     %0(s32) = COPY $w0
335     %1(s32) = G_ASHR %0, %0
339 name:            test_sdiv_s32
340 legalized:       true
341 registers:
342   - { id: 0, class: _ }
343   - { id: 1, class: _ }
344 body: |
345   bb.0:
346     liveins: $w0
347     ; CHECK-LABEL: name: test_sdiv_s32
348     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
349     ; CHECK: [[SDIV:%[0-9]+]]:gpr(s32) = G_SDIV [[COPY]], [[COPY]]
350     %0(s32) = COPY $w0
351     %1(s32) = G_SDIV %0, %0
355 name:            test_udiv_s32
356 legalized:       true
357 registers:
358   - { id: 0, class: _ }
359   - { id: 1, class: _ }
360 body: |
361   bb.0:
362     liveins: $w0
363     ; CHECK-LABEL: name: test_udiv_s32
364     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
365     ; CHECK: [[UDIV:%[0-9]+]]:gpr(s32) = G_UDIV [[COPY]], [[COPY]]
366     %0(s32) = COPY $w0
367     %1(s32) = G_UDIV %0, %0
371 name:            test_anyext_s64_s32
372 legalized:       true
373 registers:
374   - { id: 0, class: _ }
375   - { id: 1, class: _ }
376 body: |
377   bb.0:
378     liveins: $w0
379     ; CHECK-LABEL: name: test_anyext_s64_s32
380     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
381     ; CHECK: [[ANYEXT:%[0-9]+]]:gpr(s64) = G_ANYEXT [[COPY]](s32)
382     %0(s32) = COPY $w0
383     %1(s64) = G_ANYEXT %0
387 name:            test_sext_s64_s32
388 legalized:       true
389 registers:
390   - { id: 0, class: _ }
391   - { id: 1, class: _ }
392 body: |
393   bb.0:
394     liveins: $w0
395     ; CHECK-LABEL: name: test_sext_s64_s32
396     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
397     ; CHECK: [[SEXT:%[0-9]+]]:gpr(s64) = G_SEXT [[COPY]](s32)
398     %0(s32) = COPY $w0
399     %1(s64) = G_SEXT %0
403 name:            test_zext_s64_s32
404 legalized:       true
405 registers:
406   - { id: 0, class: _ }
407   - { id: 1, class: _ }
408 body: |
409   bb.0:
410     liveins: $w0
411     ; CHECK-LABEL: name: test_zext_s64_s32
412     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
413     ; CHECK: [[ZEXT:%[0-9]+]]:gpr(s64) = G_ZEXT [[COPY]](s32)
414     %0(s32) = COPY $w0
415     %1(s64) = G_ZEXT %0
419 name:            test_trunc_s32_s64
420 legalized:       true
421 registers:
422   - { id: 0, class: _ }
423   - { id: 1, class: _ }
424 body: |
425   bb.0:
426     liveins: $x0
427     ; CHECK-LABEL: name: test_trunc_s32_s64
428     ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0
429     ; CHECK: [[TRUNC:%[0-9]+]]:gpr(s32) = G_TRUNC [[COPY]](s64)
430     %0(s64) = COPY $x0
431     %1(s32) = G_TRUNC %0
435 name:            test_constant_s32
436 legalized:       true
437 registers:
438   - { id: 0, class: _ }
439 body: |
440   bb.0:
441     ; CHECK-LABEL: name: test_constant_s32
442     ; CHECK: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 123
443     %0(s32) = G_CONSTANT i32 123
447 name:            test_constant_p0
448 legalized:       true
449 registers:
450   - { id: 0, class: _ }
451 body: |
452   bb.0:
453     ; CHECK-LABEL: name: test_constant_p0
454     ; CHECK: [[C:%[0-9]+]]:gpr(p0) = G_CONSTANT i64 0
455     %0(p0) = G_CONSTANT i64 0
459 name:            test_icmp_s32
460 legalized:       true
461 registers:
462   - { id: 0, class: _ }
463   - { id: 1, class: _ }
464   - { id: 2, class: _ }
465 body: |
466   bb.0:
467     liveins: $w0
468     ; CHECK-LABEL: name: test_icmp_s32
469     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
470     ; CHECK: [[ICMP:%[0-9]+]]:gpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY]]
471     ; CHECK: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s32)
472     %0(s32) = COPY $w0
473     %1(s32) = G_ICMP intpred(ne), %0, %0
474     %2(s1) = G_TRUNC %1(s32)
478 name:            test_icmp_p0
479 legalized:       true
480 registers:
481   - { id: 0, class: _ }
482   - { id: 1, class: _ }
483   - { id: 2, class: _ }
484 body: |
485   bb.0:
486     liveins: $x0
487     ; CHECK-LABEL: name: test_icmp_p0
488     ; CHECK: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
489     ; CHECK: [[ICMP:%[0-9]+]]:gpr(s32) = G_ICMP intpred(ne), [[COPY]](p0), [[COPY]]
490     ; CHECK: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s32)
491     %0(p0) = COPY $x0
492     %1(s32) = G_ICMP intpred(ne), %0, %0
493     %2(s1) = G_TRUNC %1(s32)
497 name:            test_frame_index_p0
498 legalized:       true
499 registers:
500   - { id: 0, class: _ }
501 stack:
502   - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }
503 body: |
504   bb.0:
505     ; CHECK-LABEL: name: test_frame_index_p0
506     ; CHECK: [[FRAME_INDEX:%[0-9]+]]:gpr(p0) = G_FRAME_INDEX %stack.0.ptr0
507     %0(p0) = G_FRAME_INDEX %stack.0.ptr0
511 name:            test_ptrtoint_s64_p0
512 legalized:       true
513 registers:
514   - { id: 0, class: _ }
515   - { id: 1, class: _ }
516 body: |
517   bb.0:
518     liveins: $x0
519     ; CHECK-LABEL: name: test_ptrtoint_s64_p0
520     ; CHECK: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
521     ; CHECK: [[PTRTOINT:%[0-9]+]]:gpr(s64) = G_PTRTOINT [[COPY]](p0)
522     %0(p0) = COPY $x0
523     %1(s64) = G_PTRTOINT %0
527 name:            test_inttoptr_p0_s64
528 legalized:       true
529 registers:
530   - { id: 0, class: _ }
531   - { id: 1, class: _ }
532 body: |
533   bb.0:
534     liveins: $x0
535     ; CHECK-LABEL: name: test_inttoptr_p0_s64
536     ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0
537     ; CHECK: [[INTTOPTR:%[0-9]+]]:gpr(p0) = G_INTTOPTR [[COPY]](s64)
538     %0(s64) = COPY $x0
539     %1(p0) = G_INTTOPTR %0
543 name:            test_load_s32_p0
544 legalized:       true
545 registers:
546   - { id: 0, class: _ }
547   - { id: 1, class: _ }
548 body: |
549   bb.0:
550     liveins: $x0
551     ; CHECK-LABEL: name: test_load_s32_p0
552     ; CHECK: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
553     ; CHECK: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32))
554     %0(p0) = COPY $x0
555     %1(s32) = G_LOAD %0 :: (load (s32))
559 name:            test_store_s32_p0
560 legalized:       true
561 registers:
562   - { id: 0, class: _ }
563   - { id: 1, class: _ }
564 body: |
565   bb.0:
566     liveins: $x0, $w1
567     ; CHECK-LABEL: name: test_store_s32_p0
568     ; CHECK: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
569     ; CHECK: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $w1
570     ; CHECK: G_STORE [[COPY1]](s32), [[COPY]](p0) :: (store (s32))
571     %0(p0) = COPY $x0
572     %1(s32) = COPY $w1
573     G_STORE %1, %0 :: (store (s32))
577 name:            test_fadd_s32
578 legalized:       true
579 registers:
580   - { id: 0, class: _ }
581   - { id: 1, class: _ }
582 body: |
583   bb.0:
584     liveins: $s0
585     ; CHECK-LABEL: name: test_fadd_s32
586     ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
587     ; CHECK: [[FADD:%[0-9]+]]:fpr(s32) = G_FADD [[COPY]], [[COPY]]
588     %0(s32) = COPY $s0
589     %1(s32) = G_FADD %0, %0
593 name:            test_fsub_s32
594 legalized:       true
595 registers:
596   - { id: 0, class: _ }
597   - { id: 1, class: _ }
598 body: |
599   bb.0:
600     liveins: $s0
601     ; CHECK-LABEL: name: test_fsub_s32
602     ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
603     ; CHECK: [[FSUB:%[0-9]+]]:fpr(s32) = G_FSUB [[COPY]], [[COPY]]
604     %0(s32) = COPY $s0
605     %1(s32) = G_FSUB %0, %0
609 name:            test_fmul_s32
610 legalized:       true
611 registers:
612   - { id: 0, class: _ }
613   - { id: 1, class: _ }
614 body: |
615   bb.0:
616     liveins: $s0
617     ; CHECK-LABEL: name: test_fmul_s32
618     ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
619     ; CHECK: [[FMUL:%[0-9]+]]:fpr(s32) = G_FMUL [[COPY]], [[COPY]]
620     %0(s32) = COPY $s0
621     %1(s32) = G_FMUL %0, %0
625 name:            test_fdiv_s32
626 legalized:       true
627 registers:
628   - { id: 0, class: _ }
629   - { id: 1, class: _ }
630 body: |
631   bb.0:
632     liveins: $s0
633     ; CHECK-LABEL: name: test_fdiv_s32
634     ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
635     ; CHECK: [[FDIV:%[0-9]+]]:fpr(s32) = G_FDIV [[COPY]], [[COPY]]
636     %0(s32) = COPY $s0
637     %1(s32) = G_FDIV %0, %0
641 name:            test_fpext_s64_s32
642 legalized:       true
643 registers:
644   - { id: 0, class: _ }
645   - { id: 1, class: _ }
646 body: |
647   bb.0:
648     liveins: $s0
649     ; CHECK-LABEL: name: test_fpext_s64_s32
650     ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
651     ; CHECK: [[FPEXT:%[0-9]+]]:fpr(s64) = G_FPEXT [[COPY]](s32)
652     %0(s32) = COPY $s0
653     %1(s64) = G_FPEXT %0
657 name:            test_fptrunc_s32_s64
658 legalized:       true
659 registers:
660   - { id: 0, class: _ }
661   - { id: 1, class: _ }
662 body: |
663   bb.0:
664     liveins: $d0
665     ; CHECK-LABEL: name: test_fptrunc_s32_s64
666     ; CHECK: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0
667     ; CHECK: [[FPTRUNC:%[0-9]+]]:fpr(s32) = G_FPTRUNC [[COPY]](s64)
668     %0(s64) = COPY $d0
669     %1(s32) = G_FPTRUNC %0
673 name:            test_fconstant_s32
674 legalized:       true
675 registers:
676   - { id: 0, class: _ }
677 body: |
678   bb.0:
679     ; CHECK-LABEL: name: test_fconstant_s32
680     ; CHECK: [[C:%[0-9]+]]:fpr(s32) = G_FCONSTANT float 1.000000e+00
681     %0(s32) = G_FCONSTANT float 1.0
685 name:            test_fneg_s32
686 legalized:       true
687 body: |
688   bb.0:
689   liveins: $s0
690     ; CHECK-LABEL: name: test_fneg_s32
691     ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
692     ; CHECK: [[FNEG:%[0-9]+]]:fpr(s32) = G_FNEG [[COPY]]
693     %0:_(s32) = COPY $s0
694     %1:_(s32) = G_FNEG %0(s32)
698 name:            test_fcmp_s32
699 legalized:       true
700 registers:
701   - { id: 0, class: _ }
702   - { id: 1, class: _ }
703   - { id: 2, class: _ }
704 body: |
705   bb.0:
706     liveins: $s0
707     ; CHECK-LABEL: name: test_fcmp_s32
708     ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
709     ; CHECK: [[FCMP:%[0-9]+]]:gpr(s32) = G_FCMP floatpred(olt), [[COPY]](s32), [[COPY]]
710     ; CHECK: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[FCMP]](s32)
711     %0(s32) = COPY $s0
712     %1(s32) = G_FCMP floatpred(olt), %0, %0
713     %2(s1) = G_TRUNC %1(s32)
717 name:            test_sitofp_s64_s32
718 legalized:       true
719 registers:
720   - { id: 0, class: _ }
721   - { id: 1, class: _ }
722 body: |
723   bb.0:
724     liveins: $w0
725     ; CHECK-LABEL: name: test_sitofp_s64_s32
726     ; CHECK: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0
727     ; CHECK: [[SITOFP:%[0-9]+]]:fpr(s64) = G_SITOFP [[COPY]](s32)
728     %0(s32) = COPY $w0
729     %1(s64) = G_SITOFP %0
733 name:            test_sitofp_v4s32
734 legalized:       true
735 registers:
736   - { id: 0, class: _ }
737   - { id: 1, class: _ }
738 body: |
739   bb.0:
740     liveins: $q0
741     ; CHECK-LABEL: name: test_sitofp_v4s32
742     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
743     ; CHECK: [[SITOFP:%[0-9]+]]:fpr(<4 x s32>) = G_SITOFP [[COPY]](<4 x s32>)
744     %0(<4 x s32>) = COPY $q0
745     %1(<4 x s32>) = G_SITOFP %0
749 name:            test_uitofp_s32_s64
750 legalized:       true
751 registers:
752   - { id: 0, class: _ }
753   - { id: 1, class: _ }
754 body: |
755   bb.0:
756     liveins: $x0
757     ; CHECK-LABEL: name: test_uitofp_s32_s64
758     ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0
759     ; CHECK: [[UITOFP:%[0-9]+]]:fpr(s32) = G_UITOFP [[COPY]](s64)
760     %0(s64) = COPY $x0
761     %1(s32) = G_UITOFP %0
765 name:            test_uitofp_v4s32
766 legalized:       true
767 registers:
768   - { id: 0, class: _ }
769   - { id: 1, class: _ }
770 body: |
771   bb.0:
772     liveins: $q0
773     ; CHECK-LABEL: name: test_uitofp_v4s32
774     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
775     ; CHECK: [[UITOFP:%[0-9]+]]:fpr(<4 x s32>) = G_UITOFP [[COPY]](<4 x s32>)
776     %0(<4 x s32>) = COPY $q0
777     %1(<4 x s32>) = G_UITOFP %0
781 name:            test_fptosi_s64_s32
782 legalized:       true
783 registers:
784   - { id: 0, class: _ }
785   - { id: 1, class: _ }
786 body: |
787   bb.0:
788     liveins: $s0
789     ; CHECK-LABEL: name: test_fptosi_s64_s32
790     ; CHECK: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0
791     ; CHECK: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[COPY]](s32)
792     %0(s32) = COPY $s0
793     %1(s64) = G_FPTOSI %0
797 name:            test_fptosi_v4s32
798 legalized:       true
799 registers:
800   - { id: 0, class: _ }
801   - { id: 1, class: _ }
802 body: |
803   bb.0:
804     liveins: $q0
805     ; CHECK-LABEL: name: test_fptosi_v4s32
806     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
807     ; CHECK: [[FPTOSI:%[0-9]+]]:fpr(<4 x s32>) = G_FPTOSI [[COPY]](<4 x s32>)
808     %0(<4 x s32>) = COPY $q0
809     %1(<4 x s32>) = G_FPTOSI %0
813 name:            test_fptoui_s32_s64
814 legalized:       true
815 registers:
816   - { id: 0, class: _ }
817   - { id: 1, class: _ }
818 body: |
819   bb.0:
820     liveins: $d0
821     ; CHECK-LABEL: name: test_fptoui_s32_s64
822     ; CHECK: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0
823     ; CHECK: [[FPTOUI:%[0-9]+]]:gpr(s32) = G_FPTOUI [[COPY]](s64)
824     %0(s64) = COPY $d0
825     %1(s32) = G_FPTOUI %0
829 name:            test_fptoui_v4s32
830 legalized:       true
831 registers:
832   - { id: 0, class: _ }
833   - { id: 1, class: _ }
834 body: |
835   bb.0:
836     liveins: $q0
837     ; CHECK-LABEL: name: test_fptoui_v4s32
838     ; CHECK: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0
839     ; CHECK: [[FPTOUI:%[0-9]+]]:fpr(<4 x s32>) = G_FPTOUI [[COPY]](<4 x s32>)
840     %0(<4 x s32>) = COPY $q0
841     %1(<4 x s32>) = G_FPTOUI %0
845 name:            test_gphi_ptr
846 legalized:       true
847 tracksRegLiveness: true
848 registers:
849   - { id: 0, class: _, preferred-register: '' }
850   - { id: 1, class: _, preferred-register: '' }
851   - { id: 2, class: _, preferred-register: '' }
852   - { id: 3, class: _, preferred-register: '' }
853   - { id: 4, class: _, preferred-register: '' }
854   - { id: 5, class: _, preferred-register: '' }
855 body:             |
856   ; CHECK-LABEL: name: test_gphi_ptr
857   ; CHECK: bb.0:
858   ; CHECK:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
859   ; CHECK:   liveins: $w2, $x0, $x1
860   ; CHECK:   [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0
861   ; CHECK:   [[COPY1:%[0-9]+]]:gpr(p0) = COPY $x1
862   ; CHECK:   [[COPY2:%[0-9]+]]:gpr(s32) = COPY $w2
863   ; CHECK:   G_BRCOND [[COPY2]](s32), %bb.1
864   ; CHECK:   G_BR %bb.2
865   ; CHECK: bb.1:
866   ; CHECK:   successors: %bb.2(0x80000000)
867   ; CHECK: bb.2:
868   ; CHECK:   [[PHI:%[0-9]+]]:gpr(p0) = G_PHI [[COPY]](p0), %bb.0, [[COPY1]](p0), %bb.1
869   ; CHECK:   $x0 = COPY [[PHI]](p0)
870   ; CHECK:   RET_ReallyLR implicit $x0
871   bb.0:
872     successors: %bb.1, %bb.2
873     liveins: $w2, $x0, $x1
875     %0(p0) = COPY $x0
876     %1(p0) = COPY $x1
877     %4(s32) = COPY $w2
878     G_BRCOND %4, %bb.1
879     G_BR %bb.2
881   bb.1:
882     successors: %bb.2
885   bb.2:
886     %3(p0) = G_PHI %0(p0), %bb.0, %1(p0), %bb.1
887     $x0 = COPY %3(p0)
888     RET_ReallyLR implicit $x0
893 name:            test_restricted_tail_call
894 legalized:       true
895 tracksRegLiveness: true
896 body: |
897   bb.0:
898     liveins: $x16, $x17
899     ; CHECK-LABEL: name: test_restricted_tail_call
900     ; CHECK: liveins: $x16, $x17
901     ; CHECK: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x16
902     ; CHECK: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $x17
903     ; CHECK: RET_ReallyLR
904     %0:_(s64) = COPY $x16
905     %1:_(s64) = COPY $x17
906     RET_ReallyLR