380 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=greedy -o - -verify-machineinstrs %s | FileCheck -check-prefix=RA %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=greedy,virtregrewriter,post-RA-sched -o - -verify-machineinstrs %s | FileCheck -check-prefix=VR %s4 5---6name: splitkit_copy_bundle7tracksRegLiveness: true8machineFunctionInfo:9 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'10 stackPtrOffsetReg: '$sgpr32'11body: |12 ; RA-LABEL: name: splitkit_copy_bundle13 ; RA: bb.0:14 ; RA-NEXT: successors: %bb.1(0x80000000)15 ; RA-NEXT: {{ $}}16 ; RA-NEXT: [[DEF:%[0-9]+]]:sreg_64 = IMPLICIT_DEF17 ; RA-NEXT: [[DEF1:%[0-9]+]]:sreg_64 = IMPLICIT_DEF18 ; RA-NEXT: undef [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_1024 = S_MOV_B32 -119 ; RA-NEXT: [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_1024 = S_MOV_B32 -120 ; RA-NEXT: SI_SPILL_S1024_SAVE [[S_MOV_B32_]], %stack.0, implicit $exec, implicit $sgpr32 :: (store (s1024) into %stack.0, align 4, addrspace 5)21 ; RA-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_1024 = S_MOV_B32 022 ; RA-NEXT: SI_SPILL_S1024_SAVE [[S_MOV_B32_1]], %stack.1, implicit $exec, implicit $sgpr32 :: (store (s1024) into %stack.1, align 4, addrspace 5)23 ; RA-NEXT: {{ $}}24 ; RA-NEXT: bb.1:25 ; RA-NEXT: successors: %bb.2(0x80000000)26 ; RA-NEXT: {{ $}}27 ; RA-NEXT: [[SI_SPILL_S1024_RESTORE:%[0-9]+]]:sgpr_1024 = SI_SPILL_S1024_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s1024) from %stack.0, align 4, addrspace 5)28 ; RA-NEXT: undef [[COPY:%[0-9]+]].sub0_sub1:sgpr_1024 = COPY [[SI_SPILL_S1024_RESTORE]].sub0_sub129 ; RA-NEXT: [[COPY:%[0-9]+]].sub2:sgpr_1024 = COPY [[COPY]].sub030 ; RA-NEXT: [[COPY:%[0-9]+]].sub3:sgpr_1024 = COPY [[COPY]].sub131 ; RA-NEXT: [[COPY:%[0-9]+]].sub4:sgpr_1024 = COPY [[COPY]].sub032 ; RA-NEXT: [[COPY:%[0-9]+]].sub5:sgpr_1024 = COPY [[COPY]].sub133 ; RA-NEXT: [[COPY:%[0-9]+]].sub6:sgpr_1024 = COPY [[COPY]].sub034 ; RA-NEXT: [[COPY:%[0-9]+]].sub7:sgpr_1024 = COPY [[COPY]].sub135 ; RA-NEXT: [[COPY:%[0-9]+]].sub8:sgpr_1024 = COPY [[COPY]].sub036 ; RA-NEXT: [[COPY:%[0-9]+]].sub9:sgpr_1024 = COPY [[COPY]].sub137 ; RA-NEXT: [[COPY:%[0-9]+]].sub10:sgpr_1024 = COPY [[COPY]].sub038 ; RA-NEXT: [[COPY:%[0-9]+]].sub11:sgpr_1024 = COPY [[COPY]].sub139 ; RA-NEXT: [[COPY:%[0-9]+]].sub12:sgpr_1024 = COPY [[COPY]].sub040 ; RA-NEXT: [[COPY:%[0-9]+]].sub13:sgpr_1024 = COPY [[COPY]].sub141 ; RA-NEXT: [[COPY:%[0-9]+]].sub14:sgpr_1024 = COPY [[COPY]].sub042 ; RA-NEXT: [[COPY:%[0-9]+]].sub15:sgpr_1024 = COPY [[COPY]].sub143 ; RA-NEXT: [[COPY:%[0-9]+]].sub16:sgpr_1024 = COPY [[COPY]].sub044 ; RA-NEXT: [[COPY:%[0-9]+]].sub17:sgpr_1024 = COPY [[COPY]].sub145 ; RA-NEXT: [[COPY:%[0-9]+]].sub18:sgpr_1024 = COPY [[COPY]].sub046 ; RA-NEXT: [[COPY:%[0-9]+]].sub19:sgpr_1024 = COPY [[COPY]].sub147 ; RA-NEXT: [[COPY:%[0-9]+]].sub20:sgpr_1024 = COPY [[COPY]].sub048 ; RA-NEXT: [[COPY:%[0-9]+]].sub21:sgpr_1024 = COPY [[COPY]].sub149 ; RA-NEXT: [[COPY:%[0-9]+]].sub22:sgpr_1024 = COPY [[COPY]].sub050 ; RA-NEXT: [[COPY:%[0-9]+]].sub23:sgpr_1024 = COPY [[COPY]].sub151 ; RA-NEXT: [[COPY:%[0-9]+]].sub24:sgpr_1024 = COPY [[COPY]].sub052 ; RA-NEXT: [[COPY:%[0-9]+]].sub25:sgpr_1024 = COPY [[COPY]].sub153 ; RA-NEXT: [[COPY:%[0-9]+]].sub26:sgpr_1024 = COPY [[COPY]].sub054 ; RA-NEXT: [[COPY:%[0-9]+]].sub27:sgpr_1024 = COPY [[COPY]].sub155 ; RA-NEXT: [[COPY:%[0-9]+]].sub28:sgpr_1024 = COPY [[COPY]].sub056 ; RA-NEXT: [[COPY:%[0-9]+]].sub29:sgpr_1024 = COPY [[COPY]].sub157 ; RA-NEXT: SI_SPILL_S1024_SAVE [[COPY]], %stack.0, implicit $exec, implicit $sgpr32 :: (store (s1024) into %stack.0, align 4, addrspace 5)58 ; RA-NEXT: [[SI_SPILL_S1024_RESTORE1:%[0-9]+]]:sgpr_1024 = SI_SPILL_S1024_RESTORE %stack.1, implicit $exec, implicit $sgpr32 :: (load (s1024) from %stack.1, align 4, addrspace 5)59 ; RA-NEXT: undef [[COPY1:%[0-9]+]].sub0:sgpr_1024 = COPY [[SI_SPILL_S1024_RESTORE1]].sub060 ; RA-NEXT: [[COPY1:%[0-9]+]].sub1:sgpr_1024 = COPY [[COPY1]].sub061 ; RA-NEXT: [[COPY1:%[0-9]+]].sub2:sgpr_1024 = COPY [[COPY1]].sub062 ; RA-NEXT: [[COPY1:%[0-9]+]].sub3:sgpr_1024 = COPY [[COPY1]].sub063 ; RA-NEXT: [[COPY1:%[0-9]+]].sub4:sgpr_1024 = COPY [[COPY1]].sub064 ; RA-NEXT: [[COPY1:%[0-9]+]].sub5:sgpr_1024 = COPY [[COPY1]].sub065 ; RA-NEXT: [[COPY1:%[0-9]+]].sub6:sgpr_1024 = COPY [[COPY1]].sub066 ; RA-NEXT: [[COPY1:%[0-9]+]].sub7:sgpr_1024 = COPY [[COPY1]].sub067 ; RA-NEXT: [[COPY1:%[0-9]+]].sub8:sgpr_1024 = COPY [[COPY1]].sub068 ; RA-NEXT: [[COPY1:%[0-9]+]].sub9:sgpr_1024 = COPY [[COPY1]].sub069 ; RA-NEXT: [[COPY1:%[0-9]+]].sub10:sgpr_1024 = COPY [[COPY1]].sub070 ; RA-NEXT: [[COPY1:%[0-9]+]].sub11:sgpr_1024 = COPY [[COPY1]].sub071 ; RA-NEXT: [[COPY1:%[0-9]+]].sub12:sgpr_1024 = COPY [[COPY1]].sub072 ; RA-NEXT: [[COPY1:%[0-9]+]].sub13:sgpr_1024 = COPY [[COPY1]].sub073 ; RA-NEXT: [[COPY1:%[0-9]+]].sub14:sgpr_1024 = COPY [[COPY1]].sub074 ; RA-NEXT: [[COPY1:%[0-9]+]].sub15:sgpr_1024 = COPY [[COPY1]].sub075 ; RA-NEXT: [[COPY1:%[0-9]+]].sub16:sgpr_1024 = COPY [[COPY1]].sub076 ; RA-NEXT: [[COPY1:%[0-9]+]].sub17:sgpr_1024 = COPY [[COPY1]].sub077 ; RA-NEXT: [[COPY1:%[0-9]+]].sub18:sgpr_1024 = COPY [[COPY1]].sub078 ; RA-NEXT: [[COPY1:%[0-9]+]].sub19:sgpr_1024 = COPY [[COPY1]].sub079 ; RA-NEXT: [[COPY1:%[0-9]+]].sub20:sgpr_1024 = COPY [[COPY1]].sub080 ; RA-NEXT: [[COPY1:%[0-9]+]].sub21:sgpr_1024 = COPY [[COPY1]].sub081 ; RA-NEXT: [[COPY1:%[0-9]+]].sub22:sgpr_1024 = COPY [[COPY1]].sub082 ; RA-NEXT: [[COPY1:%[0-9]+]].sub23:sgpr_1024 = COPY [[COPY1]].sub083 ; RA-NEXT: [[COPY1:%[0-9]+]].sub24:sgpr_1024 = COPY [[COPY1]].sub084 ; RA-NEXT: [[COPY1:%[0-9]+]].sub25:sgpr_1024 = COPY [[COPY1]].sub085 ; RA-NEXT: [[COPY1:%[0-9]+]].sub26:sgpr_1024 = COPY [[COPY1]].sub086 ; RA-NEXT: [[COPY1:%[0-9]+]].sub27:sgpr_1024 = COPY [[COPY1]].sub087 ; RA-NEXT: [[COPY1:%[0-9]+]].sub28:sgpr_1024 = COPY [[COPY1]].sub088 ; RA-NEXT: [[COPY1:%[0-9]+]].sub29:sgpr_1024 = COPY [[COPY1]].sub089 ; RA-NEXT: [[COPY1:%[0-9]+]].sub30:sgpr_1024 = COPY [[COPY1]].sub090 ; RA-NEXT: [[COPY1:%[0-9]+]].sub31:sgpr_1024 = COPY [[COPY1]].sub091 ; RA-NEXT: SI_SPILL_S1024_SAVE [[COPY1]], %stack.1, implicit $exec, implicit $sgpr32 :: (store (s1024) into %stack.1, align 4, addrspace 5)92 ; RA-NEXT: {{ $}}93 ; RA-NEXT: bb.2:94 ; RA-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)95 ; RA-NEXT: {{ $}}96 ; RA-NEXT: S_NOP 0, csr_amdgpu, implicit [[DEF]], implicit [[DEF1]]97 ; RA-NEXT: S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc98 ; RA-NEXT: S_BRANCH %bb.299 ;100 ; VR-LABEL: name: splitkit_copy_bundle101 ; VR: bb.0:102 ; VR-NEXT: successors: %bb.1(0x80000000)103 ; VR-NEXT: {{ $}}104 ; VR-NEXT: renamable $sgpr37 = S_MOV_B32 -1105 ; VR-NEXT: renamable $sgpr36 = S_MOV_B32 -1106 ; VR-NEXT: SI_SPILL_S1024_SAVE renamable $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, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s1024) into %stack.0, align 4, addrspace 5)107 ; VR-NEXT: renamable $sgpr36 = S_MOV_B32 0108 ; VR-NEXT: renamable $sgpr30_sgpr31 = IMPLICIT_DEF109 ; VR-NEXT: renamable $sgpr34_sgpr35 = IMPLICIT_DEF110 ; VR-NEXT: SI_SPILL_S1024_SAVE killed renamable $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, %stack.1, implicit $exec, implicit $sgpr32 :: (store (s1024) into %stack.1, align 4, addrspace 5)111 ; VR-NEXT: {{ $}}112 ; VR-NEXT: bb.1:113 ; VR-NEXT: successors: %bb.2(0x80000000)114 ; VR-NEXT: liveins: $sgpr30_sgpr31, $sgpr34_sgpr35115 ; VR-NEXT: {{ $}}116 ; VR-NEXT: renamable $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 = SI_SPILL_S1024_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s1024) from %stack.0, align 4, addrspace 5)117 ; VR-NEXT: renamable $sgpr38 = COPY renamable $sgpr36118 ; VR-NEXT: renamable $sgpr39 = COPY renamable $sgpr37119 ; VR-NEXT: renamable $sgpr40 = COPY renamable $sgpr36120 ; VR-NEXT: renamable $sgpr41 = COPY renamable $sgpr37121 ; VR-NEXT: renamable $sgpr42 = COPY renamable $sgpr36122 ; VR-NEXT: renamable $sgpr43 = COPY renamable $sgpr37123 ; VR-NEXT: renamable $sgpr44 = COPY renamable $sgpr36124 ; VR-NEXT: renamable $sgpr45 = COPY renamable $sgpr37125 ; VR-NEXT: renamable $sgpr46 = COPY renamable $sgpr36126 ; VR-NEXT: renamable $sgpr47 = COPY renamable $sgpr37127 ; VR-NEXT: renamable $sgpr48 = COPY renamable $sgpr36128 ; VR-NEXT: renamable $sgpr49 = COPY renamable $sgpr37129 ; VR-NEXT: renamable $sgpr50 = COPY renamable $sgpr36130 ; VR-NEXT: renamable $sgpr51 = COPY renamable $sgpr37131 ; VR-NEXT: renamable $sgpr52 = COPY renamable $sgpr36132 ; VR-NEXT: renamable $sgpr53 = COPY renamable $sgpr37133 ; VR-NEXT: renamable $sgpr54 = COPY renamable $sgpr36134 ; VR-NEXT: renamable $sgpr55 = COPY renamable $sgpr37135 ; VR-NEXT: renamable $sgpr56 = COPY renamable $sgpr36136 ; VR-NEXT: renamable $sgpr57 = COPY renamable $sgpr37137 ; VR-NEXT: renamable $sgpr58 = COPY renamable $sgpr36138 ; VR-NEXT: renamable $sgpr59 = COPY renamable $sgpr37139 ; VR-NEXT: renamable $sgpr60 = COPY renamable $sgpr36140 ; VR-NEXT: renamable $sgpr61 = COPY renamable $sgpr37141 ; VR-NEXT: renamable $sgpr62 = COPY renamable $sgpr36142 ; VR-NEXT: renamable $sgpr63 = COPY renamable $sgpr37143 ; VR-NEXT: renamable $sgpr64 = COPY renamable $sgpr36144 ; VR-NEXT: renamable $sgpr65 = COPY renamable $sgpr37145 ; VR-NEXT: SI_SPILL_S1024_SAVE killed renamable $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, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s1024) into %stack.0, align 4, addrspace 5)146 ; VR-NEXT: renamable $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 = SI_SPILL_S1024_RESTORE %stack.1, implicit $exec, implicit $sgpr32 :: (load (s1024) from %stack.1, align 4, addrspace 5)147 ; VR-NEXT: renamable $sgpr37 = COPY renamable $sgpr36148 ; VR-NEXT: renamable $sgpr38 = COPY renamable $sgpr36149 ; VR-NEXT: renamable $sgpr39 = COPY renamable $sgpr36150 ; VR-NEXT: renamable $sgpr40 = COPY renamable $sgpr36151 ; VR-NEXT: renamable $sgpr41 = COPY renamable $sgpr36152 ; VR-NEXT: renamable $sgpr42 = COPY renamable $sgpr36153 ; VR-NEXT: renamable $sgpr43 = COPY renamable $sgpr36154 ; VR-NEXT: renamable $sgpr44 = COPY renamable $sgpr36155 ; VR-NEXT: renamable $sgpr45 = COPY renamable $sgpr36156 ; VR-NEXT: renamable $sgpr46 = COPY renamable $sgpr36157 ; VR-NEXT: renamable $sgpr47 = COPY renamable $sgpr36158 ; VR-NEXT: renamable $sgpr48 = COPY renamable $sgpr36159 ; VR-NEXT: renamable $sgpr49 = COPY renamable $sgpr36160 ; VR-NEXT: renamable $sgpr50 = COPY renamable $sgpr36161 ; VR-NEXT: renamable $sgpr51 = COPY renamable $sgpr36162 ; VR-NEXT: renamable $sgpr52 = COPY renamable $sgpr36163 ; VR-NEXT: renamable $sgpr53 = COPY renamable $sgpr36164 ; VR-NEXT: renamable $sgpr54 = COPY renamable $sgpr36165 ; VR-NEXT: renamable $sgpr55 = COPY renamable $sgpr36166 ; VR-NEXT: renamable $sgpr56 = COPY renamable $sgpr36167 ; VR-NEXT: renamable $sgpr57 = COPY renamable $sgpr36168 ; VR-NEXT: renamable $sgpr58 = COPY renamable $sgpr36169 ; VR-NEXT: renamable $sgpr59 = COPY renamable $sgpr36170 ; VR-NEXT: renamable $sgpr60 = COPY renamable $sgpr36171 ; VR-NEXT: renamable $sgpr61 = COPY renamable $sgpr36172 ; VR-NEXT: renamable $sgpr62 = COPY renamable $sgpr36173 ; VR-NEXT: renamable $sgpr63 = COPY renamable $sgpr36174 ; VR-NEXT: renamable $sgpr64 = COPY renamable $sgpr36175 ; VR-NEXT: renamable $sgpr65 = COPY renamable $sgpr36176 ; VR-NEXT: renamable $sgpr66 = COPY renamable $sgpr36177 ; VR-NEXT: renamable $sgpr67 = COPY renamable $sgpr36178 ; VR-NEXT: SI_SPILL_S1024_SAVE killed renamable $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, %stack.1, implicit $exec, implicit $sgpr32 :: (store (s1024) into %stack.1, align 4, addrspace 5)179 ; VR-NEXT: {{ $}}180 ; VR-NEXT: bb.2:181 ; VR-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)182 ; VR-NEXT: liveins: $sgpr30_sgpr31, $sgpr34_sgpr35183 ; VR-NEXT: {{ $}}184 ; VR-NEXT: S_NOP 0, csr_amdgpu, implicit renamable $sgpr30_sgpr31, implicit renamable $sgpr34_sgpr35185 ; VR-NEXT: S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc186 ; VR-NEXT: S_BRANCH %bb.2187 bb.0:188 %0:sreg_64 = IMPLICIT_DEF189 %1:sreg_64 = IMPLICIT_DEF190 undef %2.sub1:sgpr_1024 = S_MOV_B32 -1191 %2.sub0:sgpr_1024 = S_MOV_B32 -1192 undef %3.sub0:sgpr_1024 = S_MOV_B32 0193 194 bb.1:195 %2.sub2:sgpr_1024 = COPY %2.sub0196 %2.sub3:sgpr_1024 = COPY %2.sub1197 %2.sub4:sgpr_1024 = COPY %2.sub0198 %2.sub5:sgpr_1024 = COPY %2.sub1199 %2.sub6:sgpr_1024 = COPY %2.sub0200 %2.sub7:sgpr_1024 = COPY %2.sub1201 %2.sub8:sgpr_1024 = COPY %2.sub0202 %2.sub9:sgpr_1024 = COPY %2.sub1203 %2.sub10:sgpr_1024 = COPY %2.sub0204 %2.sub11:sgpr_1024 = COPY %2.sub1205 %2.sub12:sgpr_1024 = COPY %2.sub0206 %2.sub13:sgpr_1024 = COPY %2.sub1207 %2.sub14:sgpr_1024 = COPY %2.sub0208 %2.sub15:sgpr_1024 = COPY %2.sub1209 %2.sub16:sgpr_1024 = COPY %2.sub0210 %2.sub17:sgpr_1024 = COPY %2.sub1211 %2.sub18:sgpr_1024 = COPY %2.sub0212 %2.sub19:sgpr_1024 = COPY %2.sub1213 %2.sub20:sgpr_1024 = COPY %2.sub0214 %2.sub21:sgpr_1024 = COPY %2.sub1215 %2.sub22:sgpr_1024 = COPY %2.sub0216 %2.sub23:sgpr_1024 = COPY %2.sub1217 %2.sub24:sgpr_1024 = COPY %2.sub0218 %2.sub25:sgpr_1024 = COPY %2.sub1219 %2.sub26:sgpr_1024 = COPY %2.sub0220 %2.sub27:sgpr_1024 = COPY %2.sub1221 %2.sub28:sgpr_1024 = COPY %2.sub0222 %2.sub29:sgpr_1024 = COPY %2.sub1223 %3.sub1:sgpr_1024 = COPY %3.sub0224 %3.sub2:sgpr_1024 = COPY %3.sub0225 %3.sub3:sgpr_1024 = COPY %3.sub0226 %3.sub4:sgpr_1024 = COPY %3.sub0227 %3.sub5:sgpr_1024 = COPY %3.sub0228 %3.sub6:sgpr_1024 = COPY %3.sub0229 %3.sub7:sgpr_1024 = COPY %3.sub0230 %3.sub8:sgpr_1024 = COPY %3.sub0231 %3.sub9:sgpr_1024 = COPY %3.sub0232 %3.sub10:sgpr_1024 = COPY %3.sub0233 %3.sub11:sgpr_1024 = COPY %3.sub0234 %3.sub12:sgpr_1024 = COPY %3.sub0235 %3.sub13:sgpr_1024 = COPY %3.sub0236 %3.sub14:sgpr_1024 = COPY %3.sub0237 %3.sub15:sgpr_1024 = COPY %3.sub0238 %3.sub16:sgpr_1024 = COPY %3.sub0239 %3.sub17:sgpr_1024 = COPY %3.sub0240 %3.sub18:sgpr_1024 = COPY %3.sub0241 %3.sub19:sgpr_1024 = COPY %3.sub0242 %3.sub20:sgpr_1024 = COPY %3.sub0243 %3.sub21:sgpr_1024 = COPY %3.sub0244 %3.sub22:sgpr_1024 = COPY %3.sub0245 %3.sub23:sgpr_1024 = COPY %3.sub0246 %3.sub24:sgpr_1024 = COPY %3.sub0247 %3.sub25:sgpr_1024 = COPY %3.sub0248 %3.sub26:sgpr_1024 = COPY %3.sub0249 %3.sub27:sgpr_1024 = COPY %3.sub0250 %3.sub28:sgpr_1024 = COPY %3.sub0251 %3.sub29:sgpr_1024 = COPY %3.sub0252 %3.sub30:sgpr_1024 = COPY %3.sub0253 %3.sub31:sgpr_1024 = COPY %3.sub0254 255 bb.2:256 S_NOP 0, implicit %0, implicit %1, csr_amdgpu257 S_CBRANCH_VCCNZ %bb.1, implicit undef $vcc258 S_BRANCH %bb.2259 260...261 262---263name: splitkit_copy_unbundle_reorder264tracksRegLiveness: true265machineFunctionInfo:266 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'267 stackPtrOffsetReg: '$sgpr32'268body: |269 bb.0:270 ; RA-LABEL: name: splitkit_copy_unbundle_reorder271 ; RA: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF272 ; RA-NEXT: [[DEF1:%[0-9]+]]:sreg_64 = IMPLICIT_DEF273 ; RA-NEXT: [[DEF2:%[0-9]+]]:sgpr_512 = IMPLICIT_DEF274 ; RA-NEXT: [[DEF2:%[0-9]+]].sub4:sgpr_512 = S_MOV_B32 -1275 ; RA-NEXT: [[DEF2:%[0-9]+]].sub5:sgpr_512 = S_MOV_B32 -1276 ; RA-NEXT: [[DEF2:%[0-9]+]].sub10:sgpr_512 = S_MOV_B32 -1277 ; RA-NEXT: [[DEF2:%[0-9]+]].sub11:sgpr_512 = S_MOV_B32 -1278 ; RA-NEXT: [[DEF2:%[0-9]+]].sub7:sgpr_512 = S_MOV_B32 -1279 ; RA-NEXT: [[DEF2:%[0-9]+]].sub8:sgpr_512 = S_MOV_B32 -1280 ; RA-NEXT: [[DEF2:%[0-9]+]].sub13:sgpr_512 = S_MOV_B32 -1281 ; RA-NEXT: [[DEF2:%[0-9]+]].sub14:sgpr_512 = S_MOV_B32 -1282 ; RA-NEXT: undef [[COPY:%[0-9]+]].sub4_sub5:sgpr_512 = COPY [[DEF2]].sub4_sub5 {283 ; RA-NEXT: internal [[COPY]].sub10_sub11:sgpr_512 = COPY [[DEF2]].sub10_sub11284 ; RA-NEXT: internal [[COPY]].sub7:sgpr_512 = COPY [[DEF2]].sub7285 ; RA-NEXT: internal [[COPY]].sub8:sgpr_512 = COPY [[DEF2]].sub8286 ; RA-NEXT: internal [[COPY]].sub13:sgpr_512 = COPY [[DEF2]].sub13287 ; RA-NEXT: internal [[COPY]].sub14:sgpr_512 = COPY [[DEF2]].sub14288 ; RA-NEXT: }289 ; RA-NEXT: undef [[COPY1:%[0-9]+]].sub4_sub5:sgpr_512 = COPY [[COPY]].sub4_sub5 {290 ; RA-NEXT: internal [[COPY1]].sub10_sub11:sgpr_512 = COPY [[COPY]].sub10_sub11291 ; RA-NEXT: internal [[COPY1]].sub7:sgpr_512 = COPY [[COPY]].sub7292 ; RA-NEXT: internal [[COPY1]].sub8:sgpr_512 = COPY [[COPY]].sub8293 ; RA-NEXT: internal [[COPY1]].sub13:sgpr_512 = COPY [[COPY]].sub13294 ; RA-NEXT: internal [[COPY1]].sub14:sgpr_512 = COPY [[COPY]].sub14295 ; RA-NEXT: }296 ; RA-NEXT: SI_SPILL_S512_SAVE [[COPY1]], %stack.0, implicit $exec, implicit $sgpr32 :: (store (s512) into %stack.0, align 4, addrspace 5)297 ; RA-NEXT: S_NOP 0, implicit-def $sgpr8, implicit-def $sgpr12, implicit-def $sgpr16, implicit-def $sgpr20, implicit-def $sgpr24, implicit-def $sgpr28, implicit-def $sgpr32, implicit-def $sgpr36, implicit-def $sgpr40, implicit-def $sgpr44, implicit-def $sgpr48, implicit-def $sgpr52, implicit-def $sgpr56, implicit-def $sgpr60, implicit-def $sgpr64, implicit-def $sgpr68, implicit-def $sgpr72, implicit-def $sgpr74, implicit-def $sgpr78, implicit-def $sgpr82, implicit-def $sgpr86, implicit-def $sgpr90, implicit-def $sgpr94, implicit-def $sgpr98298 ; RA-NEXT: [[SI_SPILL_S512_RESTORE:%[0-9]+]]:sgpr_512 = SI_SPILL_S512_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s512) from %stack.0, align 4, addrspace 5)299 ; RA-NEXT: undef [[COPY2:%[0-9]+]].sub4_sub5:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub4_sub5 {300 ; RA-NEXT: internal [[COPY2]].sub10_sub11:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub10_sub11301 ; RA-NEXT: internal [[COPY2]].sub7:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub7302 ; RA-NEXT: internal [[COPY2]].sub8:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub8303 ; RA-NEXT: internal [[COPY2]].sub13:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub13304 ; RA-NEXT: internal [[COPY2]].sub14:sgpr_512 = COPY [[SI_SPILL_S512_RESTORE]].sub14305 ; RA-NEXT: }306 ; RA-NEXT: undef [[COPY3:%[0-9]+]].sub4_sub5:sgpr_512 = COPY [[COPY2]].sub4_sub5 {307 ; RA-NEXT: internal [[COPY3]].sub10_sub11:sgpr_512 = COPY [[COPY2]].sub10_sub11308 ; RA-NEXT: internal [[COPY3]].sub7:sgpr_512 = COPY [[COPY2]].sub7309 ; RA-NEXT: internal [[COPY3]].sub8:sgpr_512 = COPY [[COPY2]].sub8310 ; RA-NEXT: internal [[COPY3]].sub13:sgpr_512 = COPY [[COPY2]].sub13311 ; RA-NEXT: internal [[COPY3]].sub14:sgpr_512 = COPY [[COPY2]].sub14312 ; RA-NEXT: }313 ; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], [[COPY3]].sub4, 0 :: (dereferenceable invariant load (s32))314 ; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR1:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], [[COPY3]].sub5, 0 :: (dereferenceable invariant load (s32))315 ; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR2:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], [[COPY3]].sub10, 0 :: (dereferenceable invariant load (s32))316 ; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR3:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], [[COPY3]].sub11, 0 :: (dereferenceable invariant load (s32))317 ; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR4:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], [[COPY3]].sub7, 0 :: (dereferenceable invariant load (s32))318 ; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR5:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], [[COPY3]].sub8, 0 :: (dereferenceable invariant load (s32))319 ; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR6:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], [[COPY3]].sub13, 0 :: (dereferenceable invariant load (s32))320 ; RA-NEXT: [[S_BUFFER_LOAD_DWORD_SGPR7:%[0-9]+]]:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR [[DEF]], [[COPY3]].sub14, 0 :: (dereferenceable invariant load (s32))321 ; RA-NEXT: S_NOP 0, implicit [[DEF]], implicit [[DEF1]], implicit [[S_BUFFER_LOAD_DWORD_SGPR]], implicit [[S_BUFFER_LOAD_DWORD_SGPR1]], implicit [[S_BUFFER_LOAD_DWORD_SGPR2]], implicit [[S_BUFFER_LOAD_DWORD_SGPR3]], implicit [[S_BUFFER_LOAD_DWORD_SGPR4]], implicit [[S_BUFFER_LOAD_DWORD_SGPR5]], implicit [[S_BUFFER_LOAD_DWORD_SGPR6]], implicit [[S_BUFFER_LOAD_DWORD_SGPR7]]322 ;323 ; VR-LABEL: name: splitkit_copy_unbundle_reorder324 ; VR: renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27 = IMPLICIT_DEF325 ; VR-NEXT: renamable $sgpr16 = S_MOV_B32 -1326 ; VR-NEXT: renamable $sgpr17 = S_MOV_B32 -1327 ; VR-NEXT: renamable $sgpr22 = S_MOV_B32 -1328 ; VR-NEXT: renamable $sgpr23 = S_MOV_B32 -1329 ; VR-NEXT: renamable $sgpr19 = S_MOV_B32 -1330 ; VR-NEXT: renamable $sgpr20 = S_MOV_B32 -1331 ; VR-NEXT: renamable $sgpr25 = S_MOV_B32 -1332 ; VR-NEXT: renamable $sgpr26 = S_MOV_B32 -1333 ; VR-NEXT: SI_SPILL_S512_SAVE killed renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s512) into %stack.0, align 4, addrspace 5)334 ; VR-NEXT: S_NOP 0, implicit-def $sgpr8, implicit-def $sgpr12, implicit-def $sgpr16, implicit-def $sgpr20, implicit-def $sgpr24, implicit-def $sgpr28, implicit-def $sgpr32, implicit-def $sgpr36, implicit-def $sgpr40, implicit-def $sgpr44, implicit-def $sgpr48, implicit-def $sgpr52, implicit-def $sgpr56, implicit-def $sgpr60, implicit-def $sgpr64, implicit-def $sgpr68, implicit-def $sgpr72, implicit-def $sgpr74, implicit-def $sgpr78, implicit-def $sgpr82, implicit-def $sgpr86, implicit-def $sgpr90, implicit-def $sgpr94, implicit-def $sgpr98335 ; VR-NEXT: renamable $sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27 = SI_SPILL_S512_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s512) from %stack.0, align 4, addrspace 5)336 ; VR-NEXT: renamable $sgpr12_sgpr13 = COPY killed renamable $sgpr16_sgpr17337 ; VR-NEXT: renamable $sgpr15 = COPY killed renamable $sgpr19338 ; VR-NEXT: renamable $sgpr18_sgpr19 = COPY killed renamable $sgpr22_sgpr23339 ; VR-NEXT: renamable $sgpr16 = COPY killed renamable $sgpr20340 ; VR-NEXT: renamable $sgpr21 = COPY killed renamable $sgpr25341 ; VR-NEXT: renamable $sgpr22 = COPY killed renamable $sgpr26342 ; VR-NEXT: renamable $sgpr4_sgpr5_sgpr6_sgpr7 = IMPLICIT_DEF343 ; VR-NEXT: renamable $sgpr8 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr12, 0 :: (dereferenceable invariant load (s32))344 ; VR-NEXT: renamable $sgpr9 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr13, 0 :: (dereferenceable invariant load (s32))345 ; VR-NEXT: renamable $sgpr14 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr15, 0 :: (dereferenceable invariant load (s32))346 ; VR-NEXT: renamable $sgpr10_sgpr11 = IMPLICIT_DEF347 ; VR-NEXT: renamable $sgpr17 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr22, 0 :: (dereferenceable invariant load (s32))348 ; VR-NEXT: renamable $sgpr15 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr16, 0 :: (dereferenceable invariant load (s32))349 ; VR-NEXT: renamable $sgpr12 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr18, 0 :: (dereferenceable invariant load (s32))350 ; VR-NEXT: renamable $sgpr13 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr19, 0 :: (dereferenceable invariant load (s32))351 ; VR-NEXT: renamable $sgpr16 = S_BUFFER_LOAD_DWORD_SGPR renamable $sgpr4_sgpr5_sgpr6_sgpr7, killed renamable $sgpr21, 0 :: (dereferenceable invariant load (s32))352 ; VR-NEXT: S_NOP 0, implicit killed renamable $sgpr4_sgpr5_sgpr6_sgpr7, implicit killed renamable $sgpr10_sgpr11, implicit killed renamable $sgpr8, implicit killed renamable $sgpr9, implicit killed renamable $sgpr12, implicit killed renamable $sgpr13, implicit killed renamable $sgpr14, implicit killed renamable $sgpr15, implicit killed renamable $sgpr16, implicit killed renamable $sgpr17353 %0:sgpr_128 = IMPLICIT_DEF354 %1:sreg_64 = IMPLICIT_DEF355 %2:sgpr_512 = IMPLICIT_DEF356 357 %2.sub4:sgpr_512 = S_MOV_B32 -1358 %2.sub5:sgpr_512 = S_MOV_B32 -1359 %2.sub10:sgpr_512 = S_MOV_B32 -1360 %2.sub11:sgpr_512 = S_MOV_B32 -1361 %2.sub7:sgpr_512 = S_MOV_B32 -1362 %2.sub8:sgpr_512 = S_MOV_B32 -1363 %2.sub13:sgpr_512 = S_MOV_B32 -1364 %2.sub14:sgpr_512 = S_MOV_B32 -1365 366 S_NOP 0, implicit-def $sgpr8, implicit-def $sgpr12, implicit-def $sgpr16, implicit-def $sgpr20, implicit-def $sgpr24, implicit-def $sgpr28, implicit-def $sgpr32, implicit-def $sgpr36, implicit-def $sgpr40, implicit-def $sgpr44, implicit-def $sgpr48, implicit-def $sgpr52, implicit-def $sgpr56, implicit-def $sgpr60, implicit-def $sgpr64, implicit-def $sgpr68, implicit-def $sgpr72, implicit-def $sgpr74, implicit-def $sgpr78, implicit-def $sgpr82, implicit-def $sgpr86, implicit-def $sgpr90, implicit-def $sgpr94, implicit-def $sgpr98367 368 %5:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub4:sgpr_512, 0 :: (dereferenceable invariant load (s32))369 %6:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub5:sgpr_512, 0 :: (dereferenceable invariant load (s32))370 %7:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub10:sgpr_512, 0 :: (dereferenceable invariant load (s32))371 %8:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub11:sgpr_512, 0 :: (dereferenceable invariant load (s32))372 %9:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub7:sgpr_512, 0 :: (dereferenceable invariant load (s32))373 %10:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub8:sgpr_512, 0 :: (dereferenceable invariant load (s32))374 %11:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub13:sgpr_512, 0 :: (dereferenceable invariant load (s32))375 %12:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_SGPR %0:sgpr_128, %2.sub14:sgpr_512, 0 :: (dereferenceable invariant load (s32))376 377 S_NOP 0, implicit %0, implicit %1, implicit %5, implicit %6, implicit %7, implicit %8, implicit %9, implicit %10, implicit %11, implicit %12378 379...380