llvm::SLPVectorizerPass

Function pass that vectorizes straight-line code via bottom-up SLP.

Synopsis

Declared in <llvm/Transforms/Vectorize/SLPVectorizer.h>

struct SLPVectorizerPass
    : OptionalPassInfoMixin<SLPVectorizerPass>

Description

Detects consecutive stores that can form vector stores, builds a vectorizable tree from use-def chains, and vectorizes profitable trees.

Base Classes

NameDescription
OptionalPassInfoMixin<SLPVectorizerPass>A CRTP mix-in for passes that can be skipped.

Type Aliases

NameDescription
GEPList List of getelementptr instructions that share a common base pointer.
GEPListMap Map from base pointer to the getelementptrs that use it.
InstSetVector Ordered set of instructions used as vectorization seeds or candidates.
StoreList List of store instructions that share a common base pointer.
StoreListMap Map from base pointer to the stores that use it.

Member Functions

NameDescription
run Run bottom-up SLP vectorization over the function.
runImpl Run bottom-up SLP vectorization using explicitly supplied analyses.

Static Member Functions

NameDescription
isRequired Return false; optional passes may be skipped.

Data Members

NameDescription
AA Alias analysis results used for memory dependence checks.
AC Assumption cache used for value-range and known-bits queries.
DB Demanded-bits analysis used to refine vectorization profitability.
DL Data layout of the module being vectorized.
DT Dominator tree used for dominance queries during vectorization.
LI Loop information used to reason about loop-carried contexts.
SE Scalar evolution analysis used while building SLP trees.
TLI Target library info used when recognizing library calls.
TTI Target transform info used for cost modeling.