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
>>
>...
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