| # RUN: llc -march=amdgcn -mcpu=gfx1030 -verify-machineinstrs -run-pass=greedy -stress-regalloc=2 %s -o - | FileCheck -check-prefix=GCN %s |
| |
| # Make sure there's no verifier error after register allocation |
| # introduces vreg defs when the MIR parser infers SSA. |
| |
| --- |
| name: ra_introduces_vreg_def |
| tracksRegLiveness: true |
| machineFunctionInfo: |
| scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3' |
| frameOffsetReg: '$sgpr33' |
| stackPtrOffsetReg: '$sgpr32' |
| argumentInfo: |
| privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } |
| body: | |
| ; GCN-LABEL: name: ra_introduces_vreg_def |
| ; GCN: [[COPY_V0:%[0-9]+]]:vgpr_32 = COPY $vgpr0 |
| ; GCN: [[COPY_V0]]:vgpr_32 = |
| bb.0: |
| liveins: $vgpr0, $vgpr1 |
| %0:vgpr_32 = COPY $vgpr0 |
| %1:vgpr_32 = COPY $vgpr1 |
| S_NOP 0, implicit %0 |
| S_NOP 0, implicit %1 |
| |
| bb.1: |
| $vgpr0 = V_MOV_B32_e32 0, implicit $exec |
| $vgpr1 = V_MOV_B32_e32 1, implicit $exec |
| S_NOP 0, implicit %0 |
| S_NOP 0, implicit %1 |
| |
| bb.2: |
| S_CBRANCH_EXECNZ %bb.1, implicit $exec |
| |
| bb.3: |
| $exec_lo = S_OR_B32 $exec_lo, undef $sgpr4, implicit-def $scc |
| $vgpr0 = COPY %0 |
| S_SETPC_B64_return undef $sgpr30_sgpr31, implicit $vgpr0 |
| |
| ... |