14#ifndef LLVM_TRANSFORMS_VECTORIZE_VPLANSLP_H
15#define LLVM_TRANSFORMS_VECTORIZE_VPLANSLP_H
59 for (
auto *
Ptr : DelSet)
68 return InterleaveGroupMap.
lookup(Instr);
75 enum class OpMode {
Failed, Load, Opcode };
87 bool CompletelySLP =
true;
90 unsigned WidestBundleBits = 0;
93 typename std::pair<VPInstruction *, SmallVector<VPValue *, 4>>;
102 bool MultiNodeActive =
false;
124#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
#define LLVM_ABI_FOR_TEST
This file defines the DenseMap class.
mir Rename Register Operands
static cl::opt< RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode > Mode("regalloc-enable-advisor", cl::Hidden, cl::init(RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode::Default), cl::desc("Enable regalloc advisor mode"), cl::values(clEnumValN(RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode::Default, "default", "Default"), clEnumValN(RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode::Release, "release", "precompiled"), clEnumValN(RegAllocEvictionAdvisorAnalysisLegacy::AdvisorMode::Development, "development", "for training")))
This file defines the SmallPtrSet class.
This file defines the SmallVector class.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
ValueT lookup(const_arg_type_t< KeyT > Val) const
lookup - Return the entry for the specified key, or a default constructed value if no such entry exis...
The group of interleaved loads/stores sharing the same stride and close to each other.
Drive the analysis of interleaved memory accesses in the loop.
A templated base class for SmallPtrSet which provides the typesafe interface that is common across al...
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
VPBasicBlock serves as the leaf of the Hierarchical Control-Flow Graph.
VPBlockBase is the building block of the Hierarchical Control-Flow Graph.
This is a concrete Recipe that models a single VPlan-level instruction.
~VPInterleavedAccessInfo()
VPInterleavedAccessInfo(const VPInterleavedAccessInfo &)=delete
InterleaveGroup< VPInstruction > * getInterleaveGroup(VPInstruction *Instr) const
Get the interleave group that Instr belongs to.
VPInterleavedAccessInfo & operator=(const VPInterleavedAccessInfo &)=delete
VPRegionBlock represents a collection of VPBasicBlocks and VPRegionBlocks which form a Single-Entry-S...
Class that maps (parts of) an existing VPlan to trees of combined VPInstructions.
LLVM_ABI_FOR_TEST VPInstruction * buildGraph(ArrayRef< VPValue * > Operands)
Tries to build an SLP tree rooted at Operands and returns a VPInstruction combining Operands,...
bool isCompletelySLP() const
Return true if all visited instruction can be combined.
VPlanSlp(VPInterleavedAccessInfo &IAI, VPBasicBlock &BB)
unsigned getWidestBundleBits() const
Return the width of the widest combined bundle in bits.
VPlan models a candidate for vectorization, encoding various decisions take to produce efficient outp...
This is an optimization pass for GlobalISel generic memory operations.
testing::Matcher< const detail::ErrorHolder & > Failed()
constexpr from_range_t from_range
auto make_second_range(ContainerTy &&c)
Given a container of pairs, return a range over the second elements.