14#ifndef LLVM_TRANSFORMS_VECTORIZE_VPLANSLP_H
15#define LLVM_TRANSFORMS_VECTORIZE_VPLANSLP_H
55 for (
auto &
I : InterleaveGroupMap)
57 for (
auto *
Ptr : DelSet)
66 return InterleaveGroupMap.
lookup(Instr);
73 enum class OpMode {
Failed, Load, Opcode };
77 struct BundleDenseMapInfo {
79 return {
reinterpret_cast<VPValue *
>(-1)};
83 return {
reinterpret_cast<VPValue *
>(-2)};
107 bool CompletelySLP =
true;
110 unsigned WidestBundleBits = 0;
112 using MultiNodeOpTy =
113 typename std::pair<VPInstruction *, SmallVector<VPValue *, 4>>;
122 bool MultiNodeActive =
false;
144#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
This file defines the DenseMap class.
mir Rename Register Operands
static cl::opt< RegAllocEvictionAdvisorAnalysis::AdvisorMode > Mode("regalloc-enable-advisor", cl::Hidden, cl::init(RegAllocEvictionAdvisorAnalysis::AdvisorMode::Default), cl::desc("Enable regalloc advisor mode"), cl::values(clEnumValN(RegAllocEvictionAdvisorAnalysis::AdvisorMode::Default, "default", "Default"), clEnumValN(RegAllocEvictionAdvisorAnalysis::AdvisorMode::Release, "release", "precompiled"), clEnumValN(RegAllocEvictionAdvisorAnalysis::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...
std::pair< iterator, bool > insert(PtrType Ptr)
Inserts Ptr if and only if there is no element in the container equal to Ptr.
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()
InterleaveGroup< VPInstruction > * getInterleaveGroup(VPInstruction *Instr) const
Get the interleave group that Instr belongs to.
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.
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.
bool isEqual(const GCNRPTracker::LiveRegSet &S1, const GCNRPTracker::LiveRegSet &S2)
testing::Matcher< const detail::ErrorHolder & > Failed()
hash_code hash_combine_range(InputIteratorT first, InputIteratorT last)
Compute a hash_code for a sequence of values.