364 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx900 -start-before=greedy,2 -stop-after=tailduplication -verify-machineinstrs -o - %s | FileCheck %s3 4# The partial def of %0 introduces a live out undef def of %0.sub15# into bb.3. We need to maintain this liveness with an explicit def of6# the physical subregister. Without this, a verifier error would7# appear after tail duplication.8 9---10name: undef_subreg_def_live_out_tailduplicate_vreg64_undef_sub111tracksRegLiveness: true12machineFunctionInfo:13 isEntryFunction: true14 scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'15 stackPtrOffsetReg: '$sgpr32'16body: |17 ; CHECK-LABEL: name: undef_subreg_def_live_out_tailduplicate_vreg64_undef_sub118 ; CHECK: bb.0:19 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)20 ; CHECK-NEXT: liveins: $sgpr021 ; CHECK-NEXT: {{ $}}22 ; CHECK-NEXT: S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc23 ; CHECK-NEXT: S_CBRANCH_SCC0 %bb.2, implicit killed $scc24 ; CHECK-NEXT: {{ $}}25 ; CHECK-NEXT: bb.1:26 ; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec, implicit-def $vgpr127 ; CHECK-NEXT: EXP 0, killed renamable $vgpr0, renamable $vgpr1, undef renamable $vgpr0, undef renamable $vgpr0, 0, 0, 0, implicit $exec28 ; CHECK-NEXT: S_ENDPGM 029 ; CHECK-NEXT: {{ $}}30 ; CHECK-NEXT: bb.2:31 ; CHECK-NEXT: S_NOP 0, implicit-def $sgpr4_sgpr5_sgpr6_sgpr732 ; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec33 ; CHECK-NEXT: renamable $vgpr0_vgpr1 = BUFFER_LOAD_FORMAT_XY_IDXEN killed renamable $vgpr0, $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), addrspace 8)34 ; CHECK-NEXT: EXP 0, killed renamable $vgpr0, renamable $vgpr1, undef renamable $vgpr0, undef renamable $vgpr0, 0, 0, 0, implicit $exec35 ; CHECK-NEXT: S_ENDPGM 036 bb.0:37 liveins: $sgpr038 39 S_CMP_EQ_U32 killed $sgpr0, 0, implicit-def $scc40 S_CBRANCH_SCC0 %bb.2, implicit killed $scc41 42 bb.1:43 undef %0.sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec44 S_BRANCH %bb.345 46 bb.2:47 S_NOP 0, implicit-def $sgpr4_sgpr5_sgpr6_sgpr748 %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec49 %0:vreg_64 = BUFFER_LOAD_FORMAT_XY_IDXEN killed %1, $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), addrspace 8)50 51 bb.3:52 EXP 0, killed %0.sub0, killed %0.sub1, undef %2:vgpr_32, undef %2:vgpr_32, 0, 0, 0, implicit $exec53 S_ENDPGM 054 55...56 57---58name: undef_subreg_def_live_out_tailduplicate_vreg96_undef_sub1_sub259tracksRegLiveness: true60machineFunctionInfo:61 isEntryFunction: true62 scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'63 stackPtrOffsetReg: '$sgpr32'64body: |65 ; CHECK-LABEL: name: undef_subreg_def_live_out_tailduplicate_vreg96_undef_sub1_sub266 ; CHECK: bb.0:67 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)68 ; CHECK-NEXT: liveins: $sgpr069 ; CHECK-NEXT: {{ $}}70 ; CHECK-NEXT: S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc71 ; CHECK-NEXT: S_CBRANCH_SCC0 %bb.2, implicit killed $scc72 ; CHECK-NEXT: {{ $}}73 ; CHECK-NEXT: bb.1:74 ; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec, implicit-def $vgpr1_vgpr275 ; CHECK-NEXT: EXP 0, killed renamable $vgpr0, renamable $vgpr1, renamable $vgpr2, undef renamable $vgpr0, 0, 0, 0, implicit $exec76 ; CHECK-NEXT: S_ENDPGM 077 ; CHECK-NEXT: {{ $}}78 ; CHECK-NEXT: bb.2:79 ; CHECK-NEXT: S_NOP 0, implicit-def $sgpr4_sgpr5_sgpr6_sgpr780 ; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec81 ; CHECK-NEXT: renamable $vgpr0_vgpr1_vgpr2 = BUFFER_LOAD_FORMAT_XYZ_IDXEN killed renamable $vgpr0, $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 8)82 ; CHECK-NEXT: EXP 0, killed renamable $vgpr0, renamable $vgpr1, renamable $vgpr2, undef renamable $vgpr0, 0, 0, 0, implicit $exec83 ; CHECK-NEXT: S_ENDPGM 084 bb.0:85 liveins: $sgpr086 87 S_CMP_EQ_U32 killed $sgpr0, 0, implicit-def $scc88 S_CBRANCH_SCC0 %bb.2, implicit killed $scc89 90 bb.1:91 undef %0.sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec92 S_BRANCH %bb.393 94 bb.2:95 S_NOP 0, implicit-def $sgpr4_sgpr5_sgpr6_sgpr796 %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec97 %0:vreg_96 = BUFFER_LOAD_FORMAT_XYZ_IDXEN killed %1, $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), addrspace 8)98 99 bb.3:100 EXP 0, killed %0.sub0, killed %0.sub1, killed %0.sub2, undef %2:vgpr_32, 0, 0, 0, implicit $exec101 S_ENDPGM 0102 103...104 105---106name: undef_subreg_def_live_out_tailduplicate_vreg96_undef_sub0_sub2107tracksRegLiveness: true108machineFunctionInfo:109 isEntryFunction: true110 scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'111 stackPtrOffsetReg: '$sgpr32'112body: |113 ; CHECK-LABEL: name: undef_subreg_def_live_out_tailduplicate_vreg96_undef_sub0_sub2114 ; CHECK: bb.0:115 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)116 ; CHECK-NEXT: liveins: $sgpr0117 ; CHECK-NEXT: {{ $}}118 ; CHECK-NEXT: S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc119 ; CHECK-NEXT: S_CBRANCH_SCC0 %bb.2, implicit killed $scc120 ; CHECK-NEXT: {{ $}}121 ; CHECK-NEXT: bb.1:122 ; CHECK-NEXT: renamable $vgpr1 = V_MOV_B32_e32 0, implicit $exec, implicit-def $vgpr2, implicit-def $vgpr0123 ; CHECK-NEXT: EXP 0, killed renamable $vgpr0, renamable $vgpr1, renamable $vgpr2, undef renamable $vgpr0, 0, 0, 0, implicit $exec124 ; CHECK-NEXT: S_ENDPGM 0125 ; CHECK-NEXT: {{ $}}126 ; CHECK-NEXT: bb.2:127 ; CHECK-NEXT: S_NOP 0, implicit-def $sgpr4_sgpr5_sgpr6_sgpr7128 ; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec129 ; CHECK-NEXT: renamable $vgpr0_vgpr1_vgpr2 = BUFFER_LOAD_FORMAT_XYZ_IDXEN killed renamable $vgpr0, $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 16, addrspace 8)130 ; CHECK-NEXT: EXP 0, killed renamable $vgpr0, renamable $vgpr1, renamable $vgpr2, undef renamable $vgpr0, 0, 0, 0, implicit $exec131 ; CHECK-NEXT: S_ENDPGM 0132 bb.0:133 liveins: $sgpr0134 135 S_CMP_EQ_U32 killed $sgpr0, 0, implicit-def $scc136 S_CBRANCH_SCC0 %bb.2, implicit killed $scc137 138 bb.1:139 undef %0.sub1:vreg_96 = V_MOV_B32_e32 0, implicit $exec140 S_BRANCH %bb.3141 142 bb.2:143 S_NOP 0, implicit-def $sgpr4_sgpr5_sgpr6_sgpr7144 %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec145 %0:vreg_96 = BUFFER_LOAD_FORMAT_XYZ_IDXEN killed %1, $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), addrspace 8)146 147 bb.3:148 EXP 0, killed %0.sub0, killed %0.sub1, killed %0.sub2, undef %2:vgpr_32, 0, 0, 0, implicit $exec149 S_ENDPGM 0150 151...152 153# Test another use of the value before the block end.154---155name: undef_subreg_def_live_out_tailduplicate_vreg64_undef_sub1_undef_use_in_def_block156tracksRegLiveness: true157machineFunctionInfo:158 isEntryFunction: true159 scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'160 stackPtrOffsetReg: '$sgpr32'161body: |162 ; CHECK-LABEL: name: undef_subreg_def_live_out_tailduplicate_vreg64_undef_sub1_undef_use_in_def_block163 ; CHECK: bb.0:164 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)165 ; CHECK-NEXT: liveins: $sgpr0166 ; CHECK-NEXT: {{ $}}167 ; CHECK-NEXT: S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc168 ; CHECK-NEXT: S_CBRANCH_SCC0 %bb.2, implicit killed $scc169 ; CHECK-NEXT: {{ $}}170 ; CHECK-NEXT: bb.1:171 ; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec, implicit-def $vgpr1172 ; CHECK-NEXT: S_NOP 0, implicit renamable $vgpr0_vgpr1173 ; CHECK-NEXT: EXP 0, killed renamable $vgpr0, renamable $vgpr1, undef renamable $vgpr0, undef renamable $vgpr0, 0, 0, 0, implicit $exec174 ; CHECK-NEXT: S_ENDPGM 0175 ; CHECK-NEXT: {{ $}}176 ; CHECK-NEXT: bb.2:177 ; CHECK-NEXT: S_NOP 0, implicit-def $sgpr4_sgpr5_sgpr6_sgpr7178 ; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec179 ; CHECK-NEXT: renamable $vgpr0_vgpr1 = BUFFER_LOAD_FORMAT_XY_IDXEN killed renamable $vgpr0, $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), addrspace 8)180 ; CHECK-NEXT: EXP 0, killed renamable $vgpr0, renamable $vgpr1, undef renamable $vgpr0, undef renamable $vgpr0, 0, 0, 0, implicit $exec181 ; CHECK-NEXT: S_ENDPGM 0182 bb.0:183 liveins: $sgpr0184 185 S_CMP_EQ_U32 killed $sgpr0, 0, implicit-def $scc186 S_CBRANCH_SCC0 %bb.2, implicit killed $scc187 188 bb.1:189 undef %0.sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec190 S_NOP 0, implicit %0191 S_BRANCH %bb.3192 193 bb.2:194 S_NOP 0, implicit-def $sgpr4_sgpr5_sgpr6_sgpr7195 %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec196 %0:vreg_64 = BUFFER_LOAD_FORMAT_XY_IDXEN killed %1, $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), addrspace 8)197 198 bb.3:199 EXP 0, killed %0.sub0, killed %0.sub1, undef %2:vgpr_32, undef %2:vgpr_32, 0, 0, 0, implicit $exec200 S_ENDPGM 0201 202...203 204# The undef subregister is not live out, no implicit def should be added for it205---206name: undef_subreg_def_live_out_tailduplicate_vreg64_undef_sub1_no_phi_use207tracksRegLiveness: true208machineFunctionInfo:209 isEntryFunction: true210 scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'211 stackPtrOffsetReg: '$sgpr32'212body: |213 ; CHECK-LABEL: name: undef_subreg_def_live_out_tailduplicate_vreg64_undef_sub1_no_phi_use214 ; CHECK: bb.0:215 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)216 ; CHECK-NEXT: liveins: $sgpr0217 ; CHECK-NEXT: {{ $}}218 ; CHECK-NEXT: S_CMP_EQ_U32 $sgpr0, 0, implicit-def $scc219 ; CHECK-NEXT: S_CBRANCH_SCC0 %bb.2, implicit killed $scc220 ; CHECK-NEXT: {{ $}}221 ; CHECK-NEXT: bb.1:222 ; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec223 ; CHECK-NEXT: EXP 0, killed renamable $vgpr0, renamable $vgpr0, undef renamable $vgpr0, undef renamable $vgpr0, 0, 0, 0, implicit $exec224 ; CHECK-NEXT: S_ENDPGM 0225 ; CHECK-NEXT: {{ $}}226 ; CHECK-NEXT: bb.2:227 ; CHECK-NEXT: S_NOP 0, implicit-def $sgpr4_sgpr5_sgpr6_sgpr7228 ; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec229 ; CHECK-NEXT: renamable $vgpr0_vgpr1 = BUFFER_LOAD_FORMAT_XY_IDXEN killed renamable $vgpr0, $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), addrspace 8)230 ; CHECK-NEXT: EXP 0, killed renamable $vgpr0, renamable $vgpr0, undef renamable $vgpr0, undef renamable $vgpr0, 0, 0, 0, implicit $exec231 ; CHECK-NEXT: S_ENDPGM 0232 bb.0:233 liveins: $sgpr0234 235 S_CMP_EQ_U32 killed $sgpr0, 0, implicit-def $scc236 S_CBRANCH_SCC0 %bb.2, implicit killed $scc237 238 bb.1:239 undef %0.sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec240 S_BRANCH %bb.3241 242 bb.2:243 S_NOP 0, implicit-def $sgpr4_sgpr5_sgpr6_sgpr7244 %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec245 %0:vreg_64 = BUFFER_LOAD_FORMAT_XY_IDXEN killed %1, $sgpr4_sgpr5_sgpr6_sgpr7, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), addrspace 8)246 247 bb.3:248 EXP 0, killed %0.sub0, killed %0.sub0, undef %2:vgpr_32, undef %2:vgpr_32, 0, 0, 0, implicit $exec249 S_ENDPGM 0250 251...252 253# In bb.2, %0 should be assigned to vgpr0_vgpr1. Make sure the value254# copied from $vgpr0 into %3 isn't clobbered by the undef phi def for255# %0.sub1.256---257name: assigned_physreg_subregister_interference258tracksRegLiveness: true259frameInfo:260 adjustsStack: true261machineFunctionInfo:262 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'263 frameOffsetReg: '$sgpr33'264 stackPtrOffsetReg: '$sgpr32'265 wwmReservedRegs:266 - '$vgpr63'267body: |268 ; CHECK-LABEL: name: assigned_physreg_subregister_interference269 ; CHECK: bb.0:270 ; CHECK-NEXT: successors: %bb.1(0x80000000)271 ; CHECK-NEXT: liveins: $sgpr30, $sgpr31, $sgpr34, $sgpr35, $sgpr36, $sgpr37, $vgpr0, $vgpr1272 ; CHECK-NEXT: {{ $}}273 ; CHECK-NEXT: $sgpr4_sgpr5 = S_OR_SAVEEXEC_B64 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec274 ; CHECK-NEXT: BUFFER_STORE_DWORD_OFFSET killed $vgpr40, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 0, 0, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)275 ; CHECK-NEXT: $exec = S_MOV_B64 killed $sgpr4_sgpr5276 ; CHECK-NEXT: $vgpr40 = SI_SPILL_S32_TO_VGPR $sgpr30, 0, $vgpr40277 ; CHECK-NEXT: $vgpr40 = SI_SPILL_S32_TO_VGPR $sgpr31, 1, $vgpr40278 ; CHECK-NEXT: $vgpr40 = SI_SPILL_S32_TO_VGPR $sgpr34, 2, $vgpr40279 ; CHECK-NEXT: $vgpr40 = SI_SPILL_S32_TO_VGPR $sgpr35, 3, $vgpr40280 ; CHECK-NEXT: $vgpr40 = SI_SPILL_S32_TO_VGPR $sgpr36, 4, $vgpr40281 ; CHECK-NEXT: $vgpr40 = SI_SPILL_S32_TO_VGPR $sgpr37, 5, $vgpr40282 ; CHECK-NEXT: renamable $sgpr34_sgpr35 = S_MOV_B64 $exec283 ; CHECK-NEXT: {{ $}}284 ; CHECK-NEXT: bb.1:285 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)286 ; CHECK-NEXT: liveins: $sgpr34_sgpr35, $vgpr0_vgpr1:0x000000000000000F287 ; CHECK-NEXT: {{ $}}288 ; CHECK-NEXT: renamable $sgpr4 = V_READFIRSTLANE_B32 $vgpr0, implicit $exec289 ; CHECK-NEXT: renamable $sgpr5 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec290 ; CHECK-NEXT: renamable $vcc = V_CMP_EQ_U64_e64 $sgpr4_sgpr5, killed $vgpr0_vgpr1, implicit $exec291 ; CHECK-NEXT: renamable $sgpr36_sgpr37 = S_AND_SAVEEXEC_B64 killed renamable $vcc, implicit-def $exec, implicit-def dead $scc, implicit $exec292 ; CHECK-NEXT: dead $sgpr30_sgpr31 = noconvergent SI_CALL killed renamable $sgpr4_sgpr5, 0, csr_amdgpu, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit-def $vgpr0293 ; CHECK-NEXT: renamable $vgpr1 = COPY $vgpr0, implicit $exec294 ; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 123, implicit $exec295 ; CHECK-NEXT: $exec = S_XOR_B64 $exec, renamable $sgpr36_sgpr37, implicit-def dead $scc296 ; CHECK-NEXT: S_CBRANCH_EXECNZ %bb.1, implicit $exec297 ; CHECK-NEXT: {{ $}}298 ; CHECK-NEXT: bb.2:299 ; CHECK-NEXT: liveins: $vgpr1, $sgpr34_sgpr35300 ; CHECK-NEXT: {{ $}}301 ; CHECK-NEXT: $exec = COPY renamable $sgpr34_sgpr35302 ; CHECK-NEXT: renamable $vgpr0 = V_ADD_U32_e32 1, killed $vgpr1, implicit $exec303 ; CHECK-NEXT: $sgpr37 = SI_RESTORE_S32_FROM_VGPR $vgpr40, 5304 ; CHECK-NEXT: $sgpr36 = SI_RESTORE_S32_FROM_VGPR $vgpr40, 4305 ; CHECK-NEXT: $sgpr35 = SI_RESTORE_S32_FROM_VGPR $vgpr40, 3306 ; CHECK-NEXT: $sgpr34 = SI_RESTORE_S32_FROM_VGPR $vgpr40, 2307 ; CHECK-NEXT: $sgpr31 = SI_RESTORE_S32_FROM_VGPR $vgpr40, 1308 ; CHECK-NEXT: $sgpr30 = SI_RESTORE_S32_FROM_VGPR $vgpr40, 0309 ; CHECK-NEXT: $sgpr4_sgpr5 = S_OR_SAVEEXEC_B64 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec310 ; CHECK-NEXT: $vgpr40 = BUFFER_LOAD_DWORD_OFFSET $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 0, 0, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)311 ; CHECK-NEXT: $exec = S_MOV_B64 killed $sgpr4_sgpr5312 ; CHECK-NEXT: SI_RETURN implicit $vgpr0313 bb.0:314 liveins: $sgpr30, $sgpr31, $sgpr34, $sgpr35, $sgpr36, $sgpr37, $vgpr0, $vgpr1, $vgpr63315 316 $vgpr63 = SI_SPILL_S32_TO_VGPR killed $sgpr30, 0, $vgpr63317 $vgpr63 = SI_SPILL_S32_TO_VGPR killed $sgpr31, 1, $vgpr63318 $vgpr63 = SI_SPILL_S32_TO_VGPR killed $sgpr34, 2, $vgpr63319 $vgpr63 = SI_SPILL_S32_TO_VGPR killed $sgpr35, 3, $vgpr63320 $vgpr63 = SI_SPILL_S32_TO_VGPR killed $sgpr36, 4, $vgpr63321 $vgpr63 = SI_SPILL_S32_TO_VGPR killed $sgpr37, 5, $vgpr63322 undef %0.sub0:vreg_64 = COPY $vgpr0323 %0.sub1:vreg_64 = COPY $vgpr1324 ADJCALLSTACKUP 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32325 renamable $sgpr34_sgpr35 = S_MOV_B64 $exec326 327 bb.1:328 liveins: $vgpr63, $sgpr34_sgpr35329 330 renamable $sgpr4 = V_READFIRSTLANE_B32 %0.sub0, implicit $exec331 renamable $sgpr5 = V_READFIRSTLANE_B32 %0.sub1, implicit $exec332 renamable $vcc = V_CMP_EQ_U64_e64 $sgpr4_sgpr5, %0, implicit $exec333 renamable $sgpr36_sgpr37 = S_AND_SAVEEXEC_B64 killed renamable $vcc, implicit-def $exec, implicit-def dead $scc, implicit $exec334 335 bb.2:336 liveins: $vgpr63, $sgpr4_sgpr5:0x000000000000000F, $sgpr34_sgpr35, $sgpr36_sgpr37337 338 dead $sgpr30_sgpr31 = noconvergent SI_CALL killed renamable $sgpr4_sgpr5, 0, csr_amdgpu, implicit $sgpr0_sgpr1_sgpr2_sgpr3, implicit-def $vgpr0339 %3:vgpr_32 = COPY $vgpr0340 undef %0.sub0:vreg_64 = V_MOV_B32_e32 123, implicit $exec341 $exec = S_XOR_B64_term $exec, killed renamable $sgpr36_sgpr37, implicit-def dead $scc342 S_CBRANCH_EXECNZ %bb.1, implicit $exec343 344 bb.3:345 liveins: $vgpr63, $sgpr34_sgpr35346 347 $exec = S_MOV_B64_term killed renamable $sgpr34_sgpr35348 349 bb.4:350 liveins: $vgpr63351 352 ADJCALLSTACKDOWN 0, 0, implicit-def dead $scc, implicit-def $sgpr32, implicit $sgpr32353 %6:vgpr_32 = V_ADD_U32_e32 1, %3, implicit $exec354 $vgpr0 = COPY %6355 $sgpr37 = SI_RESTORE_S32_FROM_VGPR $vgpr63, 5356 $sgpr36 = SI_RESTORE_S32_FROM_VGPR $vgpr63, 4357 $sgpr35 = SI_RESTORE_S32_FROM_VGPR $vgpr63, 3358 $sgpr34 = SI_RESTORE_S32_FROM_VGPR $vgpr63, 2359 $sgpr31 = SI_RESTORE_S32_FROM_VGPR $vgpr63, 1360 $sgpr30 = SI_RESTORE_S32_FROM_VGPR $vgpr63, 0361 SI_RETURN implicit $vgpr0362 363...364