summaryrefslogtreecommitdiffstats
path: root/polly/unittests
diff options
context:
space:
mode:
authorMichael Kruse <llvm@meinersbur.de>2017-08-21 23:04:55 +0000
committerMichael Kruse <llvm@meinersbur.de>2017-08-21 23:04:55 +0000
commitf281ae599217703aa54582052db9583b186cf7c1 (patch)
treee6afd11ceb613aa33142de7052c167137197795d /polly/unittests
parentade14269cdd9e40c43621f4846ec3f26d7eedd04 (diff)
downloadbcm5719-llvm-f281ae599217703aa54582052db9583b186cf7c1.tar.gz
bcm5719-llvm-f281ae599217703aa54582052db9583b186cf7c1.zip
[test] Add some test cases for computeArrayUnused.
llvm-svn: 311404
Diffstat (limited to 'polly/unittests')
-rw-r--r--polly/unittests/Isl/IslTest.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/polly/unittests/Isl/IslTest.cpp b/polly/unittests/Isl/IslTest.cpp
index f3a1b3aa5ac..b1e6fc85c35 100644
--- a/polly/unittests/Isl/IslTest.cpp
+++ b/polly/unittests/Isl/IslTest.cpp
@@ -784,6 +784,46 @@ TEST(DeLICM, computeArrayUnused) {
UMAP("{ Write[] -> Elt[] }"), UMAP("{}"),
ReadEltInSameInst, false, true));
+ // Two writes
+ EXPECT_EQ(
+ UMAP("{ Elt[] -> [i] : i <= 10 }"),
+ computeArrayUnused(UMAP("{ WriteA[] -> [0]; WriteB[] -> [10] }"),
+ UMAP("{ WriteA[] -> Elt[]; WriteB[] -> Elt[] }"),
+ UMAP("{}"), ReadEltInSameInst, false, true));
+
+ // Two unused zones
+ // read,write,read,write
+ EXPECT_EQ(
+ UMAP("{ Elt[] -> [i] : 0 < i <= 10; Elt[] -> [i] : 20 < i <= 30 }"),
+ computeArrayUnused(UMAP("{ ReadA[] -> [0]; WriteA[] -> [10]; ReadB[] "
+ "-> [20]; WriteB[] -> [30] }"),
+ UMAP("{ WriteA[] -> Elt[]; WriteB[] -> Elt[] }"),
+ UMAP("{ ReadA[] -> Elt[]; ReadB[] -> Elt[] }"),
+ ReadEltInSameInst, false, true));
+
+ // write, write
+ EXPECT_EQ(
+ UMAP("{ Elt[] -> [i] : i <= 10 }"),
+ computeArrayUnused(
+ UMAP("{ WriteA[] -> [0]; WriteB[] -> [10]; Read[] -> [20] }"),
+ UMAP("{ WriteA[] -> Elt[]; WriteB[] -> Elt[] }"),
+ UMAP("{ Read[] -> Elt[] }"), ReadEltInSameInst, false, true));
+
+ // write, read
+ EXPECT_EQ(UMAP("{ Elt[] -> [i] : i <= 0 }"),
+ computeArrayUnused(UMAP("{ Write[] -> [0]; Read[] -> [10] }"),
+ UMAP("{ Write[] -> Elt[] }"),
+ UMAP("{ Read[] -> Elt[] }"), ReadEltInSameInst,
+ false, true));
+
+ // read, write, read
+ EXPECT_EQ(UMAP("{ Elt[] -> [i] : 0 < i <= 10 }"),
+ computeArrayUnused(
+ UMAP("{ ReadA[] -> [0]; Write[] -> [10]; ReadB[] -> [20] }"),
+ UMAP("{ Write[] -> Elt[] }"),
+ UMAP("{ ReadA[] -> Elt[]; ReadB[] -> Elt[] }"),
+ ReadEltInSameInst, false, true));
+
// read, write, write
EXPECT_EQ(
UMAP("{ Elt[] -> [i] : 0 < i <= 20 }"),
@@ -791,6 +831,15 @@ TEST(DeLICM, computeArrayUnused) {
UMAP("{ Read[] -> [0]; WriteA[] -> [10]; WriteB[] -> [20] }"),
UMAP("{ WriteA[] -> Elt[]; WriteB[] -> Elt[] }"),
UMAP("{ Read[] -> Elt[] }"), ReadEltInSameInst, false, true));
+
+ // read, write, write, read
+ EXPECT_EQ(
+ UMAP("{ Elt[] -> [i] : 0 < i <= 20 }"),
+ computeArrayUnused(UMAP("{ ReadA[] -> [0]; WriteA[] -> [10]; WriteB[] "
+ "-> [20]; ReadB[] -> [30] }"),
+ UMAP("{ WriteA[] -> Elt[]; WriteB[] -> Elt[] }"),
+ UMAP("{ ReadA[] -> Elt[]; ReadB[] -> Elt[] }"),
+ ReadEltInSameInst, false, true));
}
// Read and write in same statement
OpenPOWER on IntegriCloud