# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -passes="require,si-pre-emit-peephole,print" -debug-pass-manager -filetype=null %s 2>&1 | FileCheck %s # CHECK: Running analysis: MachineLoopAnalysis on vcc_and_removal_preserves_mli # CHECK-NEXT: Running analysis: MachineDominatorTreeAnalysis on vcc_and_removal_preserves_mli # CHECK-NEXT: Running pass: SIPreEmitPeepholePass on vcc_and_removal_preserves_mli # CHECK-NEXT: Invalidating analysis: MachineDominatorTreeAnalysis on vcc_and_removal_preserves_mli # CHECK-NEXT: Running pass: MachineLoopPrinterPass on vcc_and_removal_preserves_mli # CHECK-NEXT: Machine loop info for machine function 'vcc_and_removal_preserves_mli': # CHECK-NOT: Running analysis: MachineLoopAnalysis on vcc_and_removal_preserves_mli # CHECK-NEXT: Loop at depth 1 containing: %bb.1
--- name: vcc_and_removal_preserves_mli body: | bb.0: S_BRANCH %bb.1 ; S_AND gets removed bb.1: V_CMP_EQ_U32_e32 0, $vgpr0, implicit-def $vcc, implicit $exec $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc S_CBRANCH_VCCNZ %bb.1, implicit $vcc S_BRANCH %bb.2 bb.2: S_ENDPGM 0 ... # CHECK-LABEL: Running pass: SIPreEmitPeepholePass on vcc_branch_destroys_loop # CHECK-NOT: Running analysis: MachineLoopAnalysis on vcc_branch_destroys_loop # CHECK: Machine loop info for machine function 'vcc_branch_destroys_loop': # CHECK-NOT: Loop at depth --- name: vcc_branch_destroys_loop body: | bb.0: S_BRANCH %bb.1 ; After opt, S_CBRANCH_VCCZ becomes S_BRANCH %bb.3, S_BRANCH %bb.1 removed. bb.1: $vcc = S_MOV_B64 0 $vcc = S_AND_B64 $exec, $vcc, implicit-def dead $scc S_CBRANCH_VCCZ %bb.3, implicit $vcc S_BRANCH %bb.1 bb.2: S_ENDPGM 0 bb.3: S_ENDPGM 0 ...