aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Frontend/HLSLRootSignatureRangesTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/Frontend/HLSLRootSignatureRangesTest.cpp')
-rw-r--r--llvm/unittests/Frontend/HLSLRootSignatureRangesTest.cpp177
1 files changed, 0 insertions, 177 deletions
diff --git a/llvm/unittests/Frontend/HLSLRootSignatureRangesTest.cpp b/llvm/unittests/Frontend/HLSLRootSignatureRangesTest.cpp
deleted file mode 100644
index be3f51e..0000000
--- a/llvm/unittests/Frontend/HLSLRootSignatureRangesTest.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-//===------ HLSLRootSignatureRangeTest.cpp - RootSignature Range tests ----===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Frontend/HLSL/RootSignatureValidations.h"
-#include "gtest/gtest.h"
-
-using namespace llvm::hlsl::rootsig;
-
-namespace {
-
-TEST(HLSLRootSignatureTest, NoOverlappingInsertTests) {
- // Ensures that there is never a reported overlap
- ResourceRange::MapT::Allocator Allocator;
- ResourceRange Range(Allocator);
-
- RangeInfo A;
- A.LowerBound = 0;
- A.UpperBound = 3;
- EXPECT_EQ(Range.insert(A), std::nullopt);
-
- RangeInfo B;
- B.LowerBound = 4;
- B.UpperBound = 7;
- EXPECT_EQ(Range.insert(B), std::nullopt);
-
- RangeInfo C;
- C.LowerBound = 10;
- C.UpperBound = RangeInfo::Unbounded;
- EXPECT_EQ(Range.insert(C), std::nullopt);
-
- // A = [0;3]
- EXPECT_EQ(Range.lookup(0), &A);
- EXPECT_EQ(Range.lookup(2), &A);
- EXPECT_EQ(Range.lookup(3), &A);
-
- // B = [4;7]
- EXPECT_EQ(Range.lookup(4), &B);
- EXPECT_EQ(Range.lookup(5), &B);
- EXPECT_EQ(Range.lookup(7), &B);
-
- EXPECT_EQ(Range.lookup(8), nullptr);
- EXPECT_EQ(Range.lookup(9), nullptr);
-
- // C = [10;unbounded]
- EXPECT_EQ(Range.lookup(10), &C);
- EXPECT_EQ(Range.lookup(42), &C);
- EXPECT_EQ(Range.lookup(98237423), &C);
- EXPECT_EQ(Range.lookup(RangeInfo::Unbounded), &C);
-}
-
-TEST(HLSLRootSignatureTest, SingleOverlappingInsertTests) {
- // Ensures that we correctly report an overlap when we insert a range that
- // overlaps with one other range but does not cover (replace) it
- ResourceRange::MapT::Allocator Allocator;
- ResourceRange Range(Allocator);
-
- RangeInfo A;
- A.LowerBound = 1;
- A.UpperBound = 5;
- EXPECT_EQ(Range.insert(A), std::nullopt);
-
- RangeInfo B;
- B.LowerBound = 0;
- B.UpperBound = 2;
- EXPECT_EQ(Range.insert(B).value(), &A);
-
- RangeInfo C;
- C.LowerBound = 4;
- C.UpperBound = RangeInfo::Unbounded;
- EXPECT_EQ(Range.insert(C).value(), &A);
-
- // A = [1;5]
- EXPECT_EQ(Range.lookup(1), &A);
- EXPECT_EQ(Range.lookup(2), &A);
- EXPECT_EQ(Range.lookup(3), &A);
- EXPECT_EQ(Range.lookup(4), &A);
- EXPECT_EQ(Range.lookup(5), &A);
-
- // B = [0;0]
- EXPECT_EQ(Range.lookup(0), &B);
-
- // C = [6; unbounded]
- EXPECT_EQ(Range.lookup(6), &C);
- EXPECT_EQ(Range.lookup(RangeInfo::Unbounded), &C);
-}
-
-TEST(HLSLRootSignatureTest, MultipleOverlappingInsertTests) {
- // Ensures that we correctly report an overlap when inserted range
- // overlaps more than one range and it does not cover (replace) either
- // range. In this case it will just fill in the interval between the two
- ResourceRange::MapT::Allocator Allocator;
- ResourceRange Range(Allocator);
-
- RangeInfo A;
- A.LowerBound = 0;
- A.UpperBound = 2;
- EXPECT_EQ(Range.insert(A), std::nullopt);
-
- RangeInfo B;
- B.LowerBound = 4;
- B.UpperBound = 6;
- EXPECT_EQ(Range.insert(B), std::nullopt);
-
- RangeInfo C;
- C.LowerBound = 1;
- C.UpperBound = 5;
- EXPECT_EQ(Range.insert(C).value(), &A);
-
- // A = [0;2]
- EXPECT_EQ(Range.lookup(0), &A);
- EXPECT_EQ(Range.lookup(1), &A);
- EXPECT_EQ(Range.lookup(2), &A);
-
- // B = [4;6]
- EXPECT_EQ(Range.lookup(4), &B);
- EXPECT_EQ(Range.lookup(5), &B);
- EXPECT_EQ(Range.lookup(6), &B);
-
- // C = [3;3]
- EXPECT_EQ(Range.lookup(3), &C);
-}
-
-TEST(HLSLRootSignatureTest, CoverInsertTests) {
- // Ensures that we correctly report an overlap when inserted range
- // covers one or more ranges
- ResourceRange::MapT::Allocator Allocator;
- ResourceRange Range(Allocator);
-
- RangeInfo A;
- A.LowerBound = 0;
- A.UpperBound = 2;
- EXPECT_EQ(Range.insert(A), std::nullopt);
-
- RangeInfo B;
- B.LowerBound = 4;
- B.UpperBound = 5;
- EXPECT_EQ(Range.insert(B), std::nullopt);
-
- // Covers B
- RangeInfo C;
- C.LowerBound = 4;
- C.UpperBound = 6;
- EXPECT_EQ(Range.insert(C).value(), &B);
-
- // A = [0;2]
- // C = [4;6] <- covers reference to B
- EXPECT_EQ(Range.lookup(0), &A);
- EXPECT_EQ(Range.lookup(1), &A);
- EXPECT_EQ(Range.lookup(2), &A);
- EXPECT_EQ(Range.lookup(3), nullptr);
- EXPECT_EQ(Range.lookup(4), &C);
- EXPECT_EQ(Range.lookup(5), &C);
- EXPECT_EQ(Range.lookup(6), &C);
-
- // Covers all other ranges
- RangeInfo D;
- D.LowerBound = 0;
- D.UpperBound = 7;
- EXPECT_EQ(Range.insert(D).value(), &A);
-
- // D = [0;7] <- Covers reference to A and C
- EXPECT_EQ(Range.lookup(0), &D);
- EXPECT_EQ(Range.lookup(1), &D);
- EXPECT_EQ(Range.lookup(2), &D);
- EXPECT_EQ(Range.lookup(3), &D);
- EXPECT_EQ(Range.lookup(4), &D);
- EXPECT_EQ(Range.lookup(5), &D);
- EXPECT_EQ(Range.lookup(6), &D);
- EXPECT_EQ(Range.lookup(7), &D);
-}
-
-} // namespace