This fixes the missing cost accounting for extra cost of shuffle instruction due to the
vectorization of jumbled load added through the patch https://reviews.llvm.org/D36130.
Details
Diff Detail
- Build Status
Buildable 13228 Build 13228: arc lint + arc unit
Event Timeline
lib/Transforms/Vectorize/SLPVectorizer.cpp | ||
---|---|---|
2229 | Maybe to move this into the if-statement: if (TreeEntry *UserTreeEntry = &VectorizableTree[Idx]) | |
2234 | I am not an expert in SLPVectorizer. |
Hi Shahid,
Do you mean the LNT test code is back to the code before the patch D36130?
Thanks,
Evgeny
Sorry, I could not get your question.
Recently I started running these lit test, LNT test and bootstrap test to make sure build bot does not break upon commit.
Regards,
Shahid
lib/Transforms/Vectorize/SLPVectorizer.cpp | ||
---|---|---|
2229 | Sure. | |
2234 | Since this shuffle instruction is only introduced to reorder the loaded lanes which is jumbled, it falls under SK_PermuteSingleSrc shuffle kind. Also due to this very reason |
lib/Transforms/Vectorize/SLPVectorizer.cpp | ||
---|---|---|
2234 | Also, since we are not creating new tree entry for this shuffle, we will not do double cost calculation. |
Now I see what you meant. It was not clear for me whether you checked the execution time of the regressed benchmarks or not. It is not a problem. I can check it using the patch.
I don't have any other questions.
Presumably this fixes the reported regressions?
Cf. the test added in D40883 to check if a cost is accounted for (or not).
lib/Transforms/Vectorize/SLPVectorizer.cpp | ||
---|---|---|
2229 | Surely &VectorizableTree[Idx] is not null. This also applies btw to checking it newTreeEntry(). | |
2230 | Have Mask be a reference, to a const SmallVector? |
Maybe to move this into the if-statement: