Skip to content

Commit 039e6f8

Browse files
authored
[AMDGPU][NewPM] Fill out AMDGPU addMachineSSAOptimizations (#111658)
Implement the addMachineSSAOptimizations passes for AMDGPU. Porting the other generic passes in this category is WIP.
1 parent c36f902 commit 039e6f8

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,15 @@
4747
#include "llvm/Analysis/CGSCCPassManager.h"
4848
#include "llvm/Analysis/CallGraphSCCPass.h"
4949
#include "llvm/Analysis/UniformityAnalysis.h"
50+
#include "llvm/CodeGen/DeadMachineInstructionElim.h"
5051
#include "llvm/CodeGen/GlobalISel/CSEInfo.h"
5152
#include "llvm/CodeGen/GlobalISel/IRTranslator.h"
5253
#include "llvm/CodeGen/GlobalISel/InstructionSelect.h"
5354
#include "llvm/CodeGen/GlobalISel/Legalizer.h"
5455
#include "llvm/CodeGen/GlobalISel/Localizer.h"
5556
#include "llvm/CodeGen/GlobalISel/RegBankSelect.h"
5657
#include "llvm/CodeGen/MIRParser/MIParser.h"
58+
#include "llvm/CodeGen/MachineCSE.h"
5759
#include "llvm/CodeGen/MachineLICM.h"
5860
#include "llvm/CodeGen/Passes.h"
5961
#include "llvm/CodeGen/RegAllocRegistry.h"
@@ -1993,6 +1995,25 @@ Error AMDGPUCodeGenPassBuilder::addInstSelector(AddMachinePass &addPass) const {
19931995
return Error::success();
19941996
}
19951997

1998+
void AMDGPUCodeGenPassBuilder::addMachineSSAOptimization(
1999+
AddMachinePass &addPass) const {
2000+
Base::addMachineSSAOptimization(addPass);
2001+
2002+
addPass(SIFoldOperandsPass());
2003+
if (EnableDPPCombine) {
2004+
addPass(GCNDPPCombinePass());
2005+
}
2006+
addPass(SILoadStoreOptimizerPass());
2007+
if (isPassEnabled(EnableSDWAPeephole)) {
2008+
addPass(SIPeepholeSDWAPass());
2009+
addPass(EarlyMachineLICMPass());
2010+
addPass(MachineCSEPass());
2011+
addPass(SIFoldOperandsPass());
2012+
}
2013+
addPass(DeadMachineInstructionElimPass());
2014+
addPass(SIShrinkInstructionsPass());
2015+
}
2016+
19962017
bool AMDGPUCodeGenPassBuilder::isPassEnabled(const cl::opt<bool> &Opt,
19972018
CodeGenOptLevel Level) const {
19982019
if (Opt.getNumOccurrences())

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ class AMDGPUCodeGenPassBuilder
174174
void addPreISel(AddIRPass &addPass) const;
175175
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
176176
Error addInstSelector(AddMachinePass &) const;
177+
void addMachineSSAOptimization(AddMachinePass &) const;
177178

178179
/// Check if a pass is enabled given \p Opt option. The option always
179180
/// overrides defaults if explicitly used. Otherwise its default will be used

0 commit comments

Comments
 (0)