Mercurial > hg > CbC > CbC_llvm
view llvm/test/CodeGen/AMDGPU/phi-elimination-assertion.mir @ 206:f17a3b42b08b
Added tag before-12 for changeset b7591485f4cd
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 07 Jun 2021 21:25:57 +0900 |
parents | 1d019706d866 |
children |
line wrap: on
line source
# RUN: llc -mtriple amdgcn -run-pass livevars -run-pass phi-node-elimination -o - %s | FileCheck %s ################################################################################ # This test used to hit an assert in PHIElimination: # PHIElimination::LowerPHINode(llvm::MachineBasicBlock&, llvm::MachineBasicBlock::iterator): Assertion `KillInst->readsRegister(SrcReg) && "Cannot find kill instruction"' --- name: foo tracksRegLiveness: true body: | bb.0: S_CBRANCH_SCC0 %bb.2, implicit undef $scc bb.1: %1:sreg_32_xm0 = S_MOV_B32 255 S_BRANCH %bb.3 bb.2: %2:sreg_32_xm0 = S_MOV_B32 254 bb.3: dead %3:sreg_32_xm0 = PHI undef %2, %bb.2, undef %1, %bb.1 %4:sreg_32_xm0 = PHI %2, %bb.2, %1, %bb.1 S_NOP 0, implicit %4 ... # CHECK-LABEL: name: foo # CHECK: bb.3: # CHECK-NEXT: dead %2:sreg_32_xm0 = IMPLICIT_DEF # CHECK-NEXT: %3:sreg_32_xm0 = COPY killed %4 # CHECK-NEXT: S_NOP 0, implicit killed %3 ################################################################################ # Similar test as above, but with swapped order for the PHI nodes. # With this PHI node order we did not hit the assert, but we used to get # # bb.3: # dead %3:sreg_32_xm0 = COPY killed %4 # %2:sreg_32_xm0 = COPY %4 # S_NOP 0, implicit killed %2 # # which looks weird regarding killed flags for %4. --- name: bar tracksRegLiveness: true body: | bb.0: S_CBRANCH_SCC0 %bb.2, implicit undef $scc bb.1: %1:sreg_32_xm0 = S_MOV_B32 255 S_BRANCH %bb.3 bb.2: %2:sreg_32_xm0 = S_MOV_B32 254 bb.3: %4:sreg_32_xm0 = PHI %2, %bb.2, %1, %bb.1 dead %3:sreg_32_xm0 = PHI undef %2, %bb.2, undef %1, %bb.1 S_NOP 0, implicit %4 ... # CHECK-LABEL: name: bar # CHECK: bb.3: # CHECK-NEXT: dead %3:sreg_32_xm0 = IMPLICIT_DEF # CHECK-NEXT: %2:sreg_32_xm0 = COPY killed %4 # CHECK-NEXT: S_NOP 0, implicit killed %2 # The following test crashes in phi-elimination hooks. # --- name: bax tracksRegLiveness: true body: | bb.0: S_CBRANCH_SCC0 %bb.2, implicit undef $scc bb.1: %1:sreg_32_xm0 = S_MOV_B32 255 S_BRANCH %bb.3 bb.2: %2:sreg_32_xm0 = S_MOV_B32 254 bb.3: %3:sreg_32_xm0 = PHI %2, %bb.2, %1, %bb.1 ... # CHECK-LABEL: name: bax # CHECK: bb.3: # CHECK-NEXT: %2:sreg_32_xm0 = COPY killed %3