|
47 | 47 | #include "llvm/Analysis/CGSCCPassManager.h"
|
48 | 48 | #include "llvm/Analysis/CallGraphSCCPass.h"
|
49 | 49 | #include "llvm/Analysis/UniformityAnalysis.h"
|
| 50 | +#include "llvm/CodeGen/DeadMachineInstructionElim.h" |
50 | 51 | #include "llvm/CodeGen/GlobalISel/CSEInfo.h"
|
51 | 52 | #include "llvm/CodeGen/GlobalISel/IRTranslator.h"
|
52 | 53 | #include "llvm/CodeGen/GlobalISel/InstructionSelect.h"
|
53 | 54 | #include "llvm/CodeGen/GlobalISel/Legalizer.h"
|
54 | 55 | #include "llvm/CodeGen/GlobalISel/Localizer.h"
|
55 | 56 | #include "llvm/CodeGen/GlobalISel/RegBankSelect.h"
|
56 | 57 | #include "llvm/CodeGen/MIRParser/MIParser.h"
|
| 58 | +#include "llvm/CodeGen/MachineCSE.h" |
57 | 59 | #include "llvm/CodeGen/MachineLICM.h"
|
58 | 60 | #include "llvm/CodeGen/Passes.h"
|
59 | 61 | #include "llvm/CodeGen/RegAllocRegistry.h"
|
@@ -1993,6 +1995,25 @@ Error AMDGPUCodeGenPassBuilder::addInstSelector(AddMachinePass &addPass) const {
|
1993 | 1995 | return Error::success();
|
1994 | 1996 | }
|
1995 | 1997 |
|
| 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 | + |
1996 | 2017 | bool AMDGPUCodeGenPassBuilder::isPassEnabled(const cl::opt<bool> &Opt,
|
1997 | 2018 | CodeGenOptLevel Level) const {
|
1998 | 2019 | if (Opt.getNumOccurrences())
|
|
0 commit comments