| # REQUIRES: asserts |
| # RUN: llc -mtriple=amdgcn-- -verify-machineinstrs -debug-only=regalloc -run-pass=greedy -o /dev/null %s 2>&1 | FileCheck %s |
| |
| --- |
| # Check that physreg candidate is not used since cannot be spilled in a block, |
| # e.g. before exec mask preamble |
| # CHECK: , cannot spill all interferences. |
| |
| name: foo |
| tracksRegLiveness: true |
| machineFunctionInfo: |
| scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3 |
| stackPtrOffsetReg: $sgpr32 |
| body: | |
| bb.0: |
| liveins: $sgpr96_sgpr97, $sgpr98_sgpr99, $sgpr100_sgpr101, $sgpr102_sgpr103 |
| |
| %0:sreg_64 = COPY $sgpr102_sgpr103 |
| %1:sgpr_128 = COPY $sgpr100_sgpr101_sgpr102_sgpr103 |
| %2:sgpr_128 = COPY %1 |
| %3:sgpr_128 = COPY %1 |
| %4:sgpr_128 = COPY %1 |
| %5:sgpr_128 = COPY %1 |
| %6:sgpr_128 = COPY %1 |
| %7:sgpr_128 = COPY %1 |
| %8:sgpr_128 = COPY %1 |
| %9:sgpr_128 = COPY %1 |
| %10:sgpr_128 = COPY %1 |
| %11:sgpr_128 = COPY %1 |
| %12:sgpr_128 = COPY %1 |
| %13:sgpr_128 = COPY %1 |
| %14:sgpr_128 = COPY %1 |
| %15:sgpr_128 = COPY %1 |
| %16:sgpr_128 = COPY %1 |
| %17:sgpr_128 = COPY %1 |
| %18:sgpr_128 = COPY %1 |
| %19:sgpr_128 = COPY %1 |
| %20:sgpr_128 = COPY %1 |
| %21:sgpr_128 = COPY %1 |
| %22:sgpr_128 = COPY %1 |
| %23:sgpr_128 = COPY %1 |
| %24:sgpr_128 = COPY %1 |
| %25:sgpr_128 = COPY %1 |
| %26:sgpr_128 = COPY %1 |
| S_BRANCH %bb.1 |
| |
| bb.1: |
| liveins: $sgpr96_sgpr97, $sgpr98_sgpr99, $sgpr102_sgpr103 |
| |
| %0:sreg_64 = S_OR_SAVEEXEC_B64 $sgpr96_sgpr97, implicit-def $exec, implicit-def $scc, implicit $exec |
| $exec = S_XOR_B64_term $exec, %0, implicit-def $scc |
| S_CBRANCH_EXECZ %bb.3, implicit $exec |
| S_BRANCH %bb.2 |
| |
| bb.2: |
| liveins: $sgpr98_sgpr99, $sgpr102_sgpr103 |
| |
| %0:sreg_64 = S_OR_SAVEEXEC_B64 $sgpr98_sgpr99, implicit-def $exec, implicit-def $scc, implicit $exec |
| $exec = S_XOR_B64_term $exec, %0, implicit-def $scc |
| S_CBRANCH_EXECZ %bb.3, implicit $exec |
| S_BRANCH %bb.4 |
| |
| bb.3: |
| liveins: $sgpr102_sgpr103 |
| |
| %0:sreg_64 = S_OR_SAVEEXEC_B64 $sgpr102_sgpr103, implicit-def $exec, implicit-def $scc, implicit $exec |
| $exec = S_XOR_B64_term $exec, %0, implicit-def $scc |
| S_BRANCH %bb.4 |
| |
| bb.4: |
| S_CMP_EQ_U64 %1.sub0_sub1, %2.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %3.sub0_sub1, %4.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %5.sub0_sub1, %6.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %7.sub0_sub1, %8.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %9.sub0_sub1, %10.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %11.sub0_sub1, %12.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %13.sub0_sub1, %14.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %15.sub0_sub1, %16.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %17.sub0_sub1, %18.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %19.sub0_sub1, %20.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %21.sub0_sub1, %22.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %23.sub0_sub1, %24.sub2_sub3, implicit-def $scc |
| S_CMP_EQ_U64 %25.sub0_sub1, %26.sub2_sub3, implicit-def $scc |
| $vgpr0 = V_MOV_B32_e32 0, implicit $exec |
| S_SETPC_B64_return undef $sgpr30_sgpr31, implicit %0, implicit $vgpr0 |
| ... |