Jiho Ro via llvm-dev
2020-Jul-01 22:46 UTC
[llvm-dev] How to get information about data dependencies?
Hello, I had a question similar to this one in the link below. http://lists.llvm.org/pipermail/llvm-dev/2015-January/080589.html In addition, if we can't get RAW dependencies information using the provided llvm tools, how would I write a pass for it? Are there any helpful resources? Thanks, Jiho -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200701/78f95e90/attachment.html>
Michael Kruse via llvm-dev
2020-Jul-02 05:07 UTC
[llvm-dev] How to get information about data dependencies?
LLVM has multiple dependence analyses, each with its up- and downsides: * llvm::DependenceAnalysis * llvm::LoopAccessAnalysis * llvm::MemorySSA * polly::DependenceInfo Just running the analysis passes does not change anything, the analysis has to be used by a transformation pass. Since there is no common interface for dependence analysis, each transformation pass expects a specific analysis and runs it itself if necessary. For instance LoopVectorize uses LoopAccessAnalysis. None of these are well documented(*), I suggest to look at the transformation pass sources that use them. Michael (*) For MemorySSA, there is https://www.llvm.org/docs/MemorySSA.html Am Mi., 1. Juli 2020 um 19:52 Uhr schrieb Jiho Ro via llvm-dev <llvm-dev at lists.llvm.org>:> > Hello, > > I had a question similar to this one in the link below. > > http://lists.llvm.org/pipermail/llvm-dev/2015-January/080589.html > > In addition, if we can't get RAW dependencies information using the provided llvm tools, how would I write a pass for it? Are there any helpful resources? > > Thanks, > Jiho > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
David Greene via llvm-dev
2020-Jul-06 14:50 UTC
[llvm-dev] How to get information about data dependencies?
Michael Kruse via llvm-dev <llvm-dev at lists.llvm.org> writes:> LLVM has multiple dependence analyses, each with its up- and downsides: > > * llvm::DependenceAnalysis > * llvm::LoopAccessAnalysisCan someone explain the differences between these? As far as I can tell they essentially do the same thing (though perhaps one is more precise?). LAA seems to be used by vectorization (what else?) while DA seems to be used by loop transformations (what else?). I am not a loop opt guy so while I'm familiar with the basic ideas, the details are somewhat lost on me. Is there a reason to have two passes or should they be combined and maintained as one pass? If I have need of dependence analysis it's not clear which I should use and the comments are not much help. -David