Skip to content

[NFC][HLSL] Rename ResourceBinding Types #134165

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Apr 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 30 additions & 34 deletions llvm/include/llvm/Analysis/DXILResource.h
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ class ResourceTypeInfo {

//===----------------------------------------------------------------------===//

class ResourceBindingInfo {
class ResourceInfo {
public:
struct ResourceBinding {
uint32_t RecordID;
Expand All @@ -353,9 +353,9 @@ class ResourceBindingInfo {
GlobalVariable *Symbol = nullptr;

public:
ResourceBindingInfo(uint32_t RecordID, uint32_t Space, uint32_t LowerBound,
uint32_t Size, TargetExtType *HandleTy,
GlobalVariable *Symbol = nullptr)
ResourceInfo(uint32_t RecordID, uint32_t Space, uint32_t LowerBound,
uint32_t Size, TargetExtType *HandleTy,
GlobalVariable *Symbol = nullptr)
: Binding{RecordID, Space, LowerBound, Size}, HandleTy(HandleTy),
Symbol(Symbol) {}

Expand All @@ -372,14 +372,12 @@ class ResourceBindingInfo {
std::pair<uint32_t, uint32_t>
getAnnotateProps(Module &M, dxil::ResourceTypeInfo &RTI) const;

bool operator==(const ResourceBindingInfo &RHS) const {
bool operator==(const ResourceInfo &RHS) const {
return std::tie(Binding, HandleTy, Symbol) ==
std::tie(RHS.Binding, RHS.HandleTy, RHS.Symbol);
}
bool operator!=(const ResourceBindingInfo &RHS) const {
return !(*this == RHS);
}
bool operator<(const ResourceBindingInfo &RHS) const {
bool operator!=(const ResourceInfo &RHS) const { return !(*this == RHS); }
bool operator<(const ResourceInfo &RHS) const {
return Binding < RHS.Binding;
}

Expand Down Expand Up @@ -440,8 +438,8 @@ ModulePass *createDXILResourceTypeWrapperPassPass();

//===----------------------------------------------------------------------===//

class DXILBindingMap {
SmallVector<dxil::ResourceBindingInfo> Infos;
class DXILResourceMap {
SmallVector<dxil::ResourceInfo> Infos;
DenseMap<CallInst *, unsigned> CallMap;
unsigned FirstUAV = 0;
unsigned FirstCBuffer = 0;
Expand All @@ -451,8 +449,8 @@ class DXILBindingMap {
void populate(Module &M, DXILResourceTypeMap &DRTM);

public:
using iterator = SmallVector<dxil::ResourceBindingInfo>::iterator;
using const_iterator = SmallVector<dxil::ResourceBindingInfo>::const_iterator;
using iterator = SmallVector<dxil::ResourceInfo>::iterator;
using const_iterator = SmallVector<dxil::ResourceInfo>::const_iterator;

iterator begin() { return Infos.begin(); }
const_iterator begin() const { return Infos.begin(); }
Expand All @@ -466,12 +464,12 @@ class DXILBindingMap {
return Pos == CallMap.end() ? Infos.end() : (Infos.begin() + Pos->second);
}

/// Resolves a resource handle into a vector of ResourceBindingInfos that
/// Resolves a resource handle into a vector of ResourceInfos that
/// represent the possible unique creations of the handle. Certain cases are
/// ambiguous so multiple creation instructions may be returned. The resulting
/// ResourceBindingInfo can be used to depuplicate unique handles that
/// ResourceInfo can be used to depuplicate unique handles that
/// reference the same resource
SmallVector<dxil::ResourceBindingInfo> findByUse(const Value *Key) const;
SmallVector<dxil::ResourceInfo> findByUse(const Value *Key) const;

const_iterator find(const CallInst *Key) const {
auto Pos = CallMap.find(Key);
Expand Down Expand Up @@ -521,48 +519,46 @@ class DXILBindingMap {
void print(raw_ostream &OS, DXILResourceTypeMap &DRTM,
const DataLayout &DL) const;

friend class DXILResourceBindingAnalysis;
friend class DXILResourceBindingWrapperPass;
friend class DXILResourceAnalysis;
friend class DXILResourceWrapperPass;
};

class DXILResourceBindingAnalysis
: public AnalysisInfoMixin<DXILResourceBindingAnalysis> {
friend AnalysisInfoMixin<DXILResourceBindingAnalysis>;
class DXILResourceAnalysis : public AnalysisInfoMixin<DXILResourceAnalysis> {
friend AnalysisInfoMixin<DXILResourceAnalysis>;

static AnalysisKey Key;

public:
using Result = DXILBindingMap;
using Result = DXILResourceMap;

/// Gather resource info for the module \c M.
DXILBindingMap run(Module &M, ModuleAnalysisManager &AM);
DXILResourceMap run(Module &M, ModuleAnalysisManager &AM);
};

/// Printer pass for the \c DXILResourceBindingAnalysis results.
class DXILResourceBindingPrinterPass
: public PassInfoMixin<DXILResourceBindingPrinterPass> {
/// Printer pass for the \c DXILResourceAnalysis results.
class DXILResourcePrinterPass : public PassInfoMixin<DXILResourcePrinterPass> {
raw_ostream &OS;

public:
explicit DXILResourceBindingPrinterPass(raw_ostream &OS) : OS(OS) {}
explicit DXILResourcePrinterPass(raw_ostream &OS) : OS(OS) {}

PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);

static bool isRequired() { return true; }
};

class DXILResourceBindingWrapperPass : public ModulePass {
std::unique_ptr<DXILBindingMap> Map;
class DXILResourceWrapperPass : public ModulePass {
std::unique_ptr<DXILResourceMap> Map;
DXILResourceTypeMap *DRTM;

public:
static char ID; // Class identification, replacement for typeinfo

DXILResourceBindingWrapperPass();
~DXILResourceBindingWrapperPass() override;
DXILResourceWrapperPass();
~DXILResourceWrapperPass() override;

const DXILBindingMap &getBindingMap() const { return *Map; }
DXILBindingMap &getBindingMap() { return *Map; }
const DXILResourceMap &getBindingMap() const { return *Map; }
DXILResourceMap &getBindingMap() { return *Map; }

void getAnalysisUsage(AnalysisUsage &AU) const override;
bool runOnModule(Module &M) override;
Expand All @@ -572,7 +568,7 @@ class DXILResourceBindingWrapperPass : public ModulePass {
void dump() const;
};

ModulePass *createDXILResourceBindingWrapperPassPass();
ModulePass *createDXILResourceWrapperPassPass();

} // namespace llvm

Expand Down
2 changes: 1 addition & 1 deletion llvm/include/llvm/InitializePasses.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ void initializeDAHPass(PassRegistry &);
void initializeDCELegacyPassPass(PassRegistry &);
void initializeDXILMetadataAnalysisWrapperPassPass(PassRegistry &);
void initializeDXILMetadataAnalysisWrapperPrinterPass(PassRegistry &);
void initializeDXILResourceBindingWrapperPassPass(PassRegistry &);
void initializeDXILResourceWrapperPassPass(PassRegistry &);
void initializeDXILResourceTypeWrapperPassPass(PassRegistry &);
void initializeDeadMachineInstructionElimPass(PassRegistry &);
void initializeDebugifyMachineModulePass(PassRegistry &);
Expand Down
2 changes: 1 addition & 1 deletion llvm/include/llvm/LinkAllPasses.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ struct ForcePassLinking {
(void)llvm::createCallGraphViewerPass();
(void)llvm::createCFGSimplificationPass();
(void)llvm::createStructurizeCFGPass();
(void)llvm::createDXILResourceBindingWrapperPassPass();
(void)llvm::createDXILResourceWrapperPassPass();
(void)llvm::createDXILResourceTypeWrapperPassPass();
(void)llvm::createDeadArgEliminationPass();
(void)llvm::createDeadCodeEliminationPass();
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/Analysis/Analysis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ void llvm::initializeAnalysis(PassRegistry &Registry) {
initializeCallGraphDOTPrinterPass(Registry);
initializeCallGraphViewerPass(Registry);
initializeCycleInfoWrapperPassPass(Registry);
initializeDXILResourceBindingWrapperPassPass(Registry);
initializeDXILResourceWrapperPassPass(Registry);
initializeDXILResourceTypeWrapperPassPass(Registry);
initializeDependenceAnalysisWrapperPassPass(Registry);
initializeDominanceFrontierWrapperPassPass(Registry);
Expand Down
Loading