Adve, Vikram Sadanand
2013-Aug-06 17:42 UTC
[LLVMdev] Potential SimplifyCFG optimization; hammock to diamond transformation
Message: 6 Date: Tue, 6 Aug 2013 10:46:19 -0400 From: Chad Rosier <chad.rosier at gmail.com<mailto:chad.rosier at gmail.com>> To: llvmdev <llvmdev at cs.uiuc.edu<mailto:llvmdev at cs.uiuc.edu>> Subject: [LLVMdev] Potential SimplifyCFG optimization; hammock to diamond transformation Message-ID: <CAMo3wbR6x1wBzb17=GrkERV7kvzx2RdpuheFzyxkQEs3BBvKaw at mail.gmail.com<mailto:CAMo3wbR6x1wBzb17=GrkERV7kvzx2RdpuheFzyxkQEs3BBvKaw at mail.gmail.com>> Content-Type: text/plain; charset="iso-8859-1" All, I have some code that looks like the following: { double a, b, c; for (...) { ... a = lots of FP math; b = lots of FP math; c = lots of FP math; if (cond) { a = 0.0; b = 0.1; c = 0.2; } ... } } Could we not convert the hammock into a diamond and move the initial computation of a, b, and c into the else block. Something like this: I believe what you're proposing would be accomplished by PRE, since the stores to a, b and c are partially redundant, and once those are "placed" by PRE, the FP math would then get placed as you want as well. { double a, b, c; for (...) { ... if (cond) { a = 0.0; b = 0.1; c = 0.2; } else { a = lots of FP math; b = lots of FP math; c = lots of FP math; } ... } } Does a similar optimization exist? SSAPRE existed in LLVM but has been removed. PRE is one of those optimizations that are simply more efficient and also sometimes more effective as a bitvector dataflow optimization than as an SSA algorithm. If not, would the SimplifyCFG pass be an appropriate home for such an optimization? If done there, it is likely to only handle special cases like the above. My guess is that it is better done as a code motion pass than a SimplifyCFG extension. Chad --Vikram Adve Professor, Department of Computer Science University of Illinois at Urbana-Champaign vadve at illinois.edu<mailto:vadve at illinois.edu> http://llvm.org -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130806/cae5ffcd/attachment.html>
Chad Rosier
2013-Aug-06 18:17 UTC
[LLVMdev] Potential SimplifyCFG optimization; hammock to diamond transformation
On Tue, Aug 6, 2013 at 1:42 PM, Adve, Vikram Sadanand <vadve at illinois.edu>wrote:> Message: 6 > Date: Tue, 6 Aug 2013 10:46:19 -0400 > From: Chad Rosier <chad.rosier at gmail.com> > To: llvmdev <llvmdev at cs.uiuc.edu> > > Subject: [LLVMdev] Potential SimplifyCFG optimization; hammock to > diamond transformation > Message-ID: > <CAMo3wbR6x1wBzb17=GrkERV7kvzx2RdpuheFzyxkQEs3BBvKaw at mail.gmail.com> > Content-Type: text/plain; charset="iso-8859-1" > > > All, > I have some code that looks like the following: > > { > double a, b, c; > for (...) { > ... > a = lots of FP math; > b = lots of FP math; > c = lots of FP math; > if (cond) { > a = 0.0; > b = 0.1; > c = 0.2; > } > ... > } > } > > Could we not convert the hammock into a diamond and move the initial > computation of a, b, and c into the else block. Something like this: > > > I believe what you're proposing would be accomplished by PRE, since the > stores to a, b and c are partially redundant, and once those are "placed" > by PRE, the FP math would then get placed as you want as well. >Yes, that makes perfect sense.> > { > double a, b, c; > for (...) { > ... > if (cond) { > a = 0.0; > b = 0.1; > c = 0.2; > } else { > a = lots of FP math; > b = lots of FP math; > c = lots of FP math; > } > ... > } > } > > Does a similar optimization exist? > > > SSAPRE existed in LLVM but has been removed. PRE is one of those > optimizations that are simply more efficient and also sometimes more > effective as a bitvector dataflow optimization than as an SSA algorithm. >Good to know.> > If not, would the SimplifyCFG pass be > an appropriate home for such an optimization? > > > If done there, it is likely to only handle special cases like the above. > My guess is that it is better done as a code motion pass than a > SimplifyCFG extension. >Thanks for the feedback, Prof. Vikram. You have been very helpful. Chad> > > > --Vikram Adve > Professor, Department of Computer Science > University of Illinois at Urbana-Champaign > vadve at illinois.edu > http://llvm.org > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130806/7c61472e/attachment.html>
Seemingly Similar Threads
- [LLVMdev] Potential SimplifyCFG optimization; hammock to diamond transformation
- [LLVMdev] Potential SimplifyCFG optimization; hammock to diamond transformation
- [LLVMdev] Potential SimplifyCFG optimization; hammock to diamond transformation
- [LLVMdev] Potential SimplifyCFG optimization; hammock to diamond transformation
- boxplot with diamond shape