struct BoUpSLP::ScheduleData
Declaration
struct BoUpSLP::ScheduleData { /* full declaration omitted */ };
Description
Contains all scheduling relevant data for an instruction. A ScheduleData either represents a single instruction or a member of an instruction bundle (= a group of instructions which is combined into a vector instruction).
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1790
Member Variables
- public llvm::Instruction* Inst = nullptr
- public llvm::slpvectorizer::BoUpSLP::ScheduleData* FirstInBundle = nullptr
- Points to the head in an instruction bundle (and always to this for single instructions).
- public llvm::slpvectorizer::BoUpSLP::ScheduleData* NextInBundle = nullptr
- Single linked list of all instructions in a bundle. Null if it is a single instruction.
- public llvm::slpvectorizer::BoUpSLP::ScheduleData* NextLoadStore = nullptr
- Single linked list of all memory instructions (e.g. load, store, call) in the block - until the end of the scheduling region.
- public SmallVector< llvm::slpvectorizer::BoUpSLP::ScheduleData*, 4> MemoryDependencies
- The dependent memory instructions. This list is derived on demand in calculateDependencies().
- public int SchedulingRegionID = 0
- This ScheduleData is in the current scheduling region if this matches the current SchedulingRegionID of BlockScheduling.
- public int SchedulingPriority = 0
- Used for getting a "good" final ordering of instructions.
- public int Dependencies = InvalidDeps
- The number of dependencies. Constitutes of the number of users of the instruction plus the number of dependent memory instructions (if any). This value is calculated on demand. If InvalidDeps, the number of dependencies is not calculated yet.
- public int UnscheduledDeps = InvalidDeps
- The number of dependencies minus the number of dependencies of scheduled instructions. As soon as this is zero, the instruction/bundle gets ready for scheduling. Note that this is negative as long as Dependencies is not calculated.
- public int UnscheduledDepsInBundle = InvalidDeps
- The sum of UnscheduledDeps in a bundle. Equals to UnscheduledDeps for single instructions.
- public bool IsScheduled = false
- True if this instruction is scheduled (or considered as scheduled in the dry-run).
- public llvm::Value* OpValue = nullptr
- Opcode of the current instruction in the schedule data.
- public llvm::slpvectorizer::BoUpSLP::TreeEntry* TE = nullptr
- The TreeEntry that this instruction corresponds to.
- public int Lane = -1
- The lane of this node in the TreeEntry.
Method Overview
- public ScheduleData()
- public void clearDependencies()
- public void dump(llvm::raw_ostream & os) const
- public bool hasValidDependencies() const
- public int incrementUnscheduledDeps(int Incr)
- public void init(int BlockSchedulingRegionID, llvm::Value * OpVal)
- public bool isPartOfBundle() const
- public bool isReady() const
- public bool isSchedulingEntity() const
- public void resetUnscheduledDeps()
Methods
¶ScheduleData()
ScheduleData()
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1795
¶void clearDependencies()
void clearDependencies()
Description
Clears all dependency information.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1845
¶void dump(llvm::raw_ostream& os) const
void dump(llvm::raw_ostream& os) const
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1851
Parameters
¶bool hasValidDependencies() const
bool hasValidDependencies() const
Description
Returns true if the dependency information has been calculated.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1811
¶int incrementUnscheduledDeps(int Incr)
int incrementUnscheduledDeps(int Incr)
Description
Modifies the number of unscheduled dependencies, also updating it for the whole bundle.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1833
Parameters
- int Incr
¶void init(int BlockSchedulingRegionID,
llvm::Value* OpVal)
void init(int BlockSchedulingRegionID,
llvm::Value* OpVal)
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1797
Parameters
- int BlockSchedulingRegionID
- llvm::Value* OpVal
¶bool isPartOfBundle() const
bool isPartOfBundle() const
Description
Returns true if it represents an instruction bundle and not only a single instruction.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1819
¶bool isReady() const
bool isReady() const
Description
Returns true if it is ready for scheduling, i.e. it has no more unscheduled depending instructions/bundles.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1825
¶bool isSchedulingEntity() const
bool isSchedulingEntity() const
Description
Returns true for single instructions and for bundle representatives (= the head of a bundle).
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1815
¶void resetUnscheduledDeps()
void resetUnscheduledDeps()
Description
Sets the number of unscheduled dependencies to the number of dependencies.
Declared at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1840