Home | History | Annotate | Download | only in Support
      1 #include "llvm/Support/DataTypes.h"
      2 #include "llvm/Support/BlockFrequency.h"
      3 #include "llvm/Support/BranchProbability.h"
      4 
      5 #include "gtest/gtest.h"
      6 #include <climits>
      7 
      8 using namespace llvm;
      9 
     10 namespace {
     11 
     12 TEST(BlockFrequencyTest, OneToZero) {
     13   BlockFrequency Freq(1);
     14   BranchProbability Prob(UINT32_MAX - 1, UINT32_MAX);
     15   Freq *= Prob;
     16   EXPECT_EQ(Freq.getFrequency(), 0u);
     17 }
     18 
     19 TEST(BlockFrequencyTest, OneToOne) {
     20   BlockFrequency Freq(1);
     21   BranchProbability Prob(UINT32_MAX, UINT32_MAX);
     22   Freq *= Prob;
     23   EXPECT_EQ(Freq.getFrequency(), 1u);
     24 }
     25 
     26 TEST(BlockFrequencyTest, ThreeToOne) {
     27   BlockFrequency Freq(3);
     28   BranchProbability Prob(3000000, 9000000);
     29   Freq *= Prob;
     30   EXPECT_EQ(Freq.getFrequency(), 1u);
     31 }
     32 
     33 TEST(BlockFrequencyTest, MaxToHalfMax) {
     34   BlockFrequency Freq(UINT64_MAX);
     35   BranchProbability Prob(UINT32_MAX / 2, UINT32_MAX);
     36   Freq *= Prob;
     37   EXPECT_EQ(Freq.getFrequency(), 9223372034707292159LLu);
     38 }
     39 
     40 TEST(BlockFrequencyTest, BigToBig) {
     41   const uint64_t Big = 387246523487234346LL;
     42   const uint32_t P = 123456789;
     43   BlockFrequency Freq(Big);
     44   BranchProbability Prob(P, P);
     45   Freq *= Prob;
     46   EXPECT_EQ(Freq.getFrequency(), Big);
     47 }
     48 
     49 TEST(BlockFrequencyTest, MaxToMax) {
     50   BlockFrequency Freq(UINT64_MAX);
     51   BranchProbability Prob(UINT32_MAX, UINT32_MAX);
     52   Freq *= Prob;
     53   EXPECT_EQ(Freq.getFrequency(), UINT64_MAX);
     54 }
     55 
     56 }
     57