LLVM 20.0.0git
|
Attributes of a target dependent hardware loop. More...
#include "llvm/Analysis/TargetTransformInfo.h"
Public Member Functions | |
HardwareLoopInfo ()=delete | |
HardwareLoopInfo (Loop *L) | |
bool | isHardwareLoopCandidate (ScalarEvolution &SE, LoopInfo &LI, DominatorTree &DT, bool ForceNestedLoop=false, bool ForceHardwareLoopPHI=false) |
bool | canAnalyze (LoopInfo &LI) |
Public Attributes | |
Loop * | L = nullptr |
BasicBlock * | ExitBlock = nullptr |
BranchInst * | ExitBranch = nullptr |
const SCEV * | ExitCount = nullptr |
IntegerType * | CountType = nullptr |
Value * | LoopDecrement = nullptr |
bool | IsNestingLegal = false |
bool | CounterInReg = false |
bool | PerformEntryTest = false |
Attributes of a target dependent hardware loop.
Definition at line 95 of file TargetTransformInfo.h.
|
delete |
HardwareLoopInfo::HardwareLoopInfo | ( | Loop * | L | ) |
Definition at line 116 of file TargetTransformInfo.cpp.
References CountType, llvm::BasicBlock::getContext(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::Type::getInt32Ty(), L, and LoopDecrement.
Definition at line 61 of file TargetTransformInfo.cpp.
References L, and llvm::LoopBlocksRPO::perform().
Referenced by llvm::PPCTTIImpl::canSaveCmp(), and llvm::ARMTTIImpl::preferPredicateOverEpilogue().
bool HardwareLoopInfo::isHardwareLoopCandidate | ( | ScalarEvolution & | SE, |
LoopInfo & | LI, | ||
DominatorTree & | DT, | ||
bool | ForceNestedLoop = false , |
||
bool | ForceHardwareLoopPHI = false |
||
) |
Definition at line 124 of file TargetTransformInfo.cpp.
References llvm::LoopBase< BlockT, LoopT >::contains(), CounterInReg, CountType, llvm::DominatorTree::dominates(), ExitBlock, ExitBranch, ExitCount, ForceHardwareLoopPHI, ForceNestedLoop, llvm::IntegerType::getBitWidth(), llvm::ScalarEvolution::getExitCount(), llvm::LoopBase< BlockT, LoopT >::getExitingBlocks(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::ScalarEvolution::getTypeSizeInBits(), llvm::ScalarEvolution::isLoopInvariant(), llvm::LoopBase< BlockT, LoopT >::isLoopLatch(), IsNestingLegal, L, and llvm::predecessors().
Referenced by llvm::PPCTTIImpl::canSaveCmp(), and llvm::ARMTTIImpl::preferPredicateOverEpilogue().
bool llvm::HardwareLoopInfo::CounterInReg = false |
Definition at line 107 of file TargetTransformInfo.h.
Referenced by isHardwareLoopCandidate(), and llvm::ARMTTIImpl::isHardwareLoopProfitable().
IntegerType* llvm::HardwareLoopInfo::CountType = nullptr |
Definition at line 102 of file TargetTransformInfo.h.
Referenced by HardwareLoopInfo(), isHardwareLoopCandidate(), llvm::ARMTTIImpl::isHardwareLoopProfitable(), and llvm::PPCTTIImpl::isHardwareLoopProfitable().
BasicBlock* llvm::HardwareLoopInfo::ExitBlock = nullptr |
Definition at line 99 of file TargetTransformInfo.h.
Referenced by isHardwareLoopCandidate().
BranchInst* llvm::HardwareLoopInfo::ExitBranch = nullptr |
Definition at line 100 of file TargetTransformInfo.h.
Referenced by llvm::PPCTTIImpl::canSaveCmp(), and isHardwareLoopCandidate().
Definition at line 101 of file TargetTransformInfo.h.
Referenced by isHardwareLoopCandidate().
bool llvm::HardwareLoopInfo::IsNestingLegal = false |
Definition at line 105 of file TargetTransformInfo.h.
Referenced by isHardwareLoopCandidate(), and llvm::ARMTTIImpl::isHardwareLoopProfitable().
Loop* llvm::HardwareLoopInfo::L = nullptr |
Definition at line 98 of file TargetTransformInfo.h.
Referenced by canAnalyze(), HardwareLoopInfo(), and isHardwareLoopCandidate().
Value* llvm::HardwareLoopInfo::LoopDecrement = nullptr |
Definition at line 103 of file TargetTransformInfo.h.
Referenced by HardwareLoopInfo(), llvm::ARMTTIImpl::isHardwareLoopProfitable(), and llvm::PPCTTIImpl::isHardwareLoopProfitable().
bool llvm::HardwareLoopInfo::PerformEntryTest = false |
Definition at line 109 of file TargetTransformInfo.h.
Referenced by llvm::ARMTTIImpl::isHardwareLoopProfitable().