[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