================
@@ -136,6 +136,51 @@ struct OverlappingRanges {
 llvm::SmallVector<OverlappingRanges>
 findOverlappingRanges(llvm::SmallVector<RangeInfo> &Infos);
 
+class RootSignatureBindingValidation {
+private:
+  llvm::SmallVector<RangeInfo, 16> Bindings;
+  struct TypeRange {
+    uint32_t Start;
+    uint32_t End;
+  };
+  std::unordered_map<dxil::ResourceClass, TypeRange> Ranges;
+
+public:
+  void addBinding(dxil::ResourceClass Type, const RangeInfo &Binding) {
+    auto It = Ranges.find(Type);
+
+    if (It == Ranges.end()) {
+      uint32_t InsertPos = Bindings.size();
+      Bindings.push_back(Binding);
+      Ranges[Type] = {InsertPos, InsertPos + 1};
+    } else {
+      uint32_t InsertPos = It->second.End;
+      Bindings.insert(Bindings.begin() + InsertPos, Binding);
+
+      It->second.End++;
+
+      for (auto &[Type, Range] : Ranges) {
+        if (Range.Start > InsertPos) {
+          Range.Start++;
+          Range.End++;
+        }
+      }
+    }
+  }
+
+  llvm::ArrayRef<RangeInfo>
+  getBindingsOfType(const dxil::ResourceClass &Type) const {
+    auto It = Ranges.find(Type);
+    if (It == Ranges.end()) {
+      return {};
+    }
----------------
llvm-beanz wrote:

```suggestion
    if (It == Ranges.end())
      return {};
```
https://llvm.org/docs/CodingStandards.html#don-t-use-braces-on-simple-single-statement-bodies-of-if-else-loop-statements



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

Reply via email to