diff options
Diffstat (limited to 'llvm/unittests/Frontend/HLSLRootSignatureRangesTest.cpp')
-rw-r--r-- | llvm/unittests/Frontend/HLSLRootSignatureRangesTest.cpp | 177 |
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 |