1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=greedy -o - -verify-machineinstrs %s | FileCheck -check-prefix=RA %s
3# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=greedy,virtregrewriter,post-RA-sched -o - -verify-machineinstrs %s | FileCheck -check-prefix=VR %s
4
5---
6name:            splitkit_copy_bundle
7tracksRegLiveness: true
8machineFunctionInfo:
9  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
10  stackPtrOffsetReg: '$sgpr32'
11body:             |
12  ; RA-LABEL: name: splitkit_copy_bundle
13  ; RA: bb.0:
14  ; RA:   successors: %bb.1(0x80000000)
15  ; RA:   [[DEF:%[0-9]+]]:sreg_64 = IMPLICIT_DEF
16  ; RA:   [[DEF1:%[0-9]+]]:sreg_64 = IMPLICIT_DEF
17  ; RA:   undef %5.sub1:sgpr_1024 = S_MOV_B32 -1
18  ; RA:   %5.sub0:sgpr_1024 = S_MOV_B32 -1
19  ; RA:   undef %4.sub0_sub1:sgpr_1024 = COPY %5.sub0_sub1
20  ; RA:   undef %3.sub0:sgpr_1024 = S_MOV_B32 0
21  ; RA: bb.1:
22  ; RA:   successors: %bb.2(0x80000000)
23  ; RA:   undef %6.sub0_sub1:sgpr_1024 = COPY %4.sub0_sub1
24  ; RA:   %6.sub2:sgpr_1024 = COPY %6.sub0
25  ; RA:   %6.sub3:sgpr_1024 = COPY %6.sub1
26  ; RA:   %6.sub4:sgpr_1024 = COPY %6.sub0
27  ; RA:   %6.sub5:sgpr_1024 = COPY %6.sub1
28  ; RA:   %6.sub6:sgpr_1024 = COPY %6.sub0
29  ; RA:   %6.sub7:sgpr_1024 = COPY %6.sub1
30  ; RA:   %6.sub8:sgpr_1024 = COPY %6.sub0
31  ; RA:   %6.sub9:sgpr_1024 = COPY %6.sub1
32  ; RA:   %6.sub10:sgpr_1024 = COPY %6.sub0
33  ; RA:   %6.sub11:sgpr_1024 = COPY %6.sub1
34  ; RA:   %6.sub12:sgpr_1024 = COPY %6.sub0
35  ; RA:   %6.sub13:sgpr_1024 = COPY %6.sub1
36  ; RA:   %6.sub14:sgpr_1024 = COPY %6.sub0
37  ; RA:   %6.sub15:sgpr_1024 = COPY %6.sub1
38  ; RA:   %6.sub16:sgpr_1024 = COPY %6.sub0
39  ; RA:   %6.sub17:sgpr_1024 = COPY %6.sub1
40  ; RA:   %6.sub18:sgpr_1024 = COPY %6.sub0
41  ; RA:   %6.sub19:sgpr_1024 = COPY %6.sub1
42  ; RA:   %6.sub20:sgpr_1024 = COPY %6.sub0
43  ; RA:   %6.sub21:sgpr_1024 = COPY %6.sub1
44  ; RA:   %6.sub22:sgpr_1024 = COPY %6.sub0
45  ; RA:   %6.sub23:sgpr_1024 = COPY %6.sub1
46  ; RA:   %6.sub24:sgpr_1024 = COPY %6.sub0
47  ; RA:   %6.sub25:sgpr_1024 = COPY %6.sub1
48  ; RA:   %6.sub26:sgpr_1024 = COPY %6.sub0
49  ; RA:   %6.sub27:sgpr_1024 = COPY %6.sub1
50  ; RA:   %6.sub28:sgpr_1024 = COPY %6.sub0
51  ; RA:   %6.sub29:sgpr_1024 = COPY %6.sub1
52  ; RA:   undef %4.sub0_sub1:sgpr_1024 = COPY %6.sub0_sub1
53  ; RA:   %3.sub1:sgpr_1024 = COPY %3.sub0
54  ; RA:   %3.sub2:sgpr_1024 = COPY %3.sub0
55  ; RA:   %3.sub3:sgpr_1024 = COPY %3.sub0
56  ; RA:   %3.sub4:sgpr_1024 = COPY %3.sub0
57  ; RA:   %3.sub5:sgpr_1024 = COPY %3.sub0
58  ; RA:   %3.sub6:sgpr_1024 = COPY %3.sub0
59  ; RA:   %3.sub7:sgpr_1024 = COPY %3.sub0
60  ; RA:   %3.sub8:sgpr_1024 = COPY %3.sub0
61  ; RA:   %3.sub9:sgpr_1024 = COPY %3.sub0
62  ; RA:   %3.sub10:sgpr_1024 = COPY %3.sub0
63  ; RA:   %3.sub11:sgpr_1024 = COPY %3.sub0
64  ; RA:   %3.sub12:sgpr_1024 = COPY %3.sub0
65  ; RA:   %3.sub13:sgpr_1024 = COPY %3.sub0
66  ; RA:   %3.sub14:sgpr_1024 = COPY %3.sub0
67  ; RA:   %3.sub15:sgpr_1024 = COPY %3.sub0
68  ; RA:   %3.sub16:sgpr_1024 = COPY %3.sub0
69  ; RA:   %3.sub17:sgpr_1024 = COPY %3.sub0
70  ; RA:   %3.sub18:sgpr_1024 = COPY %3.sub0
71  ; RA:   %3.sub19:sgpr_1024 = COPY %3.sub0
72  ; RA:   %3.sub20:sgpr_1024 = COPY %3.sub0
73  ; RA:   %3.sub21:sgpr_1024 = COPY %3.sub0
74  ; RA:   %3.sub22:sgpr_1024 = COPY %3.sub0
75  ; RA:   %3.sub23:sgpr_1024 = COPY %3.sub0
76  ; RA:   %3.sub24:sgpr_1024 = COPY %3.sub0
77  ; RA:   %3.sub25:sgpr_1024 = COPY %3.sub0
78  ; RA:   %3.sub26:sgpr_1024 = COPY %3.sub0
79  ; RA:   %3.sub27:sgpr_1024 = COPY %3.sub0
80  ; RA:   %3.sub28:sgpr_1024 = COPY %3.sub0
81  ; RA:   %3.sub29:sgpr_1024 = COPY %3.sub0
82  ; RA:   %3.sub30:sgpr_1024 = COPY %3.sub0
83  ; RA:   %3.sub31:sgpr_1024 = COPY %3.sub0
84  ; RA: bb.2:
85  ; RA:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
86  ; RA:   S_NOP 0, csr_amdgpu_highregs, implicit [[DEF]], implicit [[DEF1]]
87  ; RA:   S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc
88  ; RA:   S_BRANCH %bb.2
89  ; VR-LABEL: name: splitkit_copy_bundle
90  ; VR: bb.0:
91  ; VR:   successors: %bb.1(0x80000000)
92  ; VR:   renamable $sgpr69 = S_MOV_B32 -1
93  ; VR:   renamable $sgpr68 = S_MOV_B32 -1
94  ; VR:   renamable $sgpr36 = S_MOV_B32 0
95  ; VR:   renamable $sgpr34_sgpr35 = IMPLICIT_DEF
96  ; VR:   renamable $sgpr70_sgpr71 = IMPLICIT_DEF
97  ; VR: bb.1:
98  ; VR:   successors: %bb.2(0x80000000)
99  ; VR:   liveins: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67:0x0000000000000003, $sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75_sgpr76_sgpr77_sgpr78_sgpr79_sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95_sgpr96_sgpr97_sgpr98_sgpr99:0x000000000000000F, $sgpr34_sgpr35, $sgpr70_sgpr71
100  ; VR:   renamable $sgpr40_sgpr41 = COPY killed renamable $sgpr68_sgpr69
101  ; VR:   renamable $sgpr42 = COPY renamable $sgpr40
102  ; VR:   renamable $sgpr43 = COPY renamable $sgpr41
103  ; VR:   renamable $sgpr44 = COPY renamable $sgpr40
104  ; VR:   renamable $sgpr45 = COPY renamable $sgpr41
105  ; VR:   renamable $sgpr46 = COPY renamable $sgpr40
106  ; VR:   renamable $sgpr47 = COPY renamable $sgpr41
107  ; VR:   renamable $sgpr48 = COPY renamable $sgpr40
108  ; VR:   renamable $sgpr49 = COPY renamable $sgpr41
109  ; VR:   renamable $sgpr50 = COPY renamable $sgpr40
110  ; VR:   renamable $sgpr51 = COPY renamable $sgpr41
111  ; VR:   renamable $sgpr52 = COPY renamable $sgpr40
112  ; VR:   renamable $sgpr53 = COPY renamable $sgpr41
113  ; VR:   renamable $sgpr54 = COPY renamable $sgpr40
114  ; VR:   renamable $sgpr55 = COPY renamable $sgpr41
115  ; VR:   renamable $sgpr56 = COPY renamable $sgpr40
116  ; VR:   renamable $sgpr57 = COPY renamable $sgpr41
117  ; VR:   renamable $sgpr58 = COPY renamable $sgpr40
118  ; VR:   renamable $sgpr59 = COPY renamable $sgpr41
119  ; VR:   renamable $sgpr60 = COPY renamable $sgpr40
120  ; VR:   renamable $sgpr61 = COPY renamable $sgpr41
121  ; VR:   renamable $sgpr62 = COPY renamable $sgpr40
122  ; VR:   renamable $sgpr63 = COPY renamable $sgpr41
123  ; VR:   renamable $sgpr64 = COPY renamable $sgpr40
124  ; VR:   renamable $sgpr65 = COPY renamable $sgpr41
125  ; VR:   renamable $sgpr66 = COPY renamable $sgpr40
126  ; VR:   renamable $sgpr67 = COPY renamable $sgpr41
127  ; VR:   renamable $sgpr68 = COPY renamable $sgpr40
128  ; VR:   renamable $sgpr69 = COPY renamable $sgpr41
129  ; VR:   renamable $sgpr68_sgpr69 = COPY killed renamable $sgpr40_sgpr41
130  ; VR:   renamable $sgpr37 = COPY renamable $sgpr36
131  ; VR:   renamable $sgpr38 = COPY renamable $sgpr36
132  ; VR:   renamable $sgpr39 = COPY renamable $sgpr36
133  ; VR:   renamable $sgpr40 = COPY renamable $sgpr36
134  ; VR:   renamable $sgpr41 = COPY renamable $sgpr36
135  ; VR:   renamable $sgpr42 = COPY renamable $sgpr36
136  ; VR:   renamable $sgpr43 = COPY renamable $sgpr36
137  ; VR:   renamable $sgpr44 = COPY renamable $sgpr36
138  ; VR:   renamable $sgpr45 = COPY renamable $sgpr36
139  ; VR:   renamable $sgpr46 = COPY renamable $sgpr36
140  ; VR:   renamable $sgpr47 = COPY renamable $sgpr36
141  ; VR:   renamable $sgpr48 = COPY renamable $sgpr36
142  ; VR:   renamable $sgpr49 = COPY renamable $sgpr36
143  ; VR:   renamable $sgpr50 = COPY renamable $sgpr36
144  ; VR:   renamable $sgpr51 = COPY renamable $sgpr36
145  ; VR:   renamable $sgpr52 = COPY renamable $sgpr36
146  ; VR:   renamable $sgpr53 = COPY renamable $sgpr36
147  ; VR:   renamable $sgpr54 = COPY renamable $sgpr36
148  ; VR:   renamable $sgpr55 = COPY renamable $sgpr36
149  ; VR:   renamable $sgpr56 = COPY renamable $sgpr36
150  ; VR:   renamable $sgpr57 = COPY renamable $sgpr36
151  ; VR:   renamable $sgpr58 = COPY renamable $sgpr36
152  ; VR:   renamable $sgpr59 = COPY renamable $sgpr36
153  ; VR:   renamable $sgpr60 = COPY renamable $sgpr36
154  ; VR:   renamable $sgpr61 = COPY renamable $sgpr36
155  ; VR:   renamable $sgpr62 = COPY renamable $sgpr36
156  ; VR:   renamable $sgpr63 = COPY renamable $sgpr36
157  ; VR:   renamable $sgpr64 = COPY renamable $sgpr36
158  ; VR:   renamable $sgpr65 = COPY renamable $sgpr36
159  ; VR:   renamable $sgpr66 = COPY renamable $sgpr36
160  ; VR:   renamable $sgpr67 = COPY renamable $sgpr36
161  ; VR: bb.2:
162  ; VR:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
163  ; VR:   liveins: $sgpr36_sgpr37_sgpr38_sgpr39_sgpr40_sgpr41_sgpr42_sgpr43_sgpr44_sgpr45_sgpr46_sgpr47_sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55_sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr67:0x0000000000000003, $sgpr68_sgpr69_sgpr70_sgpr71_sgpr72_sgpr73_sgpr74_sgpr75_sgpr76_sgpr77_sgpr78_sgpr79_sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95_sgpr96_sgpr97_sgpr98_sgpr99:0x000000000000000F, $sgpr34_sgpr35, $sgpr70_sgpr71
164  ; VR:   S_NOP 0, csr_amdgpu_highregs, implicit renamable $sgpr34_sgpr35, implicit renamable $sgpr70_sgpr71
165  ; VR:   S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc
166  ; VR:   S_BRANCH %bb.2
167  bb.0:
168    %0:sreg_64 = IMPLICIT_DEF
169    %1:sreg_64 = IMPLICIT_DEF
170    undef %2.sub1:sgpr_1024 = S_MOV_B32 -1
171    %2.sub0:sgpr_1024 = S_MOV_B32 -1
172    undef %3.sub0:sgpr_1024 = S_MOV_B32 0
173
174  bb.1:
175    %2.sub2:sgpr_1024 = COPY %2.sub0
176    %2.sub3:sgpr_1024 = COPY %2.sub1
177    %2.sub4:sgpr_1024 = COPY %2.sub0
178    %2.sub5:sgpr_1024 = COPY %2.sub1
179    %2.sub6:sgpr_1024 = COPY %2.sub0
180    %2.sub7:sgpr_1024 = COPY %2.sub1
181    %2.sub8:sgpr_1024 = COPY %2.sub0
182    %2.sub9:sgpr_1024 = COPY %2.sub1
183    %2.sub10:sgpr_1024 = COPY %2.sub0
184    %2.sub11:sgpr_1024 = COPY %2.sub1
185    %2.sub12:sgpr_1024 = COPY %2.sub0
186    %2.sub13:sgpr_1024 = COPY %2.sub1
187    %2.sub14:sgpr_1024 = COPY %2.sub0
188    %2.sub15:sgpr_1024 = COPY %2.sub1
189    %2.sub16:sgpr_1024 = COPY %2.sub0
190    %2.sub17:sgpr_1024 = COPY %2.sub1
191    %2.sub18:sgpr_1024 = COPY %2.sub0
192    %2.sub19:sgpr_1024 = COPY %2.sub1
193    %2.sub20:sgpr_1024 = COPY %2.sub0
194    %2.sub21:sgpr_1024 = COPY %2.sub1
195    %2.sub22:sgpr_1024 = COPY %2.sub0
196    %2.sub23:sgpr_1024 = COPY %2.sub1
197    %2.sub24:sgpr_1024 = COPY %2.sub0
198    %2.sub25:sgpr_1024 = COPY %2.sub1
199    %2.sub26:sgpr_1024 = COPY %2.sub0
200    %2.sub27:sgpr_1024 = COPY %2.sub1
201    %2.sub28:sgpr_1024 = COPY %2.sub0
202    %2.sub29:sgpr_1024 = COPY %2.sub1
203    %3.sub1:sgpr_1024 = COPY %3.sub0
204    %3.sub2:sgpr_1024 = COPY %3.sub0
205    %3.sub3:sgpr_1024 = COPY %3.sub0
206    %3.sub4:sgpr_1024 = COPY %3.sub0
207    %3.sub5:sgpr_1024 = COPY %3.sub0
208    %3.sub6:sgpr_1024 = COPY %3.sub0
209    %3.sub7:sgpr_1024 = COPY %3.sub0
210    %3.sub8:sgpr_1024 = COPY %3.sub0
211    %3.sub9:sgpr_1024 = COPY %3.sub0
212    %3.sub10:sgpr_1024 = COPY %3.sub0
213    %3.sub11:sgpr_1024 = COPY %3.sub0
214    %3.sub12:sgpr_1024 = COPY %3.sub0
215    %3.sub13:sgpr_1024 = COPY %3.sub0
216    %3.sub14:sgpr_1024 = COPY %3.sub0
217    %3.sub15:sgpr_1024 = COPY %3.sub0
218    %3.sub16:sgpr_1024 = COPY %3.sub0
219    %3.sub17:sgpr_1024 = COPY %3.sub0
220    %3.sub18:sgpr_1024 = COPY %3.sub0
221    %3.sub19:sgpr_1024 = COPY %3.sub0
222    %3.sub20:sgpr_1024 = COPY %3.sub0
223    %3.sub21:sgpr_1024 = COPY %3.sub0
224    %3.sub22:sgpr_1024 = COPY %3.sub0
225    %3.sub23:sgpr_1024 = COPY %3.sub0
226    %3.sub24:sgpr_1024 = COPY %3.sub0
227    %3.sub25:sgpr_1024 = COPY %3.sub0
228    %3.sub26:sgpr_1024 = COPY %3.sub0
229    %3.sub27:sgpr_1024 = COPY %3.sub0
230    %3.sub28:sgpr_1024 = COPY %3.sub0
231    %3.sub29:sgpr_1024 = COPY %3.sub0
232    %3.sub30:sgpr_1024 = COPY %3.sub0
233    %3.sub31:sgpr_1024 = COPY %3.sub0
234
235  bb.2:
236    S_NOP 0, implicit %0, implicit %1, csr_amdgpu_highregs
237    S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc
238    S_BRANCH %bb.2
239
240...
241