1# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=greedy -o - -verify-machineinstrs %s | FileCheck -check-prefixes=MIR,RA %s
2# RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=greedy,virtregrewriter,post-RA-sched -o - -verify-machineinstrs %s | FileCheck -check-prefixes=MIR,VR %s
3# RUN: llc -march=amdgcn -mcpu=gfx900 -start-before=greedy -o - -verify-machineinstrs %s | FileCheck -check-prefix=ASM %s
4
5---
6# MIR-LABEL: name: splitkit_copy_bundle
7
8# RA:      undef %4.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15:sgpr_1024 = COPY %5.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15 {
9# RA-NEXT:       internal %4.sub12_sub13_sub14_sub15_sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27:sgpr_1024 = COPY %5.sub12_sub13_sub14_sub15_sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27
10# RA-NEXT:       internal %4.sub28_sub29:sgpr_1024 = COPY %5.sub28_sub29
11# RA-NEXT: }
12
13# RA:      undef %6.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15:sgpr_1024 = COPY %4.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15 {
14# RA-NEXT:       internal %6.sub12_sub13_sub14_sub15_sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27:sgpr_1024 = COPY %4.sub12_sub13_sub14_sub15_sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27
15# RA-NEXT:       internal %6.sub28_sub29:sgpr_1024 = COPY %4.sub28_sub29
16# RA-NEXT: }
17
18
19# RA:      undef %4.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15:sgpr_1024 = COPY %6.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15 {
20# RA-NEXT:       internal %4.sub12_sub13_sub14_sub15_sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27:sgpr_1024 = COPY %6.sub12_sub13_sub14_sub15_sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27
21# RA-NEXT:       internal %4.sub28_sub29:sgpr_1024 = COPY %6.sub28_sub29
22# RA-NEXT: }
23
24
25# VR:         renamable $sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95 = KILL undef renamable $sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95
26# VR-NEXT:    renamable $sgpr96_sgpr97 = KILL undef renamable $sgpr96_sgpr97
27
28# ASM-LABEL: {{^}}splitkit_copy_bundle:
29# ASM:      ; implicit-def: $sgpr34_sgpr35
30# ASM-NEXT: ; implicit-def: $sgpr98_sgpr99
31# ASM-NEXT: ; kill: def $sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95 killed $sgpr80_sgpr81_sgpr82_sgpr83_sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr95
32# ASM-NEXT: ; kill: def $sgpr96_sgpr97 killed $sgpr96_sgpr97
33
34name:            splitkit_copy_bundle
35tracksRegLiveness: true
36machineFunctionInfo:
37  scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
38  stackPtrOffsetReg: '$sgpr32'
39body:             |
40  bb.0:
41    %0:sreg_64 = IMPLICIT_DEF
42    %1:sreg_64 = IMPLICIT_DEF
43    undef %2.sub1:sgpr_1024 = S_MOV_B32 -1
44    %2.sub0:sgpr_1024 = S_MOV_B32 -1
45    undef %3.sub0:sgpr_1024 = S_MOV_B32 0
46
47  bb.1:
48    %2.sub2:sgpr_1024 = COPY %2.sub0
49    %2.sub3:sgpr_1024 = COPY %2.sub1
50    %2.sub4:sgpr_1024 = COPY %2.sub0
51    %2.sub5:sgpr_1024 = COPY %2.sub1
52    %2.sub6:sgpr_1024 = COPY %2.sub0
53    %2.sub7:sgpr_1024 = COPY %2.sub1
54    %2.sub8:sgpr_1024 = COPY %2.sub0
55    %2.sub9:sgpr_1024 = COPY %2.sub1
56    %2.sub10:sgpr_1024 = COPY %2.sub0
57    %2.sub11:sgpr_1024 = COPY %2.sub1
58    %2.sub12:sgpr_1024 = COPY %2.sub0
59    %2.sub13:sgpr_1024 = COPY %2.sub1
60    %2.sub14:sgpr_1024 = COPY %2.sub0
61    %2.sub15:sgpr_1024 = COPY %2.sub1
62    %2.sub16:sgpr_1024 = COPY %2.sub0
63    %2.sub17:sgpr_1024 = COPY %2.sub1
64    %2.sub18:sgpr_1024 = COPY %2.sub0
65    %2.sub19:sgpr_1024 = COPY %2.sub1
66    %2.sub20:sgpr_1024 = COPY %2.sub0
67    %2.sub21:sgpr_1024 = COPY %2.sub1
68    %2.sub22:sgpr_1024 = COPY %2.sub0
69    %2.sub23:sgpr_1024 = COPY %2.sub1
70    %2.sub24:sgpr_1024 = COPY %2.sub0
71    %2.sub25:sgpr_1024 = COPY %2.sub1
72    %2.sub26:sgpr_1024 = COPY %2.sub0
73    %2.sub27:sgpr_1024 = COPY %2.sub1
74    %2.sub28:sgpr_1024 = COPY %2.sub0
75    %2.sub29:sgpr_1024 = COPY %2.sub1
76    %3.sub1:sgpr_1024 = COPY %3.sub0
77    %3.sub2:sgpr_1024 = COPY %3.sub0
78    %3.sub3:sgpr_1024 = COPY %3.sub0
79    %3.sub4:sgpr_1024 = COPY %3.sub0
80    %3.sub5:sgpr_1024 = COPY %3.sub0
81    %3.sub6:sgpr_1024 = COPY %3.sub0
82    %3.sub7:sgpr_1024 = COPY %3.sub0
83    %3.sub8:sgpr_1024 = COPY %3.sub0
84    %3.sub9:sgpr_1024 = COPY %3.sub0
85    %3.sub10:sgpr_1024 = COPY %3.sub0
86    %3.sub11:sgpr_1024 = COPY %3.sub0
87    %3.sub12:sgpr_1024 = COPY %3.sub0
88    %3.sub13:sgpr_1024 = COPY %3.sub0
89    %3.sub14:sgpr_1024 = COPY %3.sub0
90    %3.sub15:sgpr_1024 = COPY %3.sub0
91    %3.sub16:sgpr_1024 = COPY %3.sub0
92    %3.sub17:sgpr_1024 = COPY %3.sub0
93    %3.sub18:sgpr_1024 = COPY %3.sub0
94    %3.sub19:sgpr_1024 = COPY %3.sub0
95    %3.sub20:sgpr_1024 = COPY %3.sub0
96    %3.sub21:sgpr_1024 = COPY %3.sub0
97    %3.sub22:sgpr_1024 = COPY %3.sub0
98    %3.sub23:sgpr_1024 = COPY %3.sub0
99    %3.sub24:sgpr_1024 = COPY %3.sub0
100    %3.sub25:sgpr_1024 = COPY %3.sub0
101    %3.sub26:sgpr_1024 = COPY %3.sub0
102    %3.sub27:sgpr_1024 = COPY %3.sub0
103    %3.sub28:sgpr_1024 = COPY %3.sub0
104    %3.sub29:sgpr_1024 = COPY %3.sub0
105    %3.sub30:sgpr_1024 = COPY %3.sub0
106    %3.sub31:sgpr_1024 = COPY %3.sub0
107
108  bb.2:
109    S_NOP 0, implicit %0, implicit %1, csr_amdgpu_highregs
110    S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc
111    S_BRANCH %bb.2
112
113...
114