Skip to content

Commit 2c7679b

Browse files
author
git apple-llvm automerger
committed
Merge commit '978fbd8268ce' from llvm.org/master into apple/main
2 parents 32a9d8b + 978fbd8 commit 2c7679b

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,6 +1033,12 @@ void GCNPassConfig::addPreEmitPass() {
10331033
addPass(createSIShrinkInstructionsPass());
10341034
addPass(createSIModeRegisterPass());
10351035

1036+
if (getOptLevel() > CodeGenOpt::None)
1037+
addPass(&SIInsertHardClausesID);
1038+
1039+
addPass(&SIRemoveShortExecBranchesID);
1040+
addPass(&SIInsertSkipsPassID);
1041+
addPass(&SIPreEmitPeepholeID);
10361042
// The hazard recognizer that runs as part of the post-ra scheduler does not
10371043
// guarantee to be able handle all hazards correctly. This is because if there
10381044
// are multiple scheduling regions in a basic block, the regions are scheduled
@@ -1045,12 +1051,6 @@ void GCNPassConfig::addPreEmitPass() {
10451051
// FIXME: This stand-alone pass will emit indiv. S_NOP 0, as needed. It would
10461052
// be better for it to emit S_NOP <N> when possible.
10471053
addPass(&PostRAHazardRecognizerID);
1048-
if (getOptLevel() > CodeGenOpt::None)
1049-
addPass(&SIInsertHardClausesID);
1050-
1051-
addPass(&SIRemoveShortExecBranchesID);
1052-
addPass(&SIInsertSkipsPassID);
1053-
addPass(&SIPreEmitPeepholeID);
10541054
addPass(&BranchRelaxationPassID);
10551055
}
10561056

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# RUN: llc -march=amdgcn -mcpu=gfx908 -start-before=si-pre-emit-peephole %s -o - | FileCheck -check-prefix=GCN %s
2+
3+
# Verify that the dedicated hazard recognizer pass is run after late peephole
4+
# optimizations. New hazards can be introduced if instructions are removed by
5+
# passes that are run before the final hazard recognizer.
6+
7+
---
8+
# GCN-LABEL: {{^}}mai_hazard_pass_ordering_optimize_vcc_branch:
9+
# GCN: v_accvgpr_read_b32
10+
# GCN-NEXT: s_nop
11+
# GCN-NEXT: flat_load_dword
12+
name: mai_hazard_pass_ordering_optimize_vcc_branch
13+
body: |
14+
bb.0:
15+
$vgpr0 = V_MOV_B32_e32 1, implicit $exec
16+
$vgpr2 = V_ACCVGPR_READ_B32 killed $agpr0, implicit $exec
17+
$sgpr8_sgpr9 = S_MOV_B64 -1
18+
$vgpr3 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, 0, 0, implicit $exec, implicit $flat_scr
19+
$vcc = S_ANDN2_B64 $exec, killed renamable $sgpr8_sgpr9, implicit-def dead $scc
20+
S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
21+
22+
bb.1:
23+
S_ENDPGM 0
24+
...

0 commit comments

Comments
 (0)