1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/test
Serguei Katkov 3c49585e93 [SCEV] Fix isKnownPredicate
IsKnownPredicate is updated to implement the following algorithm
proposed by @sanjoy and @mkazantsev :
isKnownPredicate(Pred, LHS, RHS) {
  Collect set S all loops on which either LHS or RHS depend.
  If S is non-empty
    a. Let PD be the element of S which is dominated by all other elements of S
    b. Let E(LHS) be value of LHS on entry of PD.
       To get E(LHS), we should just take LHS and replace all AddRecs that
       are attached to PD on with their entry values.
       Define E(RHS) in the same way.
    c. Let B(LHS) be value of L on backedge of PD.
       To get B(LHS), we should just take LHS and replace all AddRecs that
       are attached to PD on with their backedge values.
       Define B(RHS) in the same way.
    d. Note that E(LHS) and E(RHS) are automatically available on entry of PD,
       so we can assert on that.
    e. Return true if isLoopEntryGuardedByCond(Pred, E(LHS), E(RHS)) &&
                      isLoopBackedgeGuardedByCond(Pred, B(LHS), B(RHS))
Return true if Pred, L, R is known from ranges, splitting etc.
}
This is follow-up for https://reviews.llvm.org/D42417.

Reviewers: sanjoy, mkazantsev, reames
Reviewed By: sanjoy, mkazantsev
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D43507

llvm-svn: 327362
2018-03-13 06:10:27 +00:00
..
Analysis [AArch64] Adjust the cost of integer vector division 2018-03-07 22:35:32 +00:00
Assembler Make the LLParser accept call instructions of variables in the program AS 2018-02-27 11:15:11 +00:00
Bindings
Bitcode Refactor check for dllimport in the Verifier. 2018-03-06 17:19:23 +00:00
BugPoint
CodeGen [LegalizeTypes] In SplitVecOp_TruncateHelper, use GetSplitVector on the input instead of creating new extract_subvectors. 2018-03-13 01:17:40 +00:00
DebugInfo [SelectionDAG] Improve handling of dangling debug info 2018-03-12 18:02:39 +00:00
Examples
ExecutionEngine [RuntimeDyld][MachO] Fix assertion in encodeAddend, add missing directive to 2018-03-01 01:44:33 +00:00
Feature Remove the LoopInstSimplify pass (-loop-instsimplify) 2018-03-12 20:49:42 +00:00
FileCheck
Instrumentation [asan] Fix a false positive ODR violation due to LTO ConstantMerge pass [llvm part, take 3] 2018-03-08 21:02:18 +00:00
Integer
JitListener
Linker [DebugInfo] Add remaining files to r325970 2018-02-23 23:13:18 +00:00
LTO Revert "[LTO] Support filtering by hotness threshold" 2018-03-08 01:13:10 +00:00
MC [llvm] Fix mc tests 2018-03-12 23:36:25 +00:00
Object [WebAssembly] Reorder reloc sections to come between symtab and name 2018-03-05 12:59:03 +00:00
ObjectYAML [WebAssembly] Disallow weak undefined globals in the object format 2018-03-09 16:30:44 +00:00
Other
SafepointIRVerifier
SymbolRewriter
TableGen TableGen: Add a defset statement 2018-03-09 12:24:42 +00:00
ThinLTO/X86 Reland r327041: [ThinLTO] Keep available_externally symbols live 2018-03-13 05:08:48 +00:00
tools [llvm-readobj] Extend the output of -elf-section-groups 2018-03-12 22:40:09 +00:00
Transforms [SCEV] Fix isKnownPredicate 2018-03-13 06:10:27 +00:00
Unit
Verifier [DebugInfo] Add verifier for DICompositeType vector 2018-03-08 19:31:37 +00:00
YAMLParser
.clang-format
CMakeLists.txt [CMake] Add missing test dependency 2018-03-08 14:43:24 +00:00
lit.cfg.py [CMake] Add missing test dependency 2018-03-08 14:43:24 +00:00
lit.site.cfg.py.in
TestRunner.sh