We may try to treat set of extractelements as the shuffle wrongly if
they have different parents|types, are used in real gather tree entries
etc. Patch fixes this problem.
Details
Diff Detail
- Repository
- rL LLVM
- Build Status
Buildable 37784 Build 37783: arc lint + arc unit
Event Timeline
lib/Transforms/Vectorize/SLPVectorizer.cpp | ||
---|---|---|
1199–1200 | Update comment |
I must say, this patch gets incredibly confusing - TEK_EEShuffle sometimes gets treated like a gather, and other times as a vectorization - it's almost never referenced directly.
lib/Transforms/Vectorize/SLPVectorizer.cpp | ||
---|---|---|
1419 | Why don't you handle TEK_EEShuffle? |
Because this is neither the gathering, not the vectorization, but something different. We should not gather instructions and should not vectorize them, just merge them as shuffle.
lib/Transforms/Vectorize/SLPVectorizer.cpp | ||
---|---|---|
1419 | Because for this kind of tree entry we should not do anything - neither gather the items, nor mark them as vectorized, because instead we just merge them into a shuffle |
Added a new test where we cannot schedule the bundle, but still vectorizing it in the current implementation.
Patch does not allow to vectorize this code
Update comment