Shen Liu via llvm-dev
2017-Oct-22 05:51 UTC
[llvm-dev] Replace "while" "for" loops with "If-Else"
Hi everyone, I hope to implement a feature to transform an IR with "while" or "for" loops to a new IR with no loop. Instead, I just want to use if-else statements in the new IR to implement the original semantics. I can easily write a transform pass to handle the 1-level loop case, but for nested loops it seems a little harder. Can you show me some hints? Thank you very much! Best regards, Shen -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171022/66ced890/attachment.html>
陳韋任 via llvm-dev
2017-Oct-22 06:31 UTC
[llvm-dev] Replace "while" "for" loops with "If-Else"
If the inner loop can be flatten [1] (not sure if I use the right word), which means transforming the nested loop into 1-level loop, I think you can continue using your pass on it. [1] https://stackoverflow.com/questions/18369260/flattening-a-very-nested-loop HTH, chenwj 2017-10-22 13:51 GMT+08:00 Shen Liu via llvm-dev <llvm-dev at lists.llvm.org>:> Hi everyone, > > I hope to implement a feature to transform an IR with "while" or "for" > loops to a new IR with no loop. Instead, I just want to use if-else > statements in the new IR to implement the original semantics. > > I can easily write a transform pass to handle the 1-level loop case, but > for nested loops it seems a little harder. > > Can you show me some hints? Thank you very much! > > Best regards, > > Shen > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-- Wei-Ren Chen (陳韋任) Homepage: https://people.cs.nctu.edu.tw/~chenwj -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171022/3c3e0558/attachment.html>
Shen Liu via llvm-dev
2017-Oct-22 18:32 UTC
[llvm-dev] Replace "while" "for" loops with "If-Else"
Hi weiren, Thanks for your suggestion! Yes, I am trying to do this "nested flattening". It seems that I need a post-dominator tree-based algorithm to flatten the nested loops from the innermost to the outermost, level by level. Is there any feature already existed in LLVM tools? Or similar? On Sun, Oct 22, 2017 at 2:31 AM, 陳韋任 <chenwj.cs97g at g2.nctu.edu.tw> wrote:> If the inner loop can be flatten [1] (not sure if I use the right word), > which means transforming the nested loop into 1-level loop, I think you can > continue using your pass on it. > > [1] https://stackoverflow.com/questions/18369260/flattening- > a-very-nested-loop > > HTH, > chenwj > > > 2017-10-22 13:51 GMT+08:00 Shen Liu via llvm-dev <llvm-dev at lists.llvm.org> > : > >> Hi everyone, >> >> I hope to implement a feature to transform an IR with "while" or "for" >> loops to a new IR with no loop. Instead, I just want to use if-else >> statements in the new IR to implement the original semantics. >> >> I can easily write a transform pass to handle the 1-level loop case, but >> for nested loops it seems a little harder. >> >> Can you show me some hints? Thank you very much! >> >> Best regards, >> >> Shen >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> > > > -- > Wei-Ren Chen (陳韋任) > Homepage: https://people.cs.nctu.edu.tw/~chenwj >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171022/f84d16f3/attachment.html>