<div dir="ltr">Hi,<div><br></div><div>This is a proposal about implementing an analysis that calculates loop cost based on cache data. The primary motivation for implementing this is to write profitability measures for cache related optimizations like interchange, fusion, fission, pre-fetching and others.</div><div><br></div><div>I have implemented a prototypical version at <a href="http://reviews.llvm.org/D21124">http://reviews.llvm.org/D21124</a>.</div><div>The patch basically creates groups of references that would lie in the same cache line. Each group is then analysed with respect to innermost loops considering cache lines. Penalty for the reference is:</div><div>a. 1, if the reference is invariant with the innermost loop,</div><div>b. TripCount for non-unit stride access,</div><div>c. TripCount / CacheLineSize for a unit-stride access.</div><div>Loop Cost is then calculated as the sum of the reference penalties times the product of the loop bounds of the outer loops. This loop cost can then be used as a profitability measure for cache reuse related optimizations. This is just a brief description; please refer to [1] for more details.</div><div><br></div><div>A primary drawback in the above patch is the static use of Cache Line Size. I wish to get this data from tblgen/TTI and I am happy to submit patches on it.</div><div><br></div><div>Finally, if the community is interested in the above work, I have the following work-plan:</div><div>a. Update loop cost patch to a consistent, commit-able state.</div><div>b. Add cache data information to tblgen/TTI.</div><div>c. Rewrite Loop Interchange profitability to start using Loop Cost.</div><div><br></div><div>Please share your valuable thoughts.</div><div><br></div><div>Thank you.</div><div><br></div><div>References:</div><div>[1] [Carr-McKinley-Tseng] <a href="http://www.cs.utexas.edu/users/mckinley/papers/asplos-1994.pdf">http://www.cs.utexas.edu/users/mckinley/papers/asplos-1994.pdf</a></div><div><br></div><div>-- </div><div><div data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><br></div><div>Good time...</div><div>Vikram TV</div><div>CompilerTree Technologies</div><div>Mysore, Karnataka, INDIA</div></div></div></div></div>
</div></div>