Skip to content

Commit 0c72dcf

Browse files
Joao SaffranJoao Saffran
authored andcommitted
addressing inbelic comments
1 parent 6da5fb0 commit 0c72dcf

File tree

2 files changed

+19
-17
lines changed

2 files changed

+19
-17
lines changed

llvm/lib/Frontend/HLSL/HLSLBinding.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,13 @@ BindingInfo::RegisterSpace::findAvailableBinding(int32_t Size) {
6767
}
6868

6969
bool BindingInfo::RegisterSpace::isBound(BindingRange B) {
70-
for (BindingRange &R : FreeRanges) {
71-
if (B.LowerBound >= R.LowerBound && B.LowerBound < R.UpperBound &&
72-
B.UpperBound > R.LowerBound && B.UpperBound <= R.UpperBound)
70+
BindingRange *It = llvm::lower_bound(
71+
FreeRanges, B.LowerBound,
72+
[](const BindingRange &R, uint32_t Val) { return R.UpperBound <= Val; });
73+
74+
if (It != FreeRanges.end()) {
75+
// Check if B is fully contained in the found range
76+
if (B.LowerBound >= It->LowerBound && B.UpperBound <= It->UpperBound)
7377
return false;
7478
}
7579
return true;

llvm/lib/Target/DirectX/DXILPostOptimizationValidation.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -237,20 +237,18 @@ static void validateRootSignature(Module &M,
237237
reportOverlappingRegisters(M, ReportedBinding, Overlaping);
238238
});
239239
// Next checks require that the root signature definition is valid.
240-
if (!HasOverlap) {
241-
for (const auto &ResList :
242-
{std::make_pair(ResourceClass::SRV, DRM.srvs()),
243-
std::make_pair(ResourceClass::UAV, DRM.uavs()),
244-
std::make_pair(ResourceClass::CBuffer, DRM.cbuffers()),
245-
std::make_pair(ResourceClass::Sampler, DRM.samplers())}) {
246-
for (auto Res : ResList.second) {
247-
llvm::dxil::ResourceInfo::ResourceBinding ResBinding = Res.getBinding();
248-
llvm::hlsl::BindingInfo::BindingRange ResRange(
249-
ResBinding.LowerBound, ResBinding.LowerBound + ResBinding.Size);
250-
251-
if (!Info.isBound(ResList.first, ResBinding.Space, ResRange))
252-
reportRegNotBound(M, ResList.first, ResBinding);
253-
}
240+
for (const auto &ResList :
241+
{std::make_pair(ResourceClass::SRV, DRM.srvs()),
242+
std::make_pair(ResourceClass::UAV, DRM.uavs()),
243+
std::make_pair(ResourceClass::CBuffer, DRM.cbuffers()),
244+
std::make_pair(ResourceClass::Sampler, DRM.samplers())}) {
245+
for (auto Res : ResList.second) {
246+
llvm::dxil::ResourceInfo::ResourceBinding ResBinding = Res.getBinding();
247+
llvm::hlsl::BindingInfo::BindingRange ResRange(
248+
ResBinding.LowerBound, ResBinding.LowerBound + ResBinding.Size);
249+
250+
if (!Info.isBound(ResList.first, ResBinding.Space, ResRange))
251+
reportRegNotBound(M, ResList.first, ResBinding);
254252
}
255253
}
256254
}

0 commit comments

Comments
 (0)