[all-commits] [llvm/llvm-project] 689bab: [SLP] Don't try to vectorize allocas
Philip Reames via All-commits
all-commits at lists.llvm.org
Wed Mar 2 10:09:01 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 689babdf687f98b6790c66e628bd057af3bc87d8
https://github.com/llvm/llvm-project/commit/689babdf687f98b6790c66e628bd057af3bc87d8
Author: Philip Reames <listmail at philipreames.com>
Date: 2022-03-02 (Wed, 02 Mar 2022)
Changed paths:
M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
M llvm/test/Transforms/SLPVectorizer/X86/store_alloca.ll
Log Message:
-----------
[SLP] Don't try to vectorize allocas
While a collection of allocas are technically vectorizeable - by forming a wider alloca - this was not a transform SLP actually knows how to do. Instead, we were forming a bundle with missing dependencies, and then relying on the scheduling code to preserve program order if multiple instructions were scheduleable at once. I haven't been able to write a test case, but I'm 99% sure this was wrong in some edge case.
The unknown op case was flowing down the shufflevector path. This did result in some splat handling being lost with this change, but the same lack of splat handling is visible in a whole bunch of simple examples for the gather path. I didn't consider this interesting to fix given how narrow the splat of allocas case is.
More information about the All-commits
mailing list