search for: theloop

Displaying 7 results from an estimated 7 matches for "theloop".

2015 Jul 16
2
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
...loop exiting block is %for.body). The check in the vectorizer is explicit: // We only handle bottom-tested loops, i.e. loop in which the condition is // checked at the end of each iteration. With that we can assume that all // instructions in the loop are executed the same number of times. if (TheLoop->getExitingBlock() != TheLoop->getLoopLatch()) { ... -Hal > That seems both counter-intuitive and unlikely to be a useful goal. > We simply don't optimize volatile operations well in *any* part of > the optimizer, and I'm not sure why we need to start trying to fix >...
2015 Jul 16
2
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
...; // We only handle bottom-tested loops, i.e. loop in which the > > condition is > > > // checked at the end of each iteration. With that we can assume > > that > > all > > > // instructions in the loop are executed the same number of times. > > > if (TheLoop->getExitingBlock() != TheLoop->getLoopLatch()) { > > > ... > > Thanks for the detailed explanation. This makes much more sense why > we need to handle it. I think its much better to look at nested > loops of this form than anything to do with volatile -- the latter &gt...
2018 Jan 19
2
Does OpenMP hints bypass the vectorisation legality check in llvm
Hi all, I am currently looking into how "#pragma omp for simd" is actually recognized in llvm. To my knowledge, clang will parse it and set metadata in IR to indicate this force-vectorization hint and later optimization passes would read it and vectorize the marked loop. Therefore, the loop should be vectorized even the compiler think it might not be safe to do so? So my
2015 Jul 15
5
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
Hi all, I would like to propose an improvement of the “almost dead” block elimination in Transforms/Local.cpp so that it will preserve the canonical loop form for loops with a volatile iteration variable. *** Problem statement Nested loops in LCALS Subset B (https://codesign.llnl.gov/LCALS.php) are not vectorized with LLVM -O3 because the LLVM loop vectorizer fails the test whether the loop
2015 Jul 16
4
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
...teration. With that we can > > > > assume > > > > that > > > > all > > > > > > > > > > // instructions in the loop are executed the same number of > > > > times. > > > > > > > > > > if (TheLoop->getExitingBlock() != TheLoop->getLoopLatch()) { > > > > > > > > > > ... > > > > > > > > > Thanks for the detailed explanation. This makes much more sense > > > why > > > we need to handle it. I think its much b...
2015 Aug 13
2
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
...ock is %for.body). The check in the vectorizer is > explicit: // We only handle bottom-tested loops, i.e. loop in which > the condition is // checked at the end of each iteration. With that > we can assume that all // instructions in the loop are executed the > same number of times. if (TheLoop->getExitingBlock() != > TheLoop->getLoopLatch()) { ... Thanks for the detailed explanation. > This makes much more sense why we need to handle it. I think its > much better to look at nested loops of this form than anything to do > with volatile -- the latter is too prone to other...
2020 May 05
2
Missing vectorization of loop due to load late in the loop
Hi, TL;DR: A loop doesn't get vectorized due to the interaction of loop- rotate, licm and instcombine. What to do about it? Full story: In the benchmarks for our out-of-tree target we have a case that we would like to get vectorized, but currently it isn't. I've done some digging to see why and have some kind of idea what prevents it, but I don't know what the best way to fix