1 #include "llvm/Support/BlockFrequency.h"
2 #include "llvm/Support/BranchProbability.h"
3 #include "llvm/Support/DataTypes.h"
4 #include "gtest/gtest.h"
11 TEST(BlockFrequencyTest, ZeroToZero) {
12 BlockFrequency Freq(0);
13 BranchProbability Prob(UINT32_MAX - 1, UINT32_MAX);
15 EXPECT_EQ(Freq.getFrequency(), 0u);
18 Freq *= BranchProbability::getZero();
19 EXPECT_EQ(Freq.getFrequency(), 0u);
22 TEST(BlockFrequencyTest, OneToZero) {
23 BlockFrequency Freq(1);
24 BranchProbability Prob(UINT32_MAX - 1, UINT32_MAX);
26 EXPECT_EQ(Freq.getFrequency(), 1u);
29 TEST(BlockFrequencyTest, OneToOne) {
30 BlockFrequency Freq(1);
31 BranchProbability Prob(UINT32_MAX, UINT32_MAX);
33 EXPECT_EQ(Freq.getFrequency(), 1u);
36 TEST(BlockFrequencyTest, ThreeToOne) {
37 BlockFrequency Freq(3);
38 BranchProbability Prob(3000000, 9000000);
40 EXPECT_EQ(Freq.getFrequency(), 1u);
43 TEST(BlockFrequencyTest, MaxToHalfMax) {
44 BlockFrequency Freq(UINT64_MAX);
45 BranchProbability Prob(UINT32_MAX / 2, UINT32_MAX);
47 EXPECT_EQ(Freq.getFrequency(), 9223372034707292159ULL);
50 TEST(BlockFrequencyTest, BigToBig) {
51 const uint64_t Big = 387246523487234346LL;
52 const uint32_t P = 123456789;
53 BlockFrequency Freq(Big);
54 BranchProbability Prob(P, P);
56 EXPECT_EQ(Freq.getFrequency(), Big);
59 TEST(BlockFrequencyTest, MaxToMax) {
60 BlockFrequency Freq(UINT64_MAX);
61 BranchProbability Prob(UINT32_MAX, UINT32_MAX);
63 EXPECT_EQ(Freq.getFrequency(), UINT64_MAX);
66 TEST(BlockFrequencyTest, ProbabilityCompare) {
67 BranchProbability A(4, 5);
68 BranchProbability B(4U << 29, 5U << 29);
69 BranchProbability C(3, 4);
85 BranchProbability BigZero(0, UINT32_MAX);
86 BranchProbability BigOne(UINT32_MAX, UINT32_MAX);
87 EXPECT_FALSE(BigZero == BigOne);
88 EXPECT_TRUE(BigZero != BigOne);
89 EXPECT_TRUE(BigZero < BigOne);
90 EXPECT_FALSE(BigZero > BigOne);
91 EXPECT_TRUE(BigZero <= BigOne);
92 EXPECT_FALSE(BigZero >= BigOne);