diff options
author | Tobias Grosser <tobias@grosser.es> | 2017-08-22 21:58:48 +0000 |
---|---|---|
committer | Tobias Grosser <tobias@grosser.es> | 2017-08-22 21:58:48 +0000 |
commit | 4a07bbe3f67c1f78da4522a1e9674ab89944653d (patch) | |
tree | 73ba116de55b1a62413fbe427500f23808243ae1 /polly/test | |
parent | e158f7c329b599dfb0b481f8ce25d520e940a3d7 (diff) | |
download | bcm5719-llvm-4a07bbe3f67c1f78da4522a1e9674ab89944653d.tar.gz bcm5719-llvm-4a07bbe3f67c1f78da4522a1e9674ab89944653d.zip |
[IRBuilder] Only emit alias scop metadata for arrays, but not scalars
Summary:
There is no need to emit alias metadata for scalars, as basicaa will easily
distinguish them from arrays. This reduces the size of the metadata we generate.
This is especially useful after we moved to -polly-position=before-vectorizer,
where a lot more scalar dependences are introduced, which increased the size of
the alias analysis metadata and made us commonly reach the limits after which
we do not emit alias metadata that have been introduced to prevent quadratic
growth of this alias metadata.
This improves 2mm performance from 1.5 seconds to 0.17 seconds.
Reviewers: Meinersbur, bollu, singam-sanjay
Reviewed By: Meinersbur
Subscribers: pollydev, llvm-commits
Tags: #polly
Differential Revision: https://reviews.llvm.org/D37028
llvm-svn: 311498
Diffstat (limited to 'polly/test')
-rw-r--r-- | polly/test/Isl/CodeGen/MemAccess/create_arrays.ll | 17 | ||||
-rw-r--r-- | polly/test/ScheduleOptimizer/pattern-matching-based-opts_10.ll | 10 |
2 files changed, 13 insertions, 14 deletions
diff --git a/polly/test/Isl/CodeGen/MemAccess/create_arrays.ll b/polly/test/Isl/CodeGen/MemAccess/create_arrays.ll index e08c8d55a45..97e586076f7 100644 --- a/polly/test/Isl/CodeGen/MemAccess/create_arrays.ll +++ b/polly/test/Isl/CodeGen/MemAccess/create_arrays.ll @@ -32,15 +32,14 @@ ; CODEGEN: {{%.*}} = load double, double* %polly.access.E, align 8, !alias.scope [[TAG0:![0-9]+]], !noalias [[TAG2:![0-9]+]] ; CODEGEN: store double {{%.*}}, double* %scevgep36, align 8, !alias.scope [[TAG5:![0-9]+]], !noalias [[TAG8:![0-9]+]] ; -; CODEGEN-DAG: [[TAG0]] = distinct !{[[TAG0]], [[TAG1:![0-9]+]], !"polly.alias.scope.E"} -; CODEGEN-DAG: [[TAG1]] = distinct !{[[TAG1]], !"polly.alias.scope.domain"} -; CODEGEN-DAG: [[TAG2]] = !{[[TAG3:![0-9]+]], [[TAG4:![0-9]+]], [[TAG5:![0-9]+]], [[TAG6:![0-9]+]], [[TAG7:![0-9]+]]} -; CODEGEN-DAG: [[TAG3]] = distinct !{[[TAG3]], [[TAG1]], !"polly.alias.scope.MemRef_B"} -; CODEGEN-DAG: [[TAG4]] = distinct !{[[TAG4]], [[TAG1]], !"polly.alias.scope.MemRef_beta"} -; CODEGEN-DAG: [[TAG5]] = distinct !{[[TAG5]], [[TAG1]], !"polly.alias.scope.MemRef_A"} -; CODEGEN-DAG: [[TAG6]] = distinct !{[[TAG6]], [[TAG1]], !"polly.alias.scope.D"} -; CODEGEN-DAG: [[TAG7]] = distinct !{[[TAG7]], [[TAG1]], !"polly.alias.scope.F"} -; CODEGEN-DAG: [[TAG8]] = !{[[TAG3]], [[TAG4]], [[TAG6]], [[TAG0]], [[TAG7]]} +; CODEGEN: [[TAG0]] = distinct !{[[TAG0]], [[TAG1:![0-9]+]], !"polly.alias.scope.E"} +; CODEGEN: [[TAG1]] = distinct !{[[TAG1]], !"polly.alias.scope.domain"} +; CODEGEN: [[TAG2]] = !{[[TAG3:![0-9]+]], [[TAG4:![0-9]+]], [[TAG5:![0-9]+]], [[TAG6:![0-9]+]]} +; CODEGEN: [[TAG3]] = distinct !{[[TAG3]], [[TAG1]], !"polly.alias.scope.MemRef_B"} +; CODEGEN: [[TAG4]] = distinct !{[[TAG4]], [[TAG1]], !"polly.alias.scope.MemRef_A"} +; CODEGEN: [[TAG5]] = distinct !{[[TAG5]], [[TAG1]], !"polly.alias.scope.D"} +; CODEGEN: [[TAG6]] = distinct !{[[TAG6]], [[TAG1]], !"polly.alias.scope.F"} +; CODEGEN: [[TAG7:![0-9]+]] = !{[[TAG3]], [[TAG5]], [[TAG0]], [[TAG6]]} ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-unknown" diff --git a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_10.ll b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_10.ll index 26349671a26..c7b7d4f682f 100644 --- a/polly/test/ScheduleOptimizer/pattern-matching-based-opts_10.ll +++ b/polly/test/ScheduleOptimizer/pattern-matching-based-opts_10.ll @@ -12,13 +12,13 @@ ; This test case checks whether Polly generates second level alias metadata ; to distinguish the specific accesses in case of the ublas gemm kernel. ; -; CHECK: !13 = distinct !{!13, !0, !"second level alias metadata"} +; CHECK: !11 = distinct !{!11, !0, !"second level alias metadata"} +; CHECK: !12 = distinct !{!12, !0, !"second level alias metadata"} +; CHECK: !13 = !{!3, !4, !5, !6, !11} ; CHECK: !14 = distinct !{!14, !0, !"second level alias metadata"} -; CHECK: !15 = !{!3, !4, !5, !6, !7, !8, !13} +; CHECK: !15 = !{!3, !4, !5, !6, !11, !12} ; CHECK: !16 = distinct !{!16, !0, !"second level alias metadata"} -; CHECK: !17 = !{!3, !4, !5, !6, !7, !8, !13, !14} -; CHECK: !18 = distinct !{!18, !0, !"second level alias metadata"} -; CHECK: !19 = !{!3, !4, !5, !6, !7, !8, !13, !14, !16} +; CHECK: !17 = !{!3, !4, !5, !6, !11, !12, !14} ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-unknown" |