brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · 654461a Raw
82 lines · plain
1# RUN: not llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx908 -start-before=greedy,0 -stop-after=virtregrewriter,1 -verify-machineinstrs -o - 2> %t.err %s | FileCheck %s2# RUN: FileCheck -check-prefix=ERR %s < %t.err3 4# ERR: error: register allocation failed: maximum depth for recoloring reached. Use -fexhaustive-register-search to skip cutoffs5# ERR-NEXT: error: <unknown>:0:0: ran out of registers during register allocation6 7# This testcase used to fail with an "overlapping insert" assertion8# when trying to roll back an unsucessful recoloring of %25. One of9# the interfering vregs is successfully recolored, and the other is10# not. We need to roll back the successfully recolored interfering11# vreg in order to avoid conflicting with the original assignment of12# the original register when rolling back the second.13 14 15# %25 initially assigned to $sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr6716#   interfering candidates %15 %1717#    assigned %15 to $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr1518#    %1519#          %18 -> normal recolored $sgpr28_sgpr29_sgpr30_sgpr3120 #         %20 -> normal recolored $sgpr60_sgpr61_sgpr62_sgpr6321#    %17 candidates %37 %3922#       tentative assign %17 $sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr9123#      %37 to $sgpr72_sgpr73_sgpr74_sgpr75 succeeded24#      %39 last chance recoloring, fails max depth25#    Fail to assign: %17 to $sgpr84_sgpr85_sgpr86_sgpr87_sgpr88_sgpr89_sgpr90_sgpr91 at depth 426#         %37  reassign to $sgpr84_sgpr85_sgpr86_sgpr87  unassign from $sgpr72_sgpr73_sgpr74_sgpr7527#         %39  reassign to $sgpr88_sgpr89_sgpr90_sgpr9128#    %17 candidates %39 %4129#      Try to assign: %17 to $sgpr88_sgpr89_sgpr90_sgpr91_sgpr92_sgpr93_sgpr94_sgpr9530#         %39 Try assign to $sgpr72_sgpr73_sgpr74_sgpr75 succeeded31#         %41 last chance recoloring, fail max depth32#         %39  reassign to $sgpr88_sgpr89_sgpr90_sgpr91  unassign from $sgpr72_sgpr73_sgpr74_sgpr7533#         %41  reassign to $sgpr92_sgpr93_sgpr94_sgpr9534#    %17 candidates %41 %1635#         Try assign %41 to $sgpr72_sgpr73_sgpr74_sgpr75 succeeded36#         %16 last chance recolor, fail max depth37#    fail to recolor %1738#39# Have to roll back the succesful recoloring of %15 when %17's40# recoloring failed. Previously we would leave the recoloring of %1841# and %20 in place. The recoloring of %20 to42# $sgpr60_sgpr61_sgpr62_sgpr63 conflicts with the parent restore of43# %25 to $sgpr60_sgpr61_sgpr62_sgpr63_sgpr64_sgpr65_sgpr66_sgpr6744 45# CHECK-LABEL: name: issue4847346# CHECK: S_NOP 0, implicit killed renamable $sgpr20_sgpr21_sgpr22_sgpr23, implicit killed renamable $sgpr88_sgpr89_sgpr90_sgpr91, implicit killed renamable $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, implicit killed renamable $sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15, implicit killed renamable $sgpr40_sgpr41_sgpr42_sgpr43, implicit killed renamable $sgpr56_sgpr57_sgpr58_sgpr59_sgpr60_sgpr61_sgpr62_sgpr63, implicit killed renamable $sgpr36_sgpr37_sgpr38_sgpr39, implicit killed renamable $sgpr72_sgpr73_sgpr74_sgpr75_sgpr76_sgpr77_sgpr78_sgpr79, implicit killed renamable $sgpr80_sgpr81_sgpr82_sgpr83, implicit killed renamable $sgpr64_sgpr65_sgpr66_sgpr67_sgpr68_sgpr69_sgpr70_sgpr71, implicit killed renamable $sgpr16_sgpr17_sgpr18_sgpr19, implicit killed renamable $sgpr92_sgpr93_sgpr94_sgpr95_sgpr96_sgpr97_sgpr98_sgpr99, implicit killed renamable $sgpr84_sgpr85_sgpr86_sgpr87, implicit killed renamable $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55, implicit renamable $sgpr48_sgpr49_sgpr50_sgpr51_sgpr52_sgpr53_sgpr54_sgpr55, implicit undef $sgpr0_sgpr1_sgpr2_sgpr3, implicit killed renamable $sgpr44_sgpr45_sgpr46_sgpr47, implicit killed renamable $sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr3147 48---49name:            issue4847350tracksRegLiveness: true51machineFunctionInfo:52  isEntryFunction: true53  scratchRSrcReg:  '$sgpr100_sgpr101_sgpr102_sgpr103'54  stackPtrOffsetReg: '$sgpr32'55  argumentInfo:56    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }57    privateSegmentWaveByteOffset: { reg: '$sgpr4' }58  occupancy:       2059body:             |60  bb.0:61    liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4_sgpr5_sgpr6_sgpr762 63    %0:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr364    %1:sgpr_128 = COPY $sgpr4_sgpr5_sgpr6_sgpr765    %2:sgpr_256 = S_LOAD_DWORDX8_IMM undef %3:sgpr_64, 1000, 0 :: (load 32, addrspace 6)66    %4:sgpr_256 = S_LOAD_DWORDX8_IMM undef %3:sgpr_64, 1088, 0 :: (load 32, addrspace 6)67    %5:sgpr_256 = S_LOAD_DWORDX8_IMM undef %3:sgpr_64, 1152, 0 :: (load 32, addrspace 6)68    %6:sgpr_256 = S_LOAD_DWORDX8_IMM undef %3:sgpr_64, 1216, 0 :: (load 32, addrspace 6)69    %7:sgpr_256 = S_LOAD_DWORDX8_IMM undef %3:sgpr_64, 1280, 0 :: (load 32, addrspace 6)70    %8:sgpr_256 = S_LOAD_DWORDX8_IMM undef %3:sgpr_64, 1408, 0 :: (load 32, addrspace 6)71    %9:sgpr_128 = S_LOAD_DWORDX4_IMM undef %3:sgpr_64, 0, 0 :: (load 16, addrspace 6)72    %10:sgpr_128 = S_LOAD_DWORDX4_IMM undef %3:sgpr_64, 0, 0 :: (load 16, addrspace 6)73    %11:sgpr_128 = S_LOAD_DWORDX4_IMM undef %3:sgpr_64, 0, 0 :: (load 16, addrspace 6)74    %12:sgpr_128 = S_LOAD_DWORDX4_IMM undef %3:sgpr_64, 0, 0 :: (load 16, addrspace 6)75    %13:sgpr_128 = S_LOAD_DWORDX4_IMM undef %3:sgpr_64, 0, 0 :: (load 16, addrspace 6)76    %14:sgpr_128 = IMPLICIT_DEF77    S_NOP 0, implicit-def %15:sgpr_256, implicit-def %16:sgpr_128, implicit-def %17:sgpr_25678    S_NOP 0, implicit %0, implicit %1, implicit %2, implicit %4, implicit %9, implicit %5, implicit %10, implicit %6, implicit %11, implicit %8, implicit %13, implicit %7, implicit %12, implicit %17, implicit %17, implicit %16, implicit %14, implicit %1579    S_ENDPGM 080 81...82