From 52ae58259d0fd83448b82dd9e13782f230c1fd79 Mon Sep 17 00:00:00 2001 From: Hongbin Zheng Date: Mon, 28 Mar 2016 12:41:49 +0000 Subject: [PATCH] Add fine-grain dependences analysis to release notes. Differential Revision: http://reviews.llvm.org/D17905 llvm-svn: 264575 --- polly/docs/ReleaseNotes.rst | 11 +++++++++++ polly/lib/Analysis/DependenceInfo.cpp | 6 +++--- polly/test/DependenceInfo/fine_grain_dep_0.ll | 4 ++-- polly/test/DependenceInfo/reduction_complex_location.ll | 4 ++-- .../test/DependenceInfo/reduction_multiple_loops_array_sum.ll | 4 ++-- polly/test/DependenceInfo/sequential_loops.ll | 2 +- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/polly/docs/ReleaseNotes.rst b/polly/docs/ReleaseNotes.rst index 6054808..d2181ed 100644 --- a/polly/docs/ReleaseNotes.rst +++ b/polly/docs/ReleaseNotes.rst @@ -70,6 +70,17 @@ known only to read memory, read memory accessible through pointer arguments or access only memory accessible through pointer arguments. See also the function attributes ``readonly`` and ``argmemonly`` for more information. +Fine-grain dependences analysis +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In addition of the ScopStmt wise dependences analysis, now the "polly-dependence" +pass provides dependences analysis at memory reference wise and memory access wise. +The memory reference wise analysis distinguishes the accessed references in the +same statement, and generates dependences relationships between (statement, reference) +pairs. The memory access wise analysis distinguishes accesses in the same statement, +and generates dependences relationships between (statement, access) pairs. These +fine-grain dependences are enabled by "-polly-dependences-analysis-level=reference-wise" +and "-polly-dependences-analysis-level=access-wise", respectively. Update of the isl math library ------------------------------ diff --git a/polly/lib/Analysis/DependenceInfo.cpp b/polly/lib/Analysis/DependenceInfo.cpp index 225d841..1359748 100644 --- a/polly/lib/Analysis/DependenceInfo.cpp +++ b/polly/lib/Analysis/DependenceInfo.cpp @@ -73,12 +73,12 @@ static cl::opt OptAnalysisType( static cl::opt OptAnalysisLevel( "polly-dependences-analysis-level", cl::desc("The level of dependence analysis"), - cl::values(clEnumValN(Dependences::AL_Statement, "statement-level", + cl::values(clEnumValN(Dependences::AL_Statement, "statement-wise", "Statement-level analysis"), - clEnumValN(Dependences::AL_Reference, "reference-level", + clEnumValN(Dependences::AL_Reference, "reference-wise", "Memory reference level analysis that distinguish" " accessed references in the same statement"), - clEnumValN(Dependences::AL_Access, "access-level", + clEnumValN(Dependences::AL_Access, "access-wise", "Memory reference level analysis that distinguish" " access instructions in the same statement"), clEnumValEnd), diff --git a/polly/test/DependenceInfo/fine_grain_dep_0.ll b/polly/test/DependenceInfo/fine_grain_dep_0.ll index 126094e..5f384b9 100644 --- a/polly/test/DependenceInfo/fine_grain_dep_0.ll +++ b/polly/test/DependenceInfo/fine_grain_dep_0.ll @@ -1,5 +1,5 @@ -; RUN: opt %loadPolly -polly-dependences -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=reference-level -analyze < %s | FileCheck %s --check-prefix=REF -; RUN: opt %loadPolly -polly-dependences -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=access-level -analyze < %s | FileCheck %s --check-prefix=ACC +; RUN: opt %loadPolly -polly-dependences -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=reference-wise -analyze < %s | FileCheck %s --check-prefix=REF +; RUN: opt %loadPolly -polly-dependences -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=access-wise -analyze < %s | FileCheck %s --check-prefix=ACC ; ; REF: RAW dependences: ; REF-NEXT: [N] -> { [Stmt_for_body[i0] -> MemRef_a[]] -> [Stmt_for_body[4 + i0] -> MemRef_a[]] : 0 <= i0 <= -11 + N; [Stmt_for_body[i0] -> MemRef_b[]] -> [Stmt_for_body[6 + i0] -> MemRef_b[]] : 0 <= i0 <= -13 + N; Stmt_for_body[i0] -> Stmt_for_body[6 + i0] : 0 <= i0 <= -13 + N; Stmt_for_body[i0] -> Stmt_for_body[4 + i0] : 0 <= i0 <= -11 + N } diff --git a/polly/test/DependenceInfo/reduction_complex_location.ll b/polly/test/DependenceInfo/reduction_complex_location.ll index fa8b651..7d0f263 100644 --- a/polly/test/DependenceInfo/reduction_complex_location.ll +++ b/polly/test/DependenceInfo/reduction_complex_location.ll @@ -1,6 +1,6 @@ ; RUN: opt %loadPolly -polly-dependences -analyze < %s | FileCheck %s -; RUN: opt %loadPolly -polly-dependences -polly-dependences-analysis-level=reference-level -analyze < %s | FileCheck %s -; RUN: opt %loadPolly -polly-dependences -polly-dependences-analysis-level=access-level -analyze < %s | FileCheck %s +; RUN: opt %loadPolly -polly-dependences -polly-dependences-analysis-level=reference-wise -analyze < %s | FileCheck %s +; RUN: opt %loadPolly -polly-dependences -polly-dependences-analysis-level=access-wise -analyze < %s | FileCheck %s ; ; CHECK: RAW dependences: ; CHECK-NEXT: { } diff --git a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll index 0b22c33..db1bdca 100644 --- a/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll +++ b/polly/test/DependenceInfo/reduction_multiple_loops_array_sum.ll @@ -1,6 +1,6 @@ ; RUN: opt -basicaa %loadPolly -polly-dependences -analyze < %s | FileCheck %s -; RUN: opt -basicaa %loadPolly -polly-dependences -polly-dependences-analysis-level=reference-level -analyze < %s | FileCheck %s -; RUN: opt -basicaa %loadPolly -polly-dependences -polly-dependences-analysis-level=access-level -analyze < %s | FileCheck %s +; RUN: opt -basicaa %loadPolly -polly-dependences -polly-dependences-analysis-level=reference-wise -analyze < %s | FileCheck %s +; RUN: opt -basicaa %loadPolly -polly-dependences -polly-dependences-analysis-level=access-wise -analyze < %s | FileCheck %s ; ; Verify that only the inner reduction like accesses cause reduction dependences ; diff --git a/polly/test/DependenceInfo/sequential_loops.ll b/polly/test/DependenceInfo/sequential_loops.ll index 76df529..0b7427e 100644 --- a/polly/test/DependenceInfo/sequential_loops.ll +++ b/polly/test/DependenceInfo/sequential_loops.ll @@ -1,6 +1,6 @@ ; RUN: opt -S %loadPolly -basicaa -polly-dependences -analyze -polly-dependences-analysis-type=value-based < %s | FileCheck %s -check-prefix=VALUE ; RUN: opt -S %loadPolly -basicaa -polly-dependences -analyze -polly-dependences-analysis-type=memory-based < %s | FileCheck %s -check-prefix=MEMORY -; RUN: opt -S %loadPolly -basicaa -polly-dependences -analyze -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=access-level < %s | FileCheck %s -check-prefix=VALUE_ACCESS +; RUN: opt -S %loadPolly -basicaa -polly-dependences -analyze -polly-dependences-analysis-type=value-based -polly-dependences-analysis-level=access-wise < %s | FileCheck %s -check-prefix=VALUE_ACCESS ; VALUE-LABEL: Printing analysis 'Polly - Calculate dependences' for region: 'S1 => exit.3' in function 'sequential_writes': ; VALUE-NEXT: RAW dependences: -- 2.7.4