Krzysztof Parzyszek
2013-Jul-31 13:53 UTC
[LLVMdev] IR Passes and TargetTransformInfo: Straw Man
On 7/30/2013 11:44 PM, Chris Lattner wrote:> > The canonical form should be that loop invariants are hoisted.The canonical form should not depend on the knowledge as to what is invariant and what isn't. It has more to do with preserving certain "common" properties of a loop, such as header, preheader, latch branch, etc.> Optimizations should not depend on perfect loops.What do you mean by "perfect loops"? I was talking about perfect nests. -K -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Chris Lattner
2013-Jul-31 17:20 UTC
[LLVMdev] IR Passes and TargetTransformInfo: Straw Man
On Jul 31, 2013, at 6:53 AM, Krzysztof Parzyszek <kparzysz at codeaurora.org> wrote:> On 7/30/2013 11:44 PM, Chris Lattner wrote: >> >> The canonical form should be that loop invariants are hoisted. > > The canonical form should not depend on the knowledge as to what is invariant and what isn't. It has more to do with preserving certain "common" properties of a loop, such as header, preheader, latch branch, etc.Canonicalization of the IR is not about guarantees, it is about what assumptions passes can make and what form they have to tolerate.>> Optimizations should not depend on perfect loops. > > What do you mean by "perfect loops"? I was talking about perfect nests.I'm talking about perfect loop nests, as in the classical fortran loop transformation sense. -Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130731/672d7c62/attachment.html>
Krzysztof Parzyszek
2013-Jul-31 17:40 UTC
[LLVMdev] IR Passes and TargetTransformInfo: Straw Man
On 7/31/2013 12:20 PM, Chris Lattner wrote:> On Jul 31, 2013, at 6:53 AM, Krzysztof Parzyszek > <kparzysz at codeaurora.org <mailto:kparzysz at codeaurora.org>> wrote: >> On 7/30/2013 11:44 PM, Chris Lattner wrote: >>> >>> The canonical form should be that loop invariants are hoisted. >> >> The canonical form should not depend on the knowledge as to what is >> invariant and what isn't. It has more to do with preserving certain >> "common" properties of a loop, such as header, preheader, latch >> branch, etc. > > Canonicalization of the IR is not about guarantees, it is about what > assumptions passes can make and what form they have to tolerate.Then the transformations that need to assume that invariants were hoisted could be run after LICM. Since loops are defined in terms of regions (back-edges), what makes sense is a canonical form that normalizes the structure into a common form. Whether the invariants are hoisted or not doesn't need to be a part of that.>>> Optimizations should not depend on perfect loops. >> >> What do you mean by "perfect loops"? I was talking about perfect nests. > > I'm talking about perfect loop nests, as in the classical fortran loop > transformation sense.Most nest optimizations only apply to perfect nests. Each such optimization could try to "fix" the nest for its own purposes, but it would be a lot of duplicated effort. Whatever c-n does, it should not be getting in the way. -K -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Apparently Analagous Threads
- [LLVMdev] IR Passes and TargetTransformInfo: Straw Man
- [LLVMdev] IR Passes and TargetTransformInfo: Straw Man
- [LLVMdev] IR Passes and TargetTransformInfo: Straw Man
- [LLVMdev] IR Passes and TargetTransformInfo: Straw Man
- [LLVMdev] IR Passes and TargetTransformInfo: Straw Man