[PATCH] D108885: [Delinerization] Keep array element byte offset.
Bardia Mahjour via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 8 13:08:50 PDT 2021
bmahjour added a comment.
> Note that if the element size passed to the delinearize function was chosen to be 12 (the true element size of the array), then delinearization would have been able to recover more meaningful subscripts for the outer dimensions without requiring a "byte offset". I wonder if we can improve the results for structure of arrays by choosing a better element size.
Correction: the access functions in my example do not divide 12, so choosing the "true element size" doesn't fix it :(
...but since delinearization is a heuristic, maybe we can heuristically pick something that does divide it evenly (eg a GCD or just choosing 1). If we choose 1, DA is able to produce expected result (with `-da-disable-delinearization-checks`):
ArrayDecl[UnknownSize][%n][%m][1]
ArrayRef[{-12,+,12}<%for.body>][{0,+,12}<%for.body5>][{4,+,12}<%for.body11>][0]
...
ArrayRef[{0,+,12}<%for.body>][{0,+,12}<%for.body5>][{4,+,12}<%for.body11>][0]
Src: %4 = load double, double* %b, align 1, !tbaa !3 --> Dst: store double %4, double* %b22, align 1, !tbaa !3
da analyze - consistent anti [-1 0 0]!
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D108885/new/
https://reviews.llvm.org/D108885
More information about the llvm-commits
mailing list