search for: createemptyloop

Displaying 12 results from an estimated 12 matches for "createemptyloop".

2012 Dec 21
0
[LLVMdev] assert in InnerLoopVectorizer::createEmptyLoop
I am seeing an assert when I run this command: $ clang -fno-strict-aliasing -target mips64el-unknown-linux -O3 -fomit-frame-pointer -S oggenc.i -o oggenc.ll -emit-llvm It asserts when LoopVectorize.cpp:506 is executed. It looks like it is complaining because it is trying to zero-extend an i64 (type Count->getType() returns i64) to an i32 (IdxTy). if (Count->getType() != IdxTy) { //
2012 Dec 21
0
[LLVMdev] assert in InnerLoopVectorizer::createEmptyLoop
Please file a bug for these types of issues. On Fri, Dec 21, 2012 at 1:49 PM, Akira Hatanaka <ahatanak at gmail.com> wrote: > I am seeing an assert when I compile the attached program with clang: > > $ clang -fno-strict-aliasing -target mips64el-unknown-linux -O3 > -fomit-frame-pointer -S test1.c -o test1.ll -emit-llvm > > > It asserts when LoopVectorize.cpp:506 is
2012 Dec 21
2
[LLVMdev] assert in InnerLoopVectorizer::createEmptyLoop
I am seeing an assert when I compile the attached program with clang: $ clang -fno-strict-aliasing -target mips64el-unknown-linux -O3 -fomit-frame-pointer -S test1.c -o test1.ll -emit-llvm It asserts when LoopVectorize.cpp:506 is executed. It looks like it is complaining because it is trying to zero-extend an i64 (type Count->getType() returns i64) to an i32 (IdxTy). if (Count->getType()
2016 Aug 01
2
LLVM Loop vectorizer - 2 vector.body blocks appear
...nts multiple of VF * UF. There are 2 epilogues which makes things a bit strange - I am still trying to understand the code. Is it possible to explain to me where in LoopVectorize.cpp are created 2 vector.body blocks? I know that InnerLoopVectorizer::vectorize() calls InnerLoopVectorizer::createEmptyLoop() which creates the blocks required for vectorization, but I have difficulties to follow the classes instantiations. I ask because in fact, I would prefer having only one "vector.body" block for the above C program, as it was happening with LoopVectorize.cpp version of Nov 2015....
2017 Mar 14
4
[Proposal][RFC] Epilog loop vectorization
...we >>>> have flexibility to reuse already computed alias result check & >>>> limit vectorization factor for the epilog loop. >>>> 2)It does not generate the blocks for new block layout explicitly, >>>> rather it depends on ‘InnerLoopVectorizer::createEmptyLoop’ to >>>> generate new block layout. The new block layout get automatically >>>> generated by calling the ‘InnerLoopVectorizer:: vectorize’ again. >>>> 3)Block layout description with epilog loop vectorization is >>>> available at >>>> h...
2017 Mar 14
10
[Proposal][RFC] Epilog loop vectorization
...e the epilog loop, as it happens in the same vectorization pass we have flexibility to reuse already computed alias result check & limit vectorization factor for the epilog loop. 2) It does not generate the blocks for new block layout explicitly, rather it depends on ‘InnerLoopVectorizer::createEmptyLoop’ to generate new block layout. The new block layout get automatically generated by calling the ‘InnerLoopVectorizer:: vectorize’ again. 3) Block layout description with epilog loop vectorization is available at https://reviews.llvm.org/file/data/fxg5vx3capyj257rrn5j/PHID-FILE-x6thnbf6ub55ep5...
2016 Jun 04
4
[LLVMdev] LLVM loop vectorizer
Hi Alex, I think the changes you want are actually not vectorizer related. Vectorizer just uses data provided by other passes. What you probably might want is to look into routine Loop::getStartLoc() (see lib/Analysis/LoopInfo.cpp). If you find a way to improve it, patches are welcome:) Thanks, Michael > On Jun 3, 2016, at 6:13 PM, Alex Susu <alex.e.susu at gmail.com> wrote: >
2017 Mar 14
2
[Proposal][RFC] Epilog loop vectorization
...in the same vectorization pass we have >> flexibility to reuse already computed alias result check & limit >> vectorization factor for the epilog loop. >> 2)It does not generate the blocks for new block layout explicitly, >> rather it depends on ‘InnerLoopVectorizer::createEmptyLoop’ to >> generate new block layout. The new block layout get automatically >> generated by calling the ‘InnerLoopVectorizer:: vectorize’ again. >> 3)Block layout description with epilog loop vectorization is available at >> https://reviews.llvm.org/file/data/fxg5vx3capyj257r...
2017 Mar 14
2
[Proposal][RFC] Epilog loop vectorization
...n the same vectorization pass we > have flexibility to reuse already computed alias result check & > limit vectorization factor for the epilog loop. > > 2)It does not generate the blocks for new block layout explicitly, > rather it depends on ‘InnerLoopVectorizer::createEmptyLoop’ to > generate new block layout. The new block layout get automatically > generated by calling the ‘InnerLoopVectorizer:: vectorize’ again. > > 3)Block layout description with epilog loop vectorization is > available at > > https://reviews.llvm.org/file/data...
2017 Mar 15
4
[Proposal][RFC] Epilog loop vectorization
...eady computed alias result check & >>>>>> limit vectorization factor for the epilog loop. >>>>>> 2)It does not generate the blocks for new block layout >>>>>> explicitly, rather it depends on >>>>>> ‘InnerLoopVectorizer::createEmptyLoop’ to generate new block >>>>>> layout. The new block layout get automatically generated by >>>>>> calling the ‘InnerLoopVectorizer:: vectorize’ again. >>>>>> 3)Block layout description with epilog loop vectorization is >>>>>>...
2017 Mar 14
1
[Proposal][RFC] Epilog loop vectorization
...reuse already >> computed alias result check & limit vectorization factor for >> the epilog loop. >> >> 2)It does not generate the blocks for new block layout >> explicitly, rather it depends on >> ‘InnerLoopVectorizer::createEmptyLoop’ to generate new block >> layout. The new block layout get automatically generated by >> calling the ‘InnerLoopVectorizer:: vectorize’ again. >> >> 3)Block layout description with epilog loop vectorization is >> available at >> &gt...
2017 Feb 28
3
[Proposal][RFC] Epilog loop vectorization
I have tried running both gvn and newgvn but it did not helped in hoisting the alias checks: Please check, maybe I have missed something. <TestCase> void foo (char *A, char *B, char *C, int len) { int i = 0; for (i=0 ; i< len; i++) A[i] = B[i] + C[i]; } <Command> $ opt –O3 –gvn test.ll –o test.opt.ll $ opt –O3 –newgvn test.ll –o test.opt.ll “test.ll” is attached, it