Skip to content

Commit

Permalink
[AMDGPU] isPassEnabled() helper to check cl::opt and OptLevel
Browse files Browse the repository at this point in the history
We have several checks for both cl::opt and OptLevel over our
pass config, although these checks do not properly work if
default value of a cl::opt will be false. Create a helper to
use instead and properly handle it. NFC for now.

Differential Revision: https://reviews.llvm.org/D105517
  • Loading branch information
rampitec committed Jul 7, 2021
1 parent 168a923 commit b164004
Showing 1 changed file with 18 additions and 15 deletions.
33 changes: 18 additions & 15 deletions llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
Expand Up @@ -785,6 +785,19 @@ class AMDGPUPassConfig : public TargetPassConfig {
bool addGCPasses() override;

std::unique_ptr<CSEConfigBase> getCSEConfig() const override;

/// Check if a pass is enabled given \p Opt option. The option always
/// overrides defaults if explicitely 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,
CodeGenOpt::Level Level = CodeGenOpt::Default) const {
if (Opt.getNumOccurrences())
return Opt;
if (TM->getOptLevel() < Level)
return false;
return Opt;
}
};

std::unique_ptr<CSEConfigBase> AMDGPUPassConfig::getCSEConfig() const {
Expand Down Expand Up @@ -928,9 +941,7 @@ void AMDGPUPassConfig::addIRPasses() {

if (EnableSROA)
addPass(createSROAPass());
if (EnableScalarIRPasses.getNumOccurrences()
? EnableScalarIRPasses
: TM.getOptLevel() > CodeGenOpt::Less)
if (isPassEnabled(EnableScalarIRPasses))
addStraightLineScalarOptimizationPasses();

if (EnableAMDGPUAliasAnalysis) {
Expand Down Expand Up @@ -962,9 +973,7 @@ void AMDGPUPassConfig::addIRPasses() {
// %1 = shl %a, 2
//
// but EarlyCSE can do neither of them.
if (EnableScalarIRPasses.getNumOccurrences()
? EnableScalarIRPasses
: TM.getOptLevel() > CodeGenOpt::Less)
if (isPassEnabled(EnableScalarIRPasses))
addEarlyCSEOrGVNPass();
}

Expand All @@ -980,9 +989,7 @@ void AMDGPUPassConfig::addCodeGenPrepare() {

TargetPassConfig::addCodeGenPrepare();

if (EnableLoadStoreVectorizer.getNumOccurrences()
? EnableLoadStoreVectorizer
: TM->getOptLevel() > CodeGenOpt::Less)
if (isPassEnabled(EnableLoadStoreVectorizer))
addPass(createLoadStoreVectorizerPass());

// LowerSwitch pass may introduce unreachable blocks that can
Expand Down Expand Up @@ -1107,9 +1114,7 @@ void GCNPassConfig::addMachineSSAOptimization() {
if (EnableDPPCombine)
addPass(&GCNDPPCombineID);
addPass(&SILoadStoreOptimizerID);
if (EnableSDWAPeephole.getNumOccurrences()
? EnableSDWAPeephole
: TM->getOptLevel() > CodeGenOpt::Less) {
if (isPassEnabled(EnableSDWAPeephole)) {
addPass(&SIPeepholeSDWAID);
addPass(&EarlyMachineLICMID);
addPass(&MachineCSEID);
Expand Down Expand Up @@ -1200,9 +1205,7 @@ void GCNPassConfig::addOptimizedRegAlloc() {
if (OptExecMaskPreRA)
insertPass(&MachineSchedulerID, &SIOptimizeExecMaskingPreRAID);

if (EnablePreRAOptimizations.getNumOccurrences()
? EnablePreRAOptimizations
: TM->getOptLevel() > CodeGenOpt::Less)
if (isPassEnabled(EnablePreRAOptimizations))
insertPass(&RenameIndependentSubregsID, &GCNPreRAOptimizationsID);

// This is not an essential optimization and it has a noticeable impact on
Expand Down

0 comments on commit b164004

Please sign in to comment.