[NFC][LLVM][NVPTX] Cleanup pass initialization for NVPTX (#134311)

- Move all pass initialization function calls to NVPTX target
initialization and out of individual pass constructors.
- Move all pass initialization function declaration to NVPTX.h.
- https://github.com/llvm/llvm-project/issues/111767
This commit is contained in:
Rahul Joshi
2025-04-07 08:54:44 -07:00
committed by GitHub
parent 268c065eab
commit 7fe6e70e7c
19 changed files with 29 additions and 93 deletions

View File

@@ -55,6 +55,24 @@ MachineFunctionPass *createNVPTXPeephole();
MachineFunctionPass *createNVPTXProxyRegErasurePass();
MachineFunctionPass *createNVPTXForwardParamsPass();
void initializeGenericToNVVMLegacyPassPass(PassRegistry &);
void initializeNVPTXAllocaHoistingPass(PassRegistry &);
void initializeNVPTXAssignValidGlobalNamesPass(PassRegistry &);
void initializeNVPTXAtomicLowerPass(PassRegistry &);
void initializeNVPTXCtorDtorLoweringLegacyPass(PassRegistry &);
void initializeNVPTXLowerAggrCopiesPass(PassRegistry &);
void initializeNVPTXLowerAllocaPass(PassRegistry &);
void initializeNVPTXLowerUnreachablePass(PassRegistry &);
void initializeNVPTXCtorDtorLoweringLegacyPass(PassRegistry &);
void initializeNVPTXLowerArgsLegacyPassPass(PassRegistry &);
void initializeNVPTXProxyRegErasurePass(PassRegistry &);
void initializeNVPTXForwardParamsPassPass(PassRegistry &);
void initializeNVVMIntrRangePass(PassRegistry &);
void initializeNVVMReflectPass(PassRegistry &);
void initializeNVPTXAAWrapperPassPass(PassRegistry &);
void initializeNVPTXExternalAAWrapperPass(PassRegistry &);
void initializeNVPTXPeepholePass(PassRegistry &);
struct NVVMIntrRangePass : PassInfoMixin<NVVMIntrRangePass> {
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
};

View File

@@ -45,9 +45,7 @@ ImmutablePass *llvm::createNVPTXExternalAAWrapperPass() {
return new NVPTXExternalAAWrapper();
}
NVPTXAAWrapperPass::NVPTXAAWrapperPass() : ImmutablePass(ID) {
initializeNVPTXAAWrapperPassPass(*PassRegistry::getPassRegistry());
}
NVPTXAAWrapperPass::NVPTXAAWrapperPass() : ImmutablePass(ID) {}
void NVPTXAAWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesAll();

View File

@@ -98,9 +98,7 @@ public:
};
ImmutablePass *createNVPTXAAWrapperPass();
void initializeNVPTXAAWrapperPassPass(PassRegistry &);
ImmutablePass *createNVPTXExternalAAWrapperPass();
void initializeNVPTXExternalAAWrapperPass(PassRegistry &);
} // end namespace llvm

View File

@@ -11,6 +11,7 @@
//===----------------------------------------------------------------------===//
#include "NVPTXAllocaHoisting.h"
#include "NVPTX.h"
#include "llvm/CodeGen/StackProtector.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Function.h"
@@ -57,10 +58,6 @@ bool NVPTXAllocaHoisting::runOnFunction(Function &function) {
char NVPTXAllocaHoisting::ID = 0;
namespace llvm {
void initializeNVPTXAllocaHoistingPass(PassRegistry &);
}
INITIALIZE_PASS(
NVPTXAllocaHoisting, "alloca-hoisting",
"Hoisting alloca instructions in non-entry blocks to the entry block",

View File

@@ -16,7 +16,7 @@
namespace llvm {
class FunctionPass;
extern FunctionPass *createAllocaHoisting();
FunctionPass *createAllocaHoisting();
} // end namespace llvm
#endif

View File

@@ -38,10 +38,6 @@ public:
char NVPTXAssignValidGlobalNames::ID = 0;
namespace llvm {
void initializeNVPTXAssignValidGlobalNamesPass(PassRegistry &);
}
INITIALIZE_PASS(NVPTXAssignValidGlobalNames, "nvptx-assign-valid-global-names",
"Assign valid PTX names to globals", false, false)

View File

@@ -11,6 +11,7 @@
//===----------------------------------------------------------------------===//
#include "NVPTXAtomicLower.h"
#include "NVPTX.h"
#include "llvm/CodeGen/StackProtector.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InstIterator.h"
@@ -55,10 +56,6 @@ bool NVPTXAtomicLower::runOnFunction(Function &F) {
char NVPTXAtomicLower::ID = 0;
namespace llvm {
void initializeNVPTXAtomicLowerPass(PassRegistry &);
}
INITIALIZE_PASS(NVPTXAtomicLower, "nvptx-atomic-lower",
"Lower atomics of local memory to simple load/stores", false,
false)

View File

@@ -256,7 +256,6 @@ PreservedAnalyses NVPTXCtorDtorLoweringPass::run(Module &M,
}
char NVPTXCtorDtorLoweringLegacy::ID = 0;
char &llvm::NVPTXCtorDtorLoweringLegacyPassID = NVPTXCtorDtorLoweringLegacy::ID;
INITIALIZE_PASS(NVPTXCtorDtorLoweringLegacy, DEBUG_TYPE,
"Lower ctors and dtors for NVPTX", false, false)

View File

@@ -15,9 +15,6 @@ namespace llvm {
class Module;
class PassRegistry;
extern char &NVPTXCtorDtorLoweringLegacyPassID;
extern void initializeNVPTXCtorDtorLoweringLegacyPass(PassRegistry &);
/// Lower llvm.global_ctors and llvm.global_dtors to special kernels.
class NVPTXCtorDtorLoweringPass
: public PassInfoMixin<NVPTXCtorDtorLoweringPass> {

View File

@@ -136,16 +136,10 @@ static bool forwardDeviceParams(MachineFunction &MF) {
/// Pass (Manager) Boilerplate
/// ----------------------------------------------------------------------------
namespace llvm {
void initializeNVPTXForwardParamsPassPass(PassRegistry &);
} // namespace llvm
namespace {
struct NVPTXForwardParamsPass : public MachineFunctionPass {
static char ID;
NVPTXForwardParamsPass() : MachineFunctionPass(ID) {
initializeNVPTXForwardParamsPassPass(*PassRegistry::getPassRegistry());
}
NVPTXForwardParamsPass() : MachineFunctionPass(ID) {}
bool runOnMachineFunction(MachineFunction &MF) override;

View File

@@ -13,6 +13,7 @@
//===----------------------------------------------------------------------===//
#include "NVPTXLowerAggrCopies.h"
#include "NVPTX.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/CodeGen/StackProtector.h"
#include "llvm/IR/Constants.h"
@@ -137,10 +138,6 @@ bool NVPTXLowerAggrCopies::runOnFunction(Function &F) {
} // namespace
namespace llvm {
void initializeNVPTXLowerAggrCopiesPass(PassRegistry &);
}
INITIALIZE_PASS(NVPTXLowerAggrCopies, "nvptx-lower-aggr-copies",
"Lower aggregate copies, and llvm.mem* intrinsics into loops",
false, false)

View File

@@ -33,10 +33,6 @@
using namespace llvm;
namespace llvm {
void initializeNVPTXLowerAllocaPass(PassRegistry &);
}
namespace {
class NVPTXLowerAlloca : public FunctionPass {
bool runOnFunction(Function &F) override;

View File

@@ -161,10 +161,6 @@
using namespace llvm;
namespace llvm {
void initializeNVPTXLowerArgsLegacyPassPass(PassRegistry &);
}
namespace {
class NVPTXLowerArgsLegacyPass : public FunctionPass {
bool runOnFunction(Function &F) override;

View File

@@ -78,10 +78,6 @@
using namespace llvm;
namespace llvm {
void initializeNVPTXLowerUnreachablePass(PassRegistry &);
}
namespace {
class NVPTXLowerUnreachable : public FunctionPass {
StringRef getPassName() const override;

View File

@@ -44,17 +44,11 @@ using namespace llvm;
#define DEBUG_TYPE "nvptx-peephole"
namespace llvm {
void initializeNVPTXPeepholePass(PassRegistry &);
}
namespace {
struct NVPTXPeephole : public MachineFunctionPass {
public:
static char ID;
NVPTXPeephole() : MachineFunctionPass(ID) {
initializeNVPTXPeepholePass(*PassRegistry::getPassRegistry());
}
NVPTXPeephole() : MachineFunctionPass(ID) {}
bool runOnMachineFunction(MachineFunction &MF) override;

View File

@@ -24,17 +24,11 @@
using namespace llvm;
namespace llvm {
void initializeNVPTXProxyRegErasurePass(PassRegistry &);
}
namespace {
struct NVPTXProxyRegErasure : public MachineFunctionPass {
static char ID;
NVPTXProxyRegErasure() : MachineFunctionPass(ID) {
initializeNVPTXProxyRegErasurePass(*PassRegistry::getPassRegistry());
}
NVPTXProxyRegErasure() : MachineFunctionPass(ID) {}
bool runOnMachineFunction(MachineFunction &MF) override;

View File

@@ -87,27 +87,6 @@ static cl::opt<bool> EarlyByValArgsCopy(
cl::desc("Create a copy of byval function arguments early."),
cl::init(false), cl::Hidden);
namespace llvm {
void initializeGenericToNVVMLegacyPassPass(PassRegistry &);
void initializeNVPTXAllocaHoistingPass(PassRegistry &);
void initializeNVPTXAssignValidGlobalNamesPass(PassRegistry &);
void initializeNVPTXAtomicLowerPass(PassRegistry &);
void initializeNVPTXCtorDtorLoweringLegacyPass(PassRegistry &);
void initializeNVPTXLowerAggrCopiesPass(PassRegistry &);
void initializeNVPTXLowerAllocaPass(PassRegistry &);
void initializeNVPTXLowerUnreachablePass(PassRegistry &);
void initializeNVPTXCtorDtorLoweringLegacyPass(PassRegistry &);
void initializeNVPTXLowerArgsLegacyPassPass(PassRegistry &);
void initializeNVPTXProxyRegErasurePass(PassRegistry &);
void initializeNVPTXForwardParamsPassPass(PassRegistry &);
void initializeNVVMIntrRangePass(PassRegistry &);
void initializeNVVMReflectPass(PassRegistry &);
void initializeNVPTXAAWrapperPassPass(PassRegistry &);
void initializeNVPTXExternalAAWrapperPass(PassRegistry &);
} // end namespace llvm
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeNVPTXTarget() {
// Register the target.
RegisterTargetMachine<NVPTXTargetMachine32> X(getTheNVPTXTarget32());
@@ -132,6 +111,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeNVPTXTarget() {
initializeNVPTXDAGToDAGISelLegacyPass(PR);
initializeNVPTXAAWrapperPassPass(PR);
initializeNVPTXExternalAAWrapperPass(PR);
initializeNVPTXPeepholePass(PR);
}
static std::string computeDataLayout(bool is64Bit, bool UseShortPointers) {

View File

@@ -25,16 +25,11 @@ using namespace llvm;
#define DEBUG_TYPE "nvvm-intr-range"
namespace llvm { void initializeNVVMIntrRangePass(PassRegistry &); }
namespace {
class NVVMIntrRange : public FunctionPass {
public:
static char ID;
NVVMIntrRange() : FunctionPass(ID) {
initializeNVVMIntrRangePass(*PassRegistry::getPassRegistry());
}
NVVMIntrRange() : FunctionPass(ID) {}
bool runOnFunction(Function &) override;
};

View File

@@ -47,19 +47,13 @@ using namespace llvm;
#define DEBUG_TYPE "nvptx-reflect"
namespace llvm {
void initializeNVVMReflectPass(PassRegistry &);
}
namespace {
class NVVMReflect : public FunctionPass {
public:
static char ID;
unsigned int SmVersion;
NVVMReflect() : NVVMReflect(0) {}
explicit NVVMReflect(unsigned int Sm) : FunctionPass(ID), SmVersion(Sm) {
initializeNVVMReflectPass(*PassRegistry::getPassRegistry());
}
explicit NVVMReflect(unsigned int Sm) : FunctionPass(ID), SmVersion(Sm) {}
bool runOnFunction(Function &) override;
};