[DA] Delinearization of fixed-size multi-dimensional arrays
authorBardia Mahjour <bmahjour@ca.ibm.com>
Wed, 26 Feb 2020 17:51:58 +0000 (12:51 -0500)
committerBardia Mahjour <bmahjour@ca.ibm.com>
Thu, 27 Feb 2020 15:29:01 +0000 (10:29 -0500)
commit1b811ff8a935fafb279ad9bad36d36058a129b42
treec41bccde2c7b3ad0abe01e0452fb6d9ce9392e70
parentbd97704eaaaab5a95ecb048ce343c1a4be5d94e5
[DA] Delinearization of fixed-size multi-dimensional arrays

Summary:
Currently the dependence analysis in LLVM is unable to compute accurate
dependence vectors for multi-dimensional fixed size arrays.
This is mainly because the delinearization algorithm in scalar evolution
relies on parametric terms to be present in the access functions. In the
case of fixed size arrays such parametric terms are not present, but we
can use the indexes from GEP instructions to recover the subscripts for
each dimension of the arrays. This patch adds this ability under the
existing option `-da-disable-delinearization-checks`.

Authored By: bmahjour

Reviewer: Meinersbur, sebpop, fhahn, dmgreen, grosser, etiotto, bollu

Reviewed By: Meinersbur

Subscribers: hiraditya, arphaman, Whitney, ppc-slack, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D72178
llvm/include/llvm/Analysis/DependenceAnalysis.h
llvm/lib/Analysis/DependenceAnalysis.cpp
llvm/test/Analysis/DependenceAnalysis/PreliminaryNoValidityCheckFixedSize.ll [new file with mode: 0644]
llvm/test/Analysis/DependenceAnalysis/SimpleSIVNoValidityCheckFixedSize.ll [new file with mode: 0644]
llvm/test/Transforms/LoopInterchange/currentLimitation.ll
llvm/test/Transforms/LoopInterchange/loop-interchange-optimization-remarks.ll
llvm/test/Transforms/LoopInterchange/profitability.ll