[llvm] 0e13ccc - [VPlan] Add initial VPDT test. (NFC)

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 20 01:52:08 PST 2023


Author: Florian Hahn
Date: 2023-01-20T09:51:07Z
New Revision: 0e13ccc69cf23b1d4a84d59d882717c6b2d5759e

URL: https://github.com/llvm/llvm-project/commit/0e13ccc69cf23b1d4a84d59d882717c6b2d5759e
DIFF: https://github.com/llvm/llvm-project/commit/0e13ccc69cf23b1d4a84d59d882717c6b2d5759e.diff

LOG: [VPlan] Add initial VPDT test. (NFC)

Added: 
    llvm/unittests/Transforms/Vectorize/VPDomTreeTest.cpp

Modified: 
    llvm/unittests/Transforms/Vectorize/CMakeLists.txt

Removed: 
    


################################################################################
diff  --git a/llvm/unittests/Transforms/Vectorize/CMakeLists.txt b/llvm/unittests/Transforms/Vectorize/CMakeLists.txt
index bfa3cadeeb631..dd411a2c1f6c0 100644
--- a/llvm/unittests/Transforms/Vectorize/CMakeLists.txt
+++ b/llvm/unittests/Transforms/Vectorize/CMakeLists.txt
@@ -8,6 +8,7 @@ set(LLVM_LINK_COMPONENTS
 
 add_llvm_unittest(VectorizeTests
   VPlanTest.cpp
+  VPDomTreeTest.cpp
   VPlanHCFGTest.cpp
   VPlanSlpTest.cpp
   )

diff  --git a/llvm/unittests/Transforms/Vectorize/VPDomTreeTest.cpp b/llvm/unittests/Transforms/Vectorize/VPDomTreeTest.cpp
new file mode 100644
index 0000000000000..9b071731a458e
--- /dev/null
+++ b/llvm/unittests/Transforms/Vectorize/VPDomTreeTest.cpp
@@ -0,0 +1,57 @@
+//===- llvm/unittests/Transforms/Vectorize/VPDomTreeTests.cpp - -----------===//
+//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "../lib/Transforms/Vectorize/VPlan.h"
+#include "../lib/Transforms/Vectorize/VPlanDominatorTree.h"
+#include "gtest/gtest.h"
+
+namespace llvm {
+namespace {
+
+TEST(VPDominatorTreeTest, DominanceNoRegionsTest) {
+  //   R1 {
+  //     VPBB1
+  //     /   \
+    // VPBB2  VPBB3
+  //    \    /
+  //    VPBB4
+  //  }
+  VPBasicBlock *VPBB1 = new VPBasicBlock("VPBB1");
+  VPBasicBlock *VPBB2 = new VPBasicBlock("VPBB2");
+  VPBasicBlock *VPBB3 = new VPBasicBlock("VPBB3");
+  VPBasicBlock *VPBB4 = new VPBasicBlock("VPBB4");
+  VPRegionBlock *R1 = new VPRegionBlock(VPBB1, VPBB4);
+  VPBB2->setParent(R1);
+  VPBB3->setParent(R1);
+
+  VPBlockUtils::connectBlocks(VPBB1, VPBB2);
+  VPBlockUtils::connectBlocks(VPBB1, VPBB3);
+  VPBlockUtils::connectBlocks(VPBB2, VPBB4);
+  VPBlockUtils::connectBlocks(VPBB3, VPBB4);
+
+  VPlan Plan;
+  Plan.setEntry(R1);
+  VPDominatorTree VPDT;
+  VPDT.recalculate(*R1);
+
+  EXPECT_TRUE(VPDT.dominates(VPBB1, VPBB4));
+  EXPECT_FALSE(VPDT.dominates(VPBB4, VPBB1));
+
+  EXPECT_TRUE(VPDT.dominates(VPBB1, VPBB2));
+  EXPECT_FALSE(VPDT.dominates(VPBB2, VPBB1));
+
+  EXPECT_TRUE(VPDT.dominates(VPBB1, VPBB3));
+  EXPECT_FALSE(VPDT.dominates(VPBB3, VPBB1));
+
+  EXPECT_EQ(VPDT.findNearestCommonDominator(VPBB2, VPBB3), VPBB1);
+  EXPECT_EQ(VPDT.findNearestCommonDominator(VPBB2, VPBB4), VPBB1);
+  EXPECT_EQ(VPDT.findNearestCommonDominator(VPBB4, VPBB4), VPBB4);
+}
+} // namespace
+} // namespace llvm


        


More information about the llvm-commits mailing list