diff options
author | Michael Kruse <llvm@meinersbur.de> | 2017-08-21 23:04:55 +0000 |
---|---|---|
committer | Michael Kruse <llvm@meinersbur.de> | 2017-08-21 23:04:55 +0000 |
commit | f281ae599217703aa54582052db9583b186cf7c1 (patch) | |
tree | e6afd11ceb613aa33142de7052c167137197795d /polly/unittests | |
parent | ade14269cdd9e40c43621f4846ec3f26d7eedd04 (diff) | |
download | bcm5719-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.cpp | 49 |
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 |