brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 35f0399 Raw
99 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -o - -verify-coalescing -run-pass=register-coalescer %s | FileCheck -check-prefix=GCN %s3 4---5# Do not rematerialize V_MOV_B32 at COPY because source register %1 is killed.6 7name:            no_remat_killed_src_in_inst8tracksRegLiveness: true9body:             |10  bb.0:11    liveins: $vgpr012 13    ; GCN-LABEL: name: no_remat_killed_src_in_inst14    ; GCN: liveins: $vgpr015    ; GCN-NEXT: {{  $}}16    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr017    ; GCN-NEXT: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 1, [[COPY]], implicit $exec18    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 [[V_ADD_U32_e32_]], implicit $exec19    ; GCN-NEXT: $vgpr0 = COPY [[V_MOV_B32_e32_]]20    ; GCN-NEXT: SI_RETURN_TO_EPILOG $vgpr021    %0:vgpr_32 = COPY $vgpr022    %1:vgpr_32 = V_ADD_U32_e32 1, %0, implicit $exec23    %2:vgpr_32 = V_MOV_B32_e32 killed %1, implicit $exec24    $vgpr0 = COPY killed %225    SI_RETURN_TO_EPILOG killed $vgpr026...27---28# Do not rematerialize V_MOV_B32 at COPY because source register %1 is killed29# after the MOV but before the COPY.30 31name:            no_remat_killed_src_after_inst32tracksRegLiveness: true33body:             |34  bb.0:35    liveins: $vgpr036 37    ; GCN-LABEL: name: no_remat_killed_src_after_inst38    ; GCN: liveins: $vgpr039    ; GCN-NEXT: {{  $}}40    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr041    ; GCN-NEXT: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 1, [[COPY]], implicit $exec42    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 [[V_ADD_U32_e32_]], implicit $exec43    ; GCN-NEXT: KILL [[V_ADD_U32_e32_]]44    ; GCN-NEXT: $vgpr0 = COPY [[V_MOV_B32_e32_]]45    ; GCN-NEXT: SI_RETURN_TO_EPILOG $vgpr046    %0:vgpr_32 = COPY $vgpr047    %1:vgpr_32 = V_ADD_U32_e32 1, %0, implicit $exec48    %2:vgpr_32 = V_MOV_B32_e32 %1, implicit $exec49    KILL %150    $vgpr0 = COPY killed %251    SI_RETURN_TO_EPILOG killed $vgpr052...53---54# Even if %1 is not killed do not rematerialize V_MOV_B32 so that we do not55# extend %1 liverange.56 57name:            no_remat_alive_src_in_inst_unused58tracksRegLiveness: true59body:             |60  bb.0:61    liveins: $vgpr062 63    ; GCN-LABEL: name: no_remat_alive_src_in_inst_unused64    ; GCN: liveins: $vgpr065    ; GCN-NEXT: {{  $}}66    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr067    ; GCN-NEXT: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 1, [[COPY]], implicit $exec68    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 [[V_ADD_U32_e32_]], implicit $exec69    ; GCN-NEXT: $vgpr0 = COPY [[V_MOV_B32_e32_]]70    ; GCN-NEXT: SI_RETURN_TO_EPILOG $vgpr071    %0:vgpr_32 = COPY $vgpr072    %1:vgpr_32 = V_ADD_U32_e32 1, %0, implicit $exec73    %2:vgpr_32 = V_MOV_B32_e32 %1, implicit $exec74    $vgpr0 = COPY killed %275    SI_RETURN_TO_EPILOG killed $vgpr076...77---78# Rematerialize V_MOV_B32 since %1 is available at COPY and still alive.79 80name:            remat_alive_src_in_inst_used_and_available81tracksRegLiveness: true82body:             |83  bb.0:84    liveins: $vgpr085 86    ; GCN-LABEL: name: remat_alive_src_in_inst_used_and_available87    ; GCN: liveins: $vgpr088    ; GCN-NEXT: {{  $}}89    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr090    ; GCN-NEXT: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 1, [[COPY]], implicit $exec91    ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 [[V_ADD_U32_e32_]], implicit $exec92    ; GCN-NEXT: SI_RETURN_TO_EPILOG $vgpr0, implicit [[V_ADD_U32_e32_]]93    %0:vgpr_32 = COPY $vgpr094    %1:vgpr_32 = V_ADD_U32_e32 1, %0, implicit $exec95    %2:vgpr_32 = V_MOV_B32_e32 %1, implicit $exec96    $vgpr0 = COPY killed %297    SI_RETURN_TO_EPILOG killed $vgpr0, implicit %198...99