diff options
| author | Chen Zheng <czhengsz@cn.ibm.com> | 2019-06-26 12:02:43 +0000 |
|---|---|---|
| committer | Chen Zheng <czhengsz@cn.ibm.com> | 2019-06-26 12:02:43 +0000 |
| commit | aa999528966781ae84e508b5a29cc4be7ea0368f (patch) | |
| tree | 7e64cccd27618d5ea8959538ad0ce218ae0471dd /llvm/lib/Analysis | |
| parent | 6876de90e8e8931b9918702e18c4854d7b2ed05c (diff) | |
| download | bcm5719-llvm-aa999528966781ae84e508b5a29cc4be7ea0368f.tar.gz bcm5719-llvm-aa999528966781ae84e508b5a29cc4be7ea0368f.zip | |
[HardwareLoops] NFC - move loop with irreducible control flow checking logic to HarewareLoopInfo.
llvm-svn: 364415
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/TargetTransformInfo.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/llvm/lib/Analysis/TargetTransformInfo.cpp b/llvm/lib/Analysis/TargetTransformInfo.cpp index 5fde3443457..6dbdaeeae5f 100644 --- a/llvm/lib/Analysis/TargetTransformInfo.cpp +++ b/llvm/lib/Analysis/TargetTransformInfo.cpp @@ -42,6 +42,16 @@ struct NoTTIImpl : TargetTransformInfoImplCRTPBase<NoTTIImpl> { }; } +bool HardwareLoopInfo::canAnalyze(LoopInfo &LI) { + // If the loop has irreducible control flow, it can not be converted to + // Hardware loop. + LoopBlocksRPO RPOT(L); + RPOT.perform(&LI); + if (containsIrreducibleCFG<const BasicBlock *>(RPOT, LI)) + return false; + return true; +} + bool HardwareLoopInfo::isHardwareLoopCandidate(ScalarEvolution &SE, LoopInfo &LI, DominatorTree &DT, bool ForceNestedLoop, @@ -218,14 +228,8 @@ bool TargetTransformInfo::isLoweredToCall(const Function *F) const { } bool TargetTransformInfo::isHardwareLoopProfitable( - Loop *L, LoopInfo &LI, ScalarEvolution &SE, AssumptionCache &AC, + Loop *L, ScalarEvolution &SE, AssumptionCache &AC, TargetLibraryInfo *LibInfo, HardwareLoopInfo &HWLoopInfo) const { - // If the loop has irreducible control flow, it can not be converted to - // Hardware loop. - LoopBlocksRPO RPOT(L); - RPOT.perform(&LI); - if (containsIrreducibleCFG<const BasicBlock *>(RPOT, LI)) - return false; return TTIImpl->isHardwareLoopProfitable(L, SE, AC, LibInfo, HWLoopInfo); } |

