Venkataramanan Kumar via llvm-dev
2018-Sep-18 13:30 UTC
[llvm-dev] Regarding Dependence distance dump
Hi, For the below test case, I need the dependence distance between the array references "a[j][i]" and "a[j-1][i-2]". --Snip-- int a[5][5]; int b[10]; void test() { for (int j=1;j<5;j++) for (int i=2;i<5;i++) { a[j][i] = 3.0; b[i]= a[j-1][i-2] ; } } --Snip- Compile steps clang -O1 -emit-llvm -S test.c opt -analyze -da dist.ll I tried dumping the dependence information with LLVM trunk (2018_09_17), it shows: Printing analysis 'Dependence Analysis' for function 'test': da analyze - none! da analyze - flow [< <>]! <== dumps direction vector da analyze - none! da analyze - none! da analyze - none! da analyze - consistent output [S 0]! LLVM Release 6.0.1 dumps the expected distance. Printing analysis 'Dependence Analysis' for function 'test': da analyze - none! da analyze - consistent flow [1 2]! da analyze - none! da analyze - none! da analyze - none! da analyze - consistent output [S 0]! In trunk, it is now showing directions instead of distances. How to get the dependence distance? regards, Venkat. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180918/8ec02f89/attachment.html>
Venkataramanan Kumar via llvm-dev
2018-Sep-19 09:58 UTC
[llvm-dev] Regarding Dependence distance dump
Hi, I tired to see when this behavior changed in LLVM. It seems to start from. --snip-- commit 95e5d37d5868ebde2302bc302c1e0af407c5646d Author: Sebastian Pop <sebpop at gmail.com> Date: Tue Mar 6 21:55:59 2018 +0000 DA: remove uses of GEP, only ask SCEV --snip-- https://reviews.llvm.org/D35430 Review URL says "GEP" based approach was wrong for multidimensional array references. The LLVM-DA now uses SCEV representation. But why we are not getting the distance with SCEV? Current DA will not work for multidimensional arrays? I need to get dependence distance for a transformation that I am working on. How do I get distance for such cases, esp multidimensional arrays? Thanks and regards, Venkat. On Tue, 18 Sep 2018 at 19:00, Venkataramanan Kumar < venkataramanan.kumar.llvm at gmail.com> wrote:> Hi, > > For the below test case, I need the dependence distance between the array > references "a[j][i]" and "a[j-1][i-2]". > > --Snip-- > int a[5][5]; > int b[10]; > > void test() > { > for (int j=1;j<5;j++) > for (int i=2;i<5;i++) > { > a[j][i] = 3.0; > b[i]= a[j-1][i-2] ; > } > } > --Snip- > > Compile steps > clang -O1 -emit-llvm -S test.c > opt -analyze -da dist.ll > > I tried dumping the dependence information with LLVM trunk (2018_09_17), > it shows: > > Printing analysis 'Dependence Analysis' for function 'test': > da analyze - none! > da analyze - flow [< <>]! <== dumps direction vector > da analyze - none! > da analyze - none! > da analyze - none! > da analyze - consistent output [S 0]! > > LLVM Release 6.0.1 dumps the expected distance. > Printing analysis 'Dependence Analysis' for function 'test': > da analyze - none! > da analyze - consistent flow [1 2]! > da analyze - none! > da analyze - none! > da analyze - none! > da analyze - consistent output [S 0]! > > In trunk, it is now showing directions instead of distances. > How to get the dependence distance? > > regards, > Venkat. >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180919/60e3b1b6/attachment.html>
Sebastian Pop via llvm-dev
2018-Sep-19 22:26 UTC
[llvm-dev] Regarding Dependence distance dump
On Wed, Sep 19, 2018 at 4:58 AM Venkataramanan Kumar < venkataramanan.kumar.llvm at gmail.com> wrote:> Hi, > > I tired to see when this behavior changed in LLVM. > It seems to start from. > --snip-- > commit 95e5d37d5868ebde2302bc302c1e0af407c5646d > Author: Sebastian Pop <sebpop at gmail.com> > Date: Tue Mar 6 21:55:59 2018 +0000 > > DA: remove uses of GEP, only ask SCEV > --snip-- > > https://reviews.llvm.org/D35430 > Review URL says "GEP" based approach was wrong for multidimensional array > references. The LLVM-DA now uses SCEV representation. But why we are not > getting the distance with SCEV? Current DA will not work for > multidimensional arrays? >It should work with delinearization of multi-dim arrays.> > I need to get dependence distance for a transformation that I am working > on. How do I get distance for such cases, esp multidimensional arrays? > > Thanks and regards, > Venkat. > > On Tue, 18 Sep 2018 at 19:00, Venkataramanan Kumar < > venkataramanan.kumar.llvm at gmail.com> wrote: > >> Hi, >> >> For the below test case, I need the dependence distance between the array >> references "a[j][i]" and "a[j-1][i-2]". >> >> --Snip-- >> int a[5][5]; >> int b[10]; >> >> void test() >> { >> for (int j=1;j<5;j++) >> for (int i=2;i<5;i++) >> { >> a[j][i] = 3.0; >> b[i]= a[j-1][i-2] ; >> } >> } >> --Snip- >> >> Compile steps >> clang -O1 -emit-llvm -S test.c >> opt -analyze -da dist.ll >> >>you are missing the -delinearize flag to opt.> I tried dumping the dependence information with LLVM trunk (2018_09_17), >> it shows: >> >> Printing analysis 'Dependence Analysis' for function 'test': >> da analyze - none! >> da analyze - flow [< <>]! <== dumps direction vector >> da analyze - none! >> da analyze - none! >> da analyze - none! >> da analyze - consistent output [S 0]! >> >> LLVM Release 6.0.1 dumps the expected distance. >> Printing analysis 'Dependence Analysis' for function 'test': >> da analyze - none! >> da analyze - consistent flow [1 2]! >> da analyze - none! >> da analyze - none! >> da analyze - none! >> da analyze - consistent output [S 0]! >> >> In trunk, it is now showing directions instead of distances. >> How to get the dependence distance? >> >> regards, >> Venkat. >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180919/1937f35d/attachment.html>