[all-commits] [llvm/llvm-project] 303b6d: [LoopVectorize] Add support for scalable vectoriza...

david-arm via All-commits all-commits at lists.llvm.org
Tue Jun 29 03:56:28 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 303b6d5e981947cff7e12626669c1fbeef046f18
      https://github.com/llvm/llvm-project/commit/303b6d5e981947cff7e12626669c1fbeef046f18
  Author: David Sherwood <david.sherwood at arm.com>
  Date:   2021-06-29 (Tue, 29 Jun 2021)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    A llvm/test/Transforms/LoopVectorize/AArch64/sve-inv-store.ll

  Log Message:
  -----------
  [LoopVectorize] Add support for scalable vectorization of invariant stores

Previously in setCostBasedWideningDecision if we encountered an
invariant store we just assumed that we could scalarize the store
and called getUniformMemOpCost to get the associated cost.
However, for scalable vectors this is not an option because it is
not currently possibly to scalarize the store. At the moment we
crash in VPReplicateRecipe::execute when trying to scalarize the
store.

Therefore, I have changed setCostBasedWideningDecision so that if
we are storing a scalable vector out to a uniform address and the
target supports scatter instructions, then we should use those
instead.

Tests have been added here:

  Transforms/LoopVectorize/AArch64/sve-inv-store.ll

Differential Revision: https://reviews.llvm.org/D104624




More information about the All-commits mailing list