Skip to content

Commit 2ec3db0

Browse files
committed
[NFC][HLSL] Rename ResourceBinding Types
1 parent 3bdf9a0 commit 2ec3db0

File tree

10 files changed

+157
-168
lines changed

10 files changed

+157
-168
lines changed

llvm/include/llvm/Analysis/DXILResource.h

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ class ResourceTypeInfo {
326326

327327
//===----------------------------------------------------------------------===//
328328

329-
class ResourceBindingInfo {
329+
class ResourceInfo {
330330
public:
331331
struct ResourceBinding {
332332
uint32_t RecordID;
@@ -353,9 +353,9 @@ class ResourceBindingInfo {
353353
GlobalVariable *Symbol = nullptr;
354354

355355
public:
356-
ResourceBindingInfo(uint32_t RecordID, uint32_t Space, uint32_t LowerBound,
357-
uint32_t Size, TargetExtType *HandleTy,
358-
GlobalVariable *Symbol = nullptr)
356+
ResourceInfo(uint32_t RecordID, uint32_t Space, uint32_t LowerBound,
357+
uint32_t Size, TargetExtType *HandleTy,
358+
GlobalVariable *Symbol = nullptr)
359359
: Binding{RecordID, Space, LowerBound, Size}, HandleTy(HandleTy),
360360
Symbol(Symbol) {}
361361

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

375-
bool operator==(const ResourceBindingInfo &RHS) const {
375+
bool operator==(const ResourceInfo &RHS) const {
376376
return std::tie(Binding, HandleTy, Symbol) ==
377377
std::tie(RHS.Binding, RHS.HandleTy, RHS.Symbol);
378378
}
379-
bool operator!=(const ResourceBindingInfo &RHS) const {
380-
return !(*this == RHS);
381-
}
382-
bool operator<(const ResourceBindingInfo &RHS) const {
379+
bool operator!=(const ResourceInfo &RHS) const { return !(*this == RHS); }
380+
bool operator<(const ResourceInfo &RHS) const {
383381
return Binding < RHS.Binding;
384382
}
385383

@@ -441,7 +439,7 @@ ModulePass *createDXILResourceTypeWrapperPassPass();
441439
//===----------------------------------------------------------------------===//
442440

443441
class DXILBindingMap {
444-
SmallVector<dxil::ResourceBindingInfo> Infos;
442+
SmallVector<dxil::ResourceInfo> Infos;
445443
DenseMap<CallInst *, unsigned> CallMap;
446444
unsigned FirstUAV = 0;
447445
unsigned FirstCBuffer = 0;
@@ -451,8 +449,8 @@ class DXILBindingMap {
451449
void populate(Module &M, DXILResourceTypeMap &DRTM);
452450

453451
public:
454-
using iterator = SmallVector<dxil::ResourceBindingInfo>::iterator;
455-
using const_iterator = SmallVector<dxil::ResourceBindingInfo>::const_iterator;
452+
using iterator = SmallVector<dxil::ResourceInfo>::iterator;
453+
using const_iterator = SmallVector<dxil::ResourceInfo>::const_iterator;
456454

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

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

476474
const_iterator find(const CallInst *Key) const {
477475
auto Pos = CallMap.find(Key);
@@ -521,13 +519,12 @@ class DXILBindingMap {
521519
void print(raw_ostream &OS, DXILResourceTypeMap &DRTM,
522520
const DataLayout &DL) const;
523521

524-
friend class DXILResourceBindingAnalysis;
522+
friend class DXILResourceAnalysis;
525523
friend class DXILResourceBindingWrapperPass;
526524
};
527525

528-
class DXILResourceBindingAnalysis
529-
: public AnalysisInfoMixin<DXILResourceBindingAnalysis> {
530-
friend AnalysisInfoMixin<DXILResourceBindingAnalysis>;
526+
class DXILResourceAnalysis : public AnalysisInfoMixin<DXILResourceAnalysis> {
527+
friend AnalysisInfoMixin<DXILResourceAnalysis>;
531528

532529
static AnalysisKey Key;
533530

@@ -538,13 +535,12 @@ class DXILResourceBindingAnalysis
538535
DXILBindingMap run(Module &M, ModuleAnalysisManager &AM);
539536
};
540537

541-
/// Printer pass for the \c DXILResourceBindingAnalysis results.
542-
class DXILResourceBindingPrinterPass
543-
: public PassInfoMixin<DXILResourceBindingPrinterPass> {
538+
/// Printer pass for the \c DXILResourceAnalysis results.
539+
class DXILResourcePrinterPass : public PassInfoMixin<DXILResourcePrinterPass> {
544540
raw_ostream &OS;
545541

546542
public:
547-
explicit DXILResourceBindingPrinterPass(raw_ostream &OS) : OS(OS) {}
543+
explicit DXILResourcePrinterPass(raw_ostream &OS) : OS(OS) {}
548544

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

llvm/lib/Analysis/DXILResource.cpp

Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -531,17 +531,17 @@ void ResourceTypeInfo::print(raw_ostream &OS, const DataLayout &DL) const {
531531
}
532532
}
533533

534-
GlobalVariable *ResourceBindingInfo::createSymbol(Module &M, StructType *Ty,
535-
StringRef Name) {
534+
GlobalVariable *ResourceInfo::createSymbol(Module &M, StructType *Ty,
535+
StringRef Name) {
536536
assert(!Symbol && "Symbol has already been created");
537537
Symbol = new GlobalVariable(M, Ty, /*isConstant=*/true,
538538
GlobalValue::ExternalLinkage,
539539
/*Initializer=*/nullptr, Name);
540540
return Symbol;
541541
}
542542

543-
MDTuple *ResourceBindingInfo::getAsMetadata(Module &M,
544-
dxil::ResourceTypeInfo &RTI) const {
543+
MDTuple *ResourceInfo::getAsMetadata(Module &M,
544+
dxil::ResourceTypeInfo &RTI) const {
545545
LLVMContext &Ctx = M.getContext();
546546
const DataLayout &DL = M.getDataLayout();
547547

@@ -610,8 +610,7 @@ MDTuple *ResourceBindingInfo::getAsMetadata(Module &M,
610610
}
611611

612612
std::pair<uint32_t, uint32_t>
613-
ResourceBindingInfo::getAnnotateProps(Module &M,
614-
dxil::ResourceTypeInfo &RTI) const {
613+
ResourceInfo::getAnnotateProps(Module &M, dxil::ResourceTypeInfo &RTI) const {
615614
const DataLayout &DL = M.getDataLayout();
616615

617616
uint32_t ResourceKind = llvm::to_underlying(RTI.getResourceKind());
@@ -658,8 +657,8 @@ ResourceBindingInfo::getAnnotateProps(Module &M,
658657
return {Word0, Word1};
659658
}
660659

661-
void ResourceBindingInfo::print(raw_ostream &OS, dxil::ResourceTypeInfo &RTI,
662-
const DataLayout &DL) const {
660+
void ResourceInfo::print(raw_ostream &OS, dxil::ResourceTypeInfo &RTI,
661+
const DataLayout &DL) const {
663662
if (Symbol) {
664663
OS << " Symbol: ";
665664
Symbol->printAsOperand(OS);
@@ -687,8 +686,7 @@ bool DXILResourceTypeMap::invalidate(Module &M, const PreservedAnalyses &PA,
687686
//===----------------------------------------------------------------------===//
688687

689688
void DXILBindingMap::populate(Module &M, DXILResourceTypeMap &DRTM) {
690-
SmallVector<std::tuple<CallInst *, ResourceBindingInfo, ResourceTypeInfo>>
691-
CIToInfos;
689+
SmallVector<std::tuple<CallInst *, ResourceInfo, ResourceTypeInfo>> CIToInfos;
692690

693691
for (Function &F : M.functions()) {
694692
if (!F.isDeclaration())
@@ -711,10 +709,10 @@ void DXILBindingMap::populate(Module &M, DXILResourceTypeMap &DRTM) {
711709
cast<ConstantInt>(CI->getArgOperand(1))->getZExtValue();
712710
uint32_t Size =
713711
cast<ConstantInt>(CI->getArgOperand(2))->getZExtValue();
714-
ResourceBindingInfo RBI = ResourceBindingInfo{
715-
/*RecordID=*/0, Space, LowerBound, Size, HandleTy};
712+
ResourceInfo RI =
713+
ResourceInfo{/*RecordID=*/0, Space, LowerBound, Size, HandleTy};
716714

717-
CIToInfos.emplace_back(CI, RBI, RTI);
715+
CIToInfos.emplace_back(CI, RI, RTI);
718716
}
719717

720718
break;
@@ -723,18 +721,18 @@ void DXILBindingMap::populate(Module &M, DXILResourceTypeMap &DRTM) {
723721
}
724722

725723
llvm::stable_sort(CIToInfos, [](auto &LHS, auto &RHS) {
726-
const auto &[LCI, LRBI, LRTI] = LHS;
727-
const auto &[RCI, RRBI, RRTI] = RHS;
724+
const auto &[LCI, LRI, LRTI] = LHS;
725+
const auto &[RCI, RRI, RRTI] = RHS;
728726
// Sort by resource class first for grouping purposes, and then by the
729727
// binding and type so we can remove duplicates.
730728
ResourceClass LRC = LRTI.getResourceClass();
731729
ResourceClass RRC = RRTI.getResourceClass();
732730

733-
return std::tie(LRC, LRBI, LRTI) < std::tie(RRC, RRBI, RRTI);
731+
return std::tie(LRC, LRI, LRTI) < std::tie(RRC, RRI, RRTI);
734732
});
735-
for (auto [CI, RBI, RTI] : CIToInfos) {
736-
if (Infos.empty() || RBI != Infos.back())
737-
Infos.push_back(RBI);
733+
for (auto [CI, RI, RTI] : CIToInfos) {
734+
if (Infos.empty() || RI != Infos.back())
735+
Infos.push_back(RI);
738736
CallMap[CI] = Infos.size() - 1;
739737
}
740738

@@ -743,8 +741,8 @@ void DXILBindingMap::populate(Module &M, DXILResourceTypeMap &DRTM) {
743741
FirstUAV = FirstCBuffer = FirstSampler = Size;
744742
uint32_t NextID = 0;
745743
for (unsigned I = 0, E = Size; I != E; ++I) {
746-
ResourceBindingInfo &RBI = Infos[I];
747-
ResourceTypeInfo &RTI = DRTM[RBI.getHandleTy()];
744+
ResourceInfo &RI = Infos[I];
745+
ResourceTypeInfo &RTI = DRTM[RI.getHandleTy()];
748746
if (RTI.isUAV() && FirstUAV == Size) {
749747
FirstUAV = I;
750748
NextID = 0;
@@ -762,16 +760,16 @@ void DXILBindingMap::populate(Module &M, DXILResourceTypeMap &DRTM) {
762760
FirstUAV = std::min({FirstUAV, FirstCBuffer});
763761

764762
// Adjust the resource binding to use the next ID.
765-
RBI.setBindingID(NextID++);
763+
RI.setBindingID(NextID++);
766764
}
767765
}
768766

769767
void DXILBindingMap::print(raw_ostream &OS, DXILResourceTypeMap &DRTM,
770768
const DataLayout &DL) const {
771769
for (unsigned I = 0, E = Infos.size(); I != E; ++I) {
772770
OS << "Binding " << I << ":\n";
773-
const dxil::ResourceBindingInfo &RBI = Infos[I];
774-
RBI.print(OS, DRTM[RBI.getHandleTy()], DL);
771+
const dxil::ResourceInfo &RI = Infos[I];
772+
RI.print(OS, DRTM[RI.getHandleTy()], DL);
775773
OS << "\n";
776774
}
777775

@@ -782,10 +780,10 @@ void DXILBindingMap::print(raw_ostream &OS, DXILResourceTypeMap &DRTM,
782780
}
783781
}
784782

785-
SmallVector<dxil::ResourceBindingInfo>
783+
SmallVector<dxil::ResourceInfo>
786784
DXILBindingMap::findByUse(const Value *Key) const {
787785
if (const PHINode *Phi = dyn_cast<PHINode>(Key)) {
788-
SmallVector<dxil::ResourceBindingInfo> Children;
786+
SmallVector<dxil::ResourceInfo> Children;
789787
for (const Value *V : Phi->operands()) {
790788
Children.append(findByUse(V));
791789
}
@@ -810,7 +808,7 @@ DXILBindingMap::findByUse(const Value *Key) const {
810808
// Check if any of the parameters are the resource we are following. If so
811809
// keep searching. If none of them are return an empty list
812810
const Type *UseType = CI->getType();
813-
SmallVector<dxil::ResourceBindingInfo> Children;
811+
SmallVector<dxil::ResourceInfo> Children;
814812
for (const Value *V : CI->args()) {
815813
if (V->getType() != UseType)
816814
continue;
@@ -824,19 +822,18 @@ DXILBindingMap::findByUse(const Value *Key) const {
824822
//===----------------------------------------------------------------------===//
825823

826824
AnalysisKey DXILResourceTypeAnalysis::Key;
827-
AnalysisKey DXILResourceBindingAnalysis::Key;
825+
AnalysisKey DXILResourceAnalysis::Key;
828826

829-
DXILBindingMap DXILResourceBindingAnalysis::run(Module &M,
830-
ModuleAnalysisManager &AM) {
827+
DXILBindingMap DXILResourceAnalysis::run(Module &M, ModuleAnalysisManager &AM) {
831828
DXILBindingMap Data;
832829
DXILResourceTypeMap &DRTM = AM.getResult<DXILResourceTypeAnalysis>(M);
833830
Data.populate(M, DRTM);
834831
return Data;
835832
}
836833

837-
PreservedAnalyses
838-
DXILResourceBindingPrinterPass::run(Module &M, ModuleAnalysisManager &AM) {
839-
DXILBindingMap &DBM = AM.getResult<DXILResourceBindingAnalysis>(M);
834+
PreservedAnalyses DXILResourcePrinterPass::run(Module &M,
835+
ModuleAnalysisManager &AM) {
836+
DXILBindingMap &DBM = AM.getResult<DXILResourceAnalysis>(M);
840837
DXILResourceTypeMap &DRTM = AM.getResult<DXILResourceTypeAnalysis>(M);
841838

842839
DBM.print(OS, DRTM, M.getDataLayout());
@@ -895,7 +892,7 @@ LLVM_DUMP_METHOD
895892
void DXILResourceBindingWrapperPass::dump() const { print(dbgs(), nullptr); }
896893
#endif
897894

898-
INITIALIZE_PASS(DXILResourceBindingWrapperPass, "dxil-resource-binding",
895+
INITIALIZE_PASS(DXILResourceBindingWrapperPass, "dxil-resource",
899896
"DXIL Resource Binding Analysis", false, true)
900897
char DXILResourceBindingWrapperPass::ID = 0;
901898

llvm/lib/Passes/PassRegistry.def

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ MODULE_ANALYSIS("callgraph", CallGraphAnalysis())
2222
MODULE_ANALYSIS("collector-metadata", CollectorMetadataAnalysis())
2323
MODULE_ANALYSIS("ctx-prof-analysis", CtxProfAnalysis())
2424
MODULE_ANALYSIS("dxil-metadata", DXILMetadataAnalysis())
25-
MODULE_ANALYSIS("dxil-resource-binding", DXILResourceBindingAnalysis())
25+
MODULE_ANALYSIS("dxil-resource", DXILResourceAnalysis())
2626
MODULE_ANALYSIS("dxil-resource-type", DXILResourceTypeAnalysis())
2727
MODULE_ANALYSIS("inline-advisor", InlineAdvisorAnalysis())
2828
MODULE_ANALYSIS("ir-similarity", IRSimilarityAnalysis())
@@ -128,8 +128,8 @@ MODULE_PASS("print-must-be-executed-contexts",
128128
MODULE_PASS("print-profile-summary", ProfileSummaryPrinterPass(errs()))
129129
MODULE_PASS("print-stack-safety", StackSafetyGlobalPrinterPass(errs()))
130130
MODULE_PASS("print<dxil-metadata>", DXILMetadataAnalysisPrinterPass(errs()))
131-
MODULE_PASS("print<dxil-resource-binding>",
132-
DXILResourceBindingPrinterPass(errs()))
131+
MODULE_PASS("print<dxil-resource>",
132+
DXILResourcePrinterPass(errs()))
133133
MODULE_PASS("print<inline-advisor>", InlineAdvisorAnalysisPrinterPass(errs()))
134134
MODULE_PASS("print<module-debuginfo>", ModuleDebugInfoPrinterPass(errs()))
135135
MODULE_PASS("print<reg-usage>", PhysicalRegisterUsageInfoPrinterPass(errs()))

llvm/lib/Target/DirectX/DXContainerGlobals.cpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ void DXContainerGlobals::addResourcesForPSV(Module &M, PSVRuntimeInfo &PSV) {
187187
getAnalysis<DXILResourceTypeWrapperPass>().getResourceTypeMap();
188188

189189
auto MakeBinding =
190-
[](const dxil::ResourceBindingInfo::ResourceBinding &Binding,
190+
[](const dxil::ResourceInfo::ResourceBinding &Binding,
191191
const dxbc::PSV::ResourceType Type, const dxil::ResourceKind Kind,
192192
const dxbc::PSV::ResourceFlags Flags = dxbc::PSV::ResourceFlags()) {
193193
dxbc::PSV::v2::ResourceBindInfo BindInfo;
@@ -200,24 +200,21 @@ void DXContainerGlobals::addResourcesForPSV(Module &M, PSVRuntimeInfo &PSV) {
200200
return BindInfo;
201201
};
202202

203-
for (const dxil::ResourceBindingInfo &RBI : DBM.cbuffers()) {
204-
const dxil::ResourceBindingInfo::ResourceBinding &Binding =
205-
RBI.getBinding();
203+
for (const dxil::ResourceInfo &RI : DBM.cbuffers()) {
204+
const dxil::ResourceInfo::ResourceBinding &Binding = RI.getBinding();
206205
PSV.Resources.push_back(MakeBinding(Binding, dxbc::PSV::ResourceType::CBV,
207206
dxil::ResourceKind::CBuffer));
208207
}
209-
for (const dxil::ResourceBindingInfo &RBI : DBM.samplers()) {
210-
const dxil::ResourceBindingInfo::ResourceBinding &Binding =
211-
RBI.getBinding();
208+
for (const dxil::ResourceInfo &RI : DBM.samplers()) {
209+
const dxil::ResourceInfo::ResourceBinding &Binding = RI.getBinding();
212210
PSV.Resources.push_back(MakeBinding(Binding,
213211
dxbc::PSV::ResourceType::Sampler,
214212
dxil::ResourceKind::Sampler));
215213
}
216-
for (const dxil::ResourceBindingInfo &RBI : DBM.srvs()) {
217-
const dxil::ResourceBindingInfo::ResourceBinding &Binding =
218-
RBI.getBinding();
214+
for (const dxil::ResourceInfo &RI : DBM.srvs()) {
215+
const dxil::ResourceInfo::ResourceBinding &Binding = RI.getBinding();
219216

220-
dxil::ResourceTypeInfo &TypeInfo = DRTM[RBI.getHandleTy()];
217+
dxil::ResourceTypeInfo &TypeInfo = DRTM[RI.getHandleTy()];
221218
dxbc::PSV::ResourceType ResType;
222219
if (TypeInfo.isStruct())
223220
ResType = dxbc::PSV::ResourceType::SRVStructured;
@@ -229,11 +226,10 @@ void DXContainerGlobals::addResourcesForPSV(Module &M, PSVRuntimeInfo &PSV) {
229226
PSV.Resources.push_back(
230227
MakeBinding(Binding, ResType, TypeInfo.getResourceKind()));
231228
}
232-
for (const dxil::ResourceBindingInfo &RBI : DBM.uavs()) {
233-
const dxil::ResourceBindingInfo::ResourceBinding &Binding =
234-
RBI.getBinding();
229+
for (const dxil::ResourceInfo &RI : DBM.uavs()) {
230+
const dxil::ResourceInfo::ResourceBinding &Binding = RI.getBinding();
235231

236-
dxil::ResourceTypeInfo &TypeInfo = DRTM[RBI.getHandleTy()];
232+
dxil::ResourceTypeInfo &TypeInfo = DRTM[RI.getHandleTy()];
237233
dxbc::PSV::ResourceType ResType;
238234
if (TypeInfo.getUAV().HasCounter)
239235
ResType = dxbc::PSV::ResourceType::UAVStructuredWithCounter;

0 commit comments

Comments
 (0)