brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.4 KiB · 86b6c59 Raw
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