[LLVMdev] Potential SimplifyCFG optimization; hammock to diamond transformation
Chad Rosier
chad.rosier at gmail.com
Tue Aug 6 11:17:28 PDT 2013
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>
More information about the llvm-dev
mailing list