[AMDGPU][NFC] Only include CodeGenPassBuilder.h where needed. (#154769)
Saves around 125-210 MB of compilation memory usage per source for roughly one third of our backend sources, ~60 MB on average.
This commit is contained in:
parent
1b4fe26343
commit
faca8c9ed4
@ -18,6 +18,7 @@
|
||||
#include "llvm/Analysis/AssumptionCache.h"
|
||||
#include "llvm/Analysis/ConstantFolding.h"
|
||||
#include "llvm/Analysis/TargetLibraryInfo.h"
|
||||
#include "llvm/Analysis/TargetTransformInfo.h"
|
||||
#include "llvm/Analysis/UniformityAnalysis.h"
|
||||
#include "llvm/Analysis/ValueTracking.h"
|
||||
#include "llvm/CodeGen/TargetPassConfig.h"
|
||||
@ -26,6 +27,7 @@
|
||||
#include "llvm/IR/InstVisitor.h"
|
||||
#include "llvm/IR/IntrinsicsAMDGPU.h"
|
||||
#include "llvm/IR/PatternMatch.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Support/KnownBits.h"
|
||||
#include "llvm/Support/KnownFPClass.h"
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "llvm/CodeGen/SelectionDAGISel.h"
|
||||
#include "llvm/CodeGen/SelectionDAGNodes.h"
|
||||
#include "llvm/IR/IntrinsicsAMDGPU.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
|
||||
#ifdef EXPENSIVE_CHECKS
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "llvm/IR/IRBuilder.h"
|
||||
#include "llvm/IR/InstVisitor.h"
|
||||
#include "llvm/IR/IntrinsicsAMDGPU.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/KnownBits.h"
|
||||
#include "llvm/Transforms/Utils/Local.h"
|
||||
|
@ -225,6 +225,7 @@
|
||||
#include "llvm/ADT/SetOperations.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/Analysis/InstSimplifyFolder.h"
|
||||
#include "llvm/Analysis/TargetTransformInfo.h"
|
||||
#include "llvm/Analysis/Utils/Local.h"
|
||||
#include "llvm/CodeGen/TargetPassConfig.h"
|
||||
#include "llvm/IR/AttributeMask.h"
|
||||
@ -243,6 +244,7 @@
|
||||
#include "llvm/IR/PatternMatch.h"
|
||||
#include "llvm/IR/ReplaceConstant.h"
|
||||
#include "llvm/IR/ValueHandle.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Support/AMDGPUAddrSpace.h"
|
||||
#include "llvm/Support/Alignment.h"
|
||||
|
@ -190,12 +190,14 @@
|
||||
#include "llvm/CodeGen/TargetPassConfig.h"
|
||||
#include "llvm/IR/Constants.h"
|
||||
#include "llvm/IR/DerivedTypes.h"
|
||||
#include "llvm/IR/Dominators.h"
|
||||
#include "llvm/IR/IRBuilder.h"
|
||||
#include "llvm/IR/InlineAsm.h"
|
||||
#include "llvm/IR/Instructions.h"
|
||||
#include "llvm/IR/IntrinsicsAMDGPU.h"
|
||||
#include "llvm/IR/MDBuilder.h"
|
||||
#include "llvm/IR/ReplaceConstant.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/Pass.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
|
@ -90,6 +90,7 @@
|
||||
#include "llvm/IR/PatternMatch.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/MC/TargetRegistry.h"
|
||||
#include "llvm/Passes/CodeGenPassBuilder.h"
|
||||
#include "llvm/Passes/PassBuilder.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/FormatVariadic.h"
|
||||
@ -125,6 +126,44 @@ using namespace llvm;
|
||||
using namespace llvm::PatternMatch;
|
||||
|
||||
namespace {
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AMDGPU CodeGen Pass Builder interface.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class AMDGPUCodeGenPassBuilder
|
||||
: public CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine> {
|
||||
using Base = CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine>;
|
||||
|
||||
public:
|
||||
AMDGPUCodeGenPassBuilder(GCNTargetMachine &TM,
|
||||
const CGPassBuilderOption &Opts,
|
||||
PassInstrumentationCallbacks *PIC);
|
||||
|
||||
void addIRPasses(AddIRPass &) const;
|
||||
void addCodeGenPrepare(AddIRPass &) const;
|
||||
void addPreISel(AddIRPass &addPass) const;
|
||||
void addILPOpts(AddMachinePass &) const;
|
||||
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
|
||||
Error addInstSelector(AddMachinePass &) const;
|
||||
void addPreRewrite(AddMachinePass &) const;
|
||||
void addMachineSSAOptimization(AddMachinePass &) const;
|
||||
void addPostRegAlloc(AddMachinePass &) const;
|
||||
void addPreEmitPass(AddMachinePass &) const;
|
||||
void addPreEmitRegAlloc(AddMachinePass &) const;
|
||||
Error addRegAssignmentOptimized(AddMachinePass &) const;
|
||||
void addPreRegAlloc(AddMachinePass &) const;
|
||||
void addOptimizedRegAlloc(AddMachinePass &) const;
|
||||
void addPreSched2(AddMachinePass &) const;
|
||||
|
||||
/// Check if a pass is enabled given \p Opt option. The option always
|
||||
/// overrides defaults if explicitly used. Otherwise its default will be used
|
||||
/// given that a pass shall work at an optimization \p Level minimum.
|
||||
bool isPassEnabled(const cl::opt<bool> &Opt,
|
||||
CodeGenOptLevel Level = CodeGenOptLevel::Default) const;
|
||||
void addEarlyCSEOrGVNPass(AddIRPass &) const;
|
||||
void addStraightLineScalarOptimizationPasses(AddIRPass &) const;
|
||||
};
|
||||
|
||||
class SGPRRegisterRegAlloc : public RegisterRegAllocBase<SGPRRegisterRegAlloc> {
|
||||
public:
|
||||
SGPRRegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C)
|
||||
|
@ -18,7 +18,6 @@
|
||||
#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"
|
||||
#include "llvm/CodeGen/TargetPassConfig.h"
|
||||
#include "llvm/MC/MCStreamer.h"
|
||||
#include "llvm/Passes/CodeGenPassBuilder.h"
|
||||
#include <optional>
|
||||
#include <utility>
|
||||
|
||||
@ -158,44 +157,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// AMDGPU CodeGen Pass Builder interface.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class AMDGPUCodeGenPassBuilder
|
||||
: public CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine> {
|
||||
using Base = CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine>;
|
||||
|
||||
public:
|
||||
AMDGPUCodeGenPassBuilder(GCNTargetMachine &TM,
|
||||
const CGPassBuilderOption &Opts,
|
||||
PassInstrumentationCallbacks *PIC);
|
||||
|
||||
void addIRPasses(AddIRPass &) const;
|
||||
void addCodeGenPrepare(AddIRPass &) const;
|
||||
void addPreISel(AddIRPass &addPass) const;
|
||||
void addILPOpts(AddMachinePass &) const;
|
||||
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
|
||||
Error addInstSelector(AddMachinePass &) const;
|
||||
void addPreRewrite(AddMachinePass &) const;
|
||||
void addMachineSSAOptimization(AddMachinePass &) const;
|
||||
void addPostRegAlloc(AddMachinePass &) const;
|
||||
void addPreEmitPass(AddMachinePass &) const;
|
||||
void addPreEmitRegAlloc(AddMachinePass &) const;
|
||||
Error addRegAssignmentOptimized(AddMachinePass &) const;
|
||||
void addPreRegAlloc(AddMachinePass &) const;
|
||||
void addOptimizedRegAlloc(AddMachinePass &) const;
|
||||
void addPreSched2(AddMachinePass &) const;
|
||||
|
||||
/// Check if a pass is enabled given \p Opt option. The option always
|
||||
/// overrides defaults if explicitly used. Otherwise its default will be used
|
||||
/// given that a pass shall work at an optimization \p Level minimum.
|
||||
bool isPassEnabled(const cl::opt<bool> &Opt,
|
||||
CodeGenOptLevel Level = CodeGenOptLevel::Default) const;
|
||||
void addEarlyCSEOrGVNPass(AddIRPass &) const;
|
||||
void addStraightLineScalarOptimizationPasses(AddIRPass &) const;
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif // LLVM_LIB_TARGET_AMDGPU_AMDGPUTARGETMACHINE_H
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/IR/IntrinsicsAMDGPU.h"
|
||||
#include "llvm/IR/IntrinsicsR600.h"
|
||||
#include "llvm/Passes/CodeGenPassBuilder.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "R600MachineFunctionInfo.h"
|
||||
#include "R600MachineScheduler.h"
|
||||
#include "R600TargetTransformInfo.h"
|
||||
#include "llvm/Passes/CodeGenPassBuilder.h"
|
||||
#include "llvm/Transforms/Scalar.h"
|
||||
#include <optional>
|
||||
|
||||
@ -46,6 +47,21 @@ static MachineSchedRegistry R600SchedRegistry("r600",
|
||||
"Run R600's custom scheduler",
|
||||
createR600MachineScheduler);
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// R600 CodeGen Pass Builder interface.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class R600CodeGenPassBuilder
|
||||
: public CodeGenPassBuilder<R600CodeGenPassBuilder, R600TargetMachine> {
|
||||
public:
|
||||
R600CodeGenPassBuilder(R600TargetMachine &TM, const CGPassBuilderOption &Opts,
|
||||
PassInstrumentationCallbacks *PIC);
|
||||
|
||||
void addPreISel(AddIRPass &addPass) const;
|
||||
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
|
||||
Error addInstSelector(AddMachinePass &) const;
|
||||
};
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// R600 Target Machine (R600 -> Cayman)
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -57,21 +57,6 @@ public:
|
||||
createMachineScheduler(MachineSchedContext *C) const override;
|
||||
};
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// R600 CodeGen Pass Builder interface.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class R600CodeGenPassBuilder
|
||||
: public CodeGenPassBuilder<R600CodeGenPassBuilder, R600TargetMachine> {
|
||||
public:
|
||||
R600CodeGenPassBuilder(R600TargetMachine &TM, const CGPassBuilderOption &Opts,
|
||||
PassInstrumentationCallbacks *PIC);
|
||||
|
||||
void addPreISel(AddIRPass &addPass) const;
|
||||
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
|
||||
Error addInstSelector(AddMachinePass &) const;
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif // LLVM_LIB_TARGET_AMDGPU_R600TARGETMACHINE_H
|
||||
|
@ -16,12 +16,14 @@
|
||||
#include "GCNSubtarget.h"
|
||||
#include "llvm/Analysis/LoopInfo.h"
|
||||
#include "llvm/Analysis/UniformityAnalysis.h"
|
||||
#include "llvm/CodeGen/MachineDominators.h"
|
||||
#include "llvm/CodeGen/TargetPassConfig.h"
|
||||
#include "llvm/IR/BasicBlock.h"
|
||||
#include "llvm/IR/Constants.h"
|
||||
#include "llvm/IR/Dominators.h"
|
||||
#include "llvm/IR/IRBuilder.h"
|
||||
#include "llvm/IR/IntrinsicsAMDGPU.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
|
||||
#include "llvm/Transforms/Utils/Local.h"
|
||||
|
@ -32,11 +32,15 @@
|
||||
#include "llvm/ADT/PostOrderIterator.h"
|
||||
#include "llvm/ADT/Sequence.h"
|
||||
#include "llvm/Analysis/AliasAnalysis.h"
|
||||
#include "llvm/CodeGen/MachineFrameInfo.h"
|
||||
#include "llvm/CodeGen/MachineLoopInfo.h"
|
||||
#include "llvm/CodeGen/MachinePassManager.h"
|
||||
#include "llvm/CodeGen/MachinePostDominators.h"
|
||||
#include "llvm/IR/Dominators.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
#include "llvm/Support/DebugCounter.h"
|
||||
#include "llvm/TargetParser/TargetParser.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
#define DEBUG_TYPE "si-insert-waitcnts"
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "SIMachineFunctionInfo.h"
|
||||
#include "llvm/CodeGen/MachineDominators.h"
|
||||
#include "llvm/CodeGen/MachinePassManager.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "llvm/CodeGen/MachineDominators.h"
|
||||
#include "llvm/CodeGen/MachineFrameInfo.h"
|
||||
#include "llvm/CodeGen/RegisterScavenging.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
|
@ -80,6 +80,7 @@
|
||||
#include "llvm/CodeGen/MachineDominators.h"
|
||||
#include "llvm/CodeGen/MachineLoopInfo.h"
|
||||
#include "llvm/CodeGen/TargetRegisterInfo.h"
|
||||
#include "llvm/IR/Dominators.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "llvm/CodeGen/MachineFunctionPass.h"
|
||||
#include "llvm/CodeGen/RegisterClassInfo.h"
|
||||
#include "llvm/CodeGen/VirtRegMap.h"
|
||||
#include "llvm/InitializePasses.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "AMDGPUUnitTests.h"
|
||||
#include "llvm/CodeGen/GlobalISel/CSEInfo.h"
|
||||
#include "llvm/CodeGen/GlobalISel/CSEMIRBuilder.h"
|
||||
#include "llvm/CodeGen/MachineModuleInfo.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
Loading…
x
Reference in New Issue
Block a user