diff options
author | Roman Gareev <gareevroman@gmail.com> | 2017-02-23 11:44:12 +0000 |
---|---|---|
committer | Roman Gareev <gareevroman@gmail.com> | 2017-02-23 11:44:12 +0000 |
commit | 96e1119a9634b54c41400577c906cf449f92ecda (patch) | |
tree | 6390d1c5548c42359907c65cc1802c1c90c62dbd | |
parent | 14b370c1bf752ecdee7486373e460644590fe741 (diff) | |
download | bcm5719-llvm-96e1119a9634b54c41400577c906cf449f92ecda.tar.gz bcm5719-llvm-96e1119a9634b54c41400577c906cf449f92ecda.zip |
Make optimizations based on pattern matching be enabled by default
Currently, pattern based optimizations of Polly can identify matrix
multiplication and optimize it according to BLIS matmul optimization pattern
(see ScheduleTreeOptimizer for details). This patch makes optimizations
based on pattern matching be enabled by default.
Reviewed-by: Tobias Grosser <tobias@grosser.es>
Differential Revision: https://reviews.llvm.org/D30293
llvm-svn: 295958
5 files changed, 18 insertions, 9 deletions
diff --git a/polly/lib/Transform/ScheduleOptimizer.cpp b/polly/lib/Transform/ScheduleOptimizer.cpp index 0599659fe6d..546ad40d0d7 100644 --- a/polly/lib/Transform/ScheduleOptimizer.cpp +++ b/polly/lib/Transform/ScheduleOptimizer.cpp @@ -226,7 +226,7 @@ static cl::list<int> static cl::opt<bool> PMBasedOpts("polly-pattern-matching-based-opts", cl::desc("Perform optimizations based on pattern matching"), - cl::init(false), cl::ZeroOrMore, cl::cat(PollyCategory)); + cl::init(true), cl::ZeroOrMore, cl::cat(PollyCategory)); static cl::opt<bool> OptimizedScops( "polly-optimized-scops", diff --git a/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll b/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll index 773a09b9e97..ede09e7c3fb 100644 --- a/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll +++ b/polly/test/ScheduleOptimizer/full_partial_tile_separation.ll @@ -1,4 +1,6 @@ -; RUN: opt -S %loadPolly -polly-vectorizer=stripmine -polly-opt-isl -polly-ast -analyze < %s | FileCheck %s +; RUN: opt -S %loadPolly -polly-pattern-matching-based-opts=false \ +; RUN: -polly-vectorizer=stripmine -polly-opt-isl -polly-ast -analyze \ +; RUN: < %s | FileCheck %s ; CHECK: // 1st level tiling - Tiles ; CHECK-NEXT: #pragma known-parallel ; CHECK-NEXT: for (int c0 = 0; c0 <= floord(ni - 1, 32); c0 += 1) diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll index b30d4e798c5..179b612f361 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts.ll @@ -1,4 +1,5 @@ -; RUN: opt %loadPolly -polly-opt-isl -debug < %s 2>&1| FileCheck %s +; RUN: opt %loadPolly -polly-opt-isl -polly-pattern-matching-based-opts=false \ +; RUN: -debug < %s 2>&1| FileCheck %s ; RUN: opt %loadPolly -polly-opt-isl -polly-pattern-matching-based-opts=true -debug < %s 2>&1| FileCheck %s --check-prefix=PATTERN-MATCHING-OPTS ; REQUIRES: asserts ; diff --git a/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll b/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll index 39ef5890ed5..4c752c0bb09 100644 --- a/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll +++ b/polly/test/ScheduleOptimizer/prevectorization-without-tiling.ll @@ -1,4 +1,6 @@ -; RUN: opt -S %loadPolly -basicaa -polly-opt-isl -polly-tiling=false -polly-vectorizer=polly -polly-ast -analyze < %s | FileCheck %s +; RUN: opt -S %loadPolly -basicaa -polly-opt-isl -polly-tiling=false \ +; RUN: -polly-pattern-matching-based-opts=false -polly-vectorizer=polly \ +; RUN: -polly-ast -analyze < %s | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" @C = common global [1536 x [1536 x float]] zeroinitializer, align 16 diff --git a/polly/test/ScheduleOptimizer/prevectorization.ll b/polly/test/ScheduleOptimizer/prevectorization.ll index 5395fd2c4f0..1888ae03191 100644 --- a/polly/test/ScheduleOptimizer/prevectorization.ll +++ b/polly/test/ScheduleOptimizer/prevectorization.ll @@ -1,10 +1,14 @@ -; RUN: opt -S %loadPolly -basicaa -polly-opt-isl -polly-vectorizer=polly -polly-ast -analyze < %s | FileCheck %s -; RUN: opt -S %loadPolly -basicaa -polly-opt-isl -polly-vectorizer=stripmine -polly-ast -analyze < %s | FileCheck %s +; RUN: opt -S %loadPolly -basicaa -polly-opt-isl \ +; RUN: -polly-pattern-matching-based-opts=false -polly-vectorizer=polly \ +; RUN: -polly-ast -analyze < %s | FileCheck %s +; RUN: opt -S %loadPolly -basicaa -polly-opt-isl \ +; RUN: -polly-pattern-matching-based-opts=false -polly-vectorizer=stripmine \ +; RUN: -polly-ast -analyze < %s | FileCheck %s ; RUN: opt -S %loadPolly -basicaa -polly-opt-isl \ -; RUN: -polly-vectorizer=polly -polly-ast -analyze \ -; RUN: -polly-prevect-width=16 < %s | \ -; RUN: FileCheck %s -check-prefix=VEC16 +; RUN: -polly-vectorizer=polly -polly-pattern-matching-based-opts=false \ +; RUN: -polly-ast -analyze -polly-prevect-width=16 < %s | \ +; RUN: FileCheck %s -check-prefix=VEC16 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" |