Recommit r250345, it was reverted in r250366 to investigate a bot failure.
[oota-llvm.git] / unittests / Support / BranchProbabilityTest.cpp
index 87a250919475aad3b32c91e024d9fcddc5429b43..37a5c3f0dc877a1b740aaeb3e3a7a22019dc488e 100644 (file)
@@ -287,4 +287,45 @@ TEST(BranchProbabilityTest, scaleBruteForce) {
   }
 }
 
+TEST(BranchProbabilityTest, NormalizeEdgeWeights) {
+  {
+    SmallVector<uint32_t, 2> Weights{0, 0};
+    BranchProbability::normalizeEdgeWeights(Weights.begin(), Weights.end());
+    EXPECT_EQ(1u, Weights[0]);
+    EXPECT_EQ(1u, Weights[1]);
+  }
+  {
+    SmallVector<uint32_t, 2> Weights{0, UINT32_MAX};
+    BranchProbability::normalizeEdgeWeights(Weights.begin(), Weights.end());
+    EXPECT_EQ(1u, Weights[0]);
+    EXPECT_EQ(UINT32_MAX - 1u, Weights[1]);
+  }
+  {
+    SmallVector<uint32_t, 2> Weights{1, UINT32_MAX};
+    BranchProbability::normalizeEdgeWeights(Weights.begin(), Weights.end());
+    EXPECT_EQ(1u, Weights[0]);
+    EXPECT_EQ(UINT32_MAX - 1u, Weights[1]);
+  }
+  {
+    SmallVector<uint32_t, 3> Weights{0, 0, UINT32_MAX};
+    BranchProbability::normalizeEdgeWeights(Weights.begin(), Weights.end());
+    EXPECT_EQ(1u, Weights[0]);
+    EXPECT_EQ(1u, Weights[1]);
+    EXPECT_EQ(UINT32_MAX / 2u, Weights[2]);
+  }
+  {
+    SmallVector<uint32_t, 2> Weights{UINT32_MAX, UINT32_MAX};
+    BranchProbability::normalizeEdgeWeights(Weights.begin(), Weights.end());
+    EXPECT_EQ(UINT32_MAX / 3u, Weights[0]);
+    EXPECT_EQ(UINT32_MAX / 3u, Weights[1]);
+  }
+  {
+    SmallVector<uint32_t, 3> Weights{UINT32_MAX, UINT32_MAX, UINT32_MAX};
+    BranchProbability::normalizeEdgeWeights(Weights.begin(), Weights.end());
+    EXPECT_EQ(UINT32_MAX / 4u, Weights[0]);
+    EXPECT_EQ(UINT32_MAX / 4u, Weights[1]);
+    EXPECT_EQ(UINT32_MAX / 4u, Weights[2]);
+  }
+}
+
 }