[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