Support: Extract ScaledNumbers::compare()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211507 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith
2014-06-23 17:47:40 +00:00
parent 88a564f55e
commit 18a301e578
4 changed files with 87 additions and 35 deletions

View File

@ -285,4 +285,41 @@ TEST(ScaledNumberHelpersTest, getLgCeiling) {
EXPECT_EQ(INT32_MIN, getLgCeiling(UINT64_C(0), 1));
}
TEST(ScaledNumberHelpersTest, Compare) {
EXPECT_EQ(0, compare(UINT32_C(0), 0, UINT32_C(0), 1));
EXPECT_EQ(0, compare(UINT32_C(0), 0, UINT32_C(0), -10));
EXPECT_EQ(0, compare(UINT32_C(0), 0, UINT32_C(0), 20));
EXPECT_EQ(0, compare(UINT32_C(8), 0, UINT32_C(64), -3));
EXPECT_EQ(0, compare(UINT32_C(8), 0, UINT32_C(32), -2));
EXPECT_EQ(0, compare(UINT32_C(8), 0, UINT32_C(16), -1));
EXPECT_EQ(0, compare(UINT32_C(8), 0, UINT32_C(8), 0));
EXPECT_EQ(0, compare(UINT32_C(8), 0, UINT32_C(4), 1));
EXPECT_EQ(0, compare(UINT32_C(8), 0, UINT32_C(2), 2));
EXPECT_EQ(0, compare(UINT32_C(8), 0, UINT32_C(1), 3));
EXPECT_EQ(-1, compare(UINT32_C(0), 0, UINT32_C(1), 3));
EXPECT_EQ(-1, compare(UINT32_C(7), 0, UINT32_C(1), 3));
EXPECT_EQ(-1, compare(UINT32_C(7), 0, UINT32_C(64), -3));
EXPECT_EQ(1, compare(UINT32_C(9), 0, UINT32_C(1), 3));
EXPECT_EQ(1, compare(UINT32_C(9), 0, UINT32_C(64), -3));
EXPECT_EQ(1, compare(UINT32_C(9), 0, UINT32_C(0), 0));
EXPECT_EQ(0, compare(UINT64_C(0), 0, UINT64_C(0), 1));
EXPECT_EQ(0, compare(UINT64_C(0), 0, UINT64_C(0), -10));
EXPECT_EQ(0, compare(UINT64_C(0), 0, UINT64_C(0), 20));
EXPECT_EQ(0, compare(UINT64_C(8), 0, UINT64_C(64), -3));
EXPECT_EQ(0, compare(UINT64_C(8), 0, UINT64_C(32), -2));
EXPECT_EQ(0, compare(UINT64_C(8), 0, UINT64_C(16), -1));
EXPECT_EQ(0, compare(UINT64_C(8), 0, UINT64_C(8), 0));
EXPECT_EQ(0, compare(UINT64_C(8), 0, UINT64_C(4), 1));
EXPECT_EQ(0, compare(UINT64_C(8), 0, UINT64_C(2), 2));
EXPECT_EQ(0, compare(UINT64_C(8), 0, UINT64_C(1), 3));
EXPECT_EQ(-1, compare(UINT64_C(0), 0, UINT64_C(1), 3));
EXPECT_EQ(-1, compare(UINT64_C(7), 0, UINT64_C(1), 3));
EXPECT_EQ(-1, compare(UINT64_C(7), 0, UINT64_C(64), -3));
EXPECT_EQ(1, compare(UINT64_C(9), 0, UINT64_C(1), 3));
EXPECT_EQ(1, compare(UINT64_C(9), 0, UINT64_C(64), -3));
EXPECT_EQ(1, compare(UINT64_C(9), 0, UINT64_C(0), 0));
EXPECT_EQ(-1, compare(UINT64_MAX, 0, UINT64_C(1), 64));
}
} // end namespace