================ @@ -316,6 +316,32 @@ findOverlappingRanges(llvm::SmallVector<RangeInfo> &Infos) { return Overlaps; } +llvm::SmallVector<RangeInfo> +findUnboundRanges(const llvm::SmallVectorImpl<RangeInfo> &Ranges, + const llvm::ArrayRef<RangeInfo> &Bindings) { + llvm::SmallVector<RangeInfo> Unbounds; + for (const auto &Range : Ranges) { + bool Bound = false; + // hlsl::rootsig::RangeInfo Range; + // Range.Space = ResBinding.Space; + // Range.LowerBound = ResBinding.LowerBound; + // Range.UpperBound = Range.LowerBound + ResBinding.Size - 1; + + for (const auto &Binding : Bindings) { + if (Range.Space == Binding.Space && + Range.LowerBound >= Binding.LowerBound && + Range.UpperBound <= Binding.UpperBound) { ---------------- inbelic wrote:
I will forward [this comment](https://github.com/llvm/llvm-project/pull/146785#discussion_r2211828192), just so it doesn't get lost: > Ah yep, sorry. > > I guess my original question was about something like: > > ``` > struct FooData { float data }; > ConstantBuffer<FooData> Foo[4] : register(b0); > > [RootSignature(DescriptorTable(CBV(b0, numDescriptors =2), CBV(b2, > numDescriptors = 2))] > ``` > > Are all registers successfully bound? IIUC, the current logic wouldn't get > something like that https://github.com/llvm/llvm-project/pull/146785 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits