diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-06-28 18:23:42 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2013-06-28 18:23:42 +0000 |
commit | c506e5d98cd558fc9769133696c8ab9451b090fa (patch) | |
tree | 94efa358d50a0ea5698fee6b9f80343ec011d4a1 /llvm/unittests/Support/BlockFrequencyTest.cpp | |
parent | afe8b967cc196bb276078bbc3fe6a8381b7ecfbe (diff) | |
download | llvm-c506e5d98cd558fc9769133696c8ab9451b090fa.zip llvm-c506e5d98cd558fc9769133696c8ab9451b090fa.tar.gz llvm-c506e5d98cd558fc9769133696c8ab9451b090fa.tar.bz2 |
Add a division operator to BlockFrequency.
Allow a BlockFrequency to be divided by a non-zero BranchProbability
with saturating arithmetic. This will be used to compute the frequency
of a loop header given the probability of leaving the loop.
Our long division algorithm already saturates on overflow, so that was a
freebie.
llvm-svn: 185184
Diffstat (limited to 'llvm/unittests/Support/BlockFrequencyTest.cpp')
-rw-r--r-- | llvm/unittests/Support/BlockFrequencyTest.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/unittests/Support/BlockFrequencyTest.cpp b/llvm/unittests/Support/BlockFrequencyTest.cpp index ff66bc4..4bcddfe 100644 --- a/llvm/unittests/Support/BlockFrequencyTest.cpp +++ b/llvm/unittests/Support/BlockFrequencyTest.cpp @@ -52,6 +52,24 @@ TEST(BlockFrequencyTest, MaxToMax) { EXPECT_EQ(Freq.getFrequency(), UINT64_MAX); } +TEST(BlockFrequency, Divide) { + BlockFrequency Freq(0x3333333333333333ULL); + Freq /= BranchProbability(1, 2); + EXPECT_EQ(Freq.getFrequency(), 0x6666666666666666ULL); +} + +TEST(BlockFrequencyTest, Saturate) { + BlockFrequency Freq(0x3333333333333333ULL); + Freq /= BranchProbability(100, 300); + EXPECT_EQ(Freq.getFrequency(), 0x9999999999999999ULL); + Freq /= BranchProbability(1, 2); + EXPECT_EQ(Freq.getFrequency(), UINT64_MAX); + + Freq = 0x1000000000000000ULL; + Freq /= BranchProbability(10000, 160000); + EXPECT_EQ(Freq.getFrequency(), UINT64_MAX); +} + TEST(BlockFrequencyTest, ProbabilityCompare) { BranchProbability A(4, 5); BranchProbability B(4U << 29, 5U << 29); |