1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=MIPS32
3--- |
4
5  declare void @f_i32(i32)
6  define void @g_i32() {entry: ret void}
7
8  declare void @f_i64(i64)
9  define void @g_i64() {entry: ret void}
10
11  declare void @f_float(float)
12  define void @g_float() {entry: ret void}
13
14  declare void @f_double(double)
15  define void @g_double() {entry: ret void}
16
17...
18---
19name:            g_i32
20alignment:       2
21legalized:       true
22tracksRegLiveness: true
23body:             |
24  bb.1.entry:
25    ; MIPS32-LABEL: name: g_i32
26    ; MIPS32: [[DEF:%[0-9]+]]:gprb(s32) = G_IMPLICIT_DEF
27    ; MIPS32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp
28    ; MIPS32: $a0 = COPY [[DEF]](s32)
29    ; MIPS32: JAL @f_i32, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0
30    ; MIPS32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp
31    ; MIPS32: RetRA
32    %0:_(s32) = G_IMPLICIT_DEF
33    ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp
34    $a0 = COPY %0(s32)
35    JAL @f_i32, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0
36    ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp
37    RetRA
38
39...
40---
41name:            g_i64
42alignment:       2
43legalized:       true
44tracksRegLiveness: true
45body:             |
46  bb.1.entry:
47    ; MIPS32-LABEL: name: g_i64
48    ; MIPS32: [[DEF:%[0-9]+]]:gprb(s32) = G_IMPLICIT_DEF
49    ; MIPS32: [[DEF1:%[0-9]+]]:gprb(s32) = G_IMPLICIT_DEF
50    ; MIPS32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp
51    ; MIPS32: $a0 = COPY [[DEF]](s32)
52    ; MIPS32: $a1 = COPY [[DEF1]](s32)
53    ; MIPS32: JAL @f_i64, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1
54    ; MIPS32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp
55    ; MIPS32: RetRA
56    %0:_(s64) = G_IMPLICIT_DEF
57    ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp
58    %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0(s64)
59    $a0 = COPY %1(s32)
60    $a1 = COPY %2(s32)
61    JAL @f_i64, csr_o32, implicit-def $ra, implicit-def $sp, implicit $a0, implicit $a1
62    ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp
63    RetRA
64
65...
66---
67name:            g_float
68alignment:       2
69legalized:       true
70tracksRegLiveness: true
71body:             |
72  bb.1.entry:
73    ; MIPS32-LABEL: name: g_float
74    ; MIPS32: [[DEF:%[0-9]+]]:fprb(s32) = G_IMPLICIT_DEF
75    ; MIPS32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp
76    ; MIPS32: $f12 = COPY [[DEF]](s32)
77    ; MIPS32: JAL @f_float, csr_o32, implicit-def $ra, implicit-def $sp, implicit $f12
78    ; MIPS32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp
79    ; MIPS32: RetRA
80    %0:_(s32) = G_IMPLICIT_DEF
81    ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp
82    $f12 = COPY %0(s32)
83    JAL @f_float, csr_o32, implicit-def $ra, implicit-def $sp, implicit $f12
84    ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp
85    RetRA
86
87...
88---
89name:            g_double
90alignment:       2
91legalized:       true
92tracksRegLiveness: true
93registers:
94body:             |
95  bb.1.entry:
96    ; MIPS32-LABEL: name: g_double
97    ; MIPS32: [[DEF:%[0-9]+]]:fprb(s64) = G_IMPLICIT_DEF
98    ; MIPS32: ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp
99    ; MIPS32: $d6 = COPY [[DEF]](s64)
100    ; MIPS32: JAL @f_double, csr_o32, implicit-def $ra, implicit-def $sp, implicit $d6
101    ; MIPS32: ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp
102    ; MIPS32: RetRA
103    %0:_(s64) = G_IMPLICIT_DEF
104    ADJCALLSTACKDOWN 16, 0, implicit-def $sp, implicit $sp
105    $d6 = COPY %0(s64)
106    JAL @f_double, csr_o32, implicit-def $ra, implicit-def $sp, implicit $d6
107    ADJCALLSTACKUP 16, 0, implicit-def $sp, implicit $sp
108    RetRA
109
110...
111