[llvm-commits] dependence analysis

Preston Briggs preston.briggs at gmail.com
Mon Sep 24 13:32:04 PDT 2012


This is an updated version of the dependence-analysis patch, reflecting
feedback from the walkthrough at Qualcomm a couple of weeks ago. There's
more documentation, better handling of SCEVs, many corrections, better
handling of symbolics by the GCD test, more special cases caught by the
WeakCrossing test, more test cases, etc.

It's a fairly complete implementation of the paper

Practical Dependence Testing
Gina Goff, Ken Kennedy, and Chau-Wen Tseng
PLDI 1991


It lacks the fancier MIV tests (it has only the RDIV test, the Delta test,
and the GCD test) and cannot yet propagate constraints between coupled RDIV
subscripts (discussed in Section 5.3.2 of the paper). I expect to add these
in the future.

It's organized as a FunctionPass with a single entry point that supports
testing for dependence between two instructions in a function. If there's
no dependence, it returns null. If there's a dependence, it returns a
pointer to a Dependence which can be queried about details (what kind of
dependence, is it loop independent, direction and distance vector entries,
etc). I haven't included every imaginable feature, but there's a good
selection that should be adequate for supporting many loop transformations.
Of course, it can be extended as necessary.

Included in the patch file are many test cases, commented with C code
showing the loops and array references.

Thanks,
Preston
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120924/8602d730/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: da.patch
Type: application/octet-stream
Size: 354437 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120924/8602d730/attachment.obj>


More information about the llvm-commits mailing list