1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 03:23:01 +02:00
llvm-mirror/include/llvm
Silviu Baranga f6006f41f7 [LV][LAA] Add a layer over SCEV to apply run-time checked knowledge on SCEV expressions
Summary:
This change creates a layer over ScalarEvolution for LAA and LV, and centralizes the
usage of SCEV predicates. The SCEVPredicatedLayer takes the statically deduced knowledge
by ScalarEvolution and applies the knowledge from the SCEV predicates. The end goal is
that both LAA and LV should use this interface everywhere.

This also solves a problem involving the result of SCEV expression rewritting when
the predicate changes. Suppose we have the expression (sext {a,+,b}) and two predicates
  P1: {a,+,b} has nsw
  P2: b = 1.

Applying P1 and then P2 gives us {a,+,1}, while applying P2 and the P1 gives us
sext({a,+,1}) (the AddRec expression was changed by P2 so P1 no longer applies).
The SCEVPredicatedLayer maintains the order of transformations by feeding back
the results of previous transformations into new transformations, and therefore
avoiding this issue.

The SCEVPredicatedLayer maintains a cache to remember the results of previous
SCEV rewritting results. This also has the benefit of reducing the overall number
of expression rewrites.

Reviewers: mzolotukhin, anemet

Subscribers: jmolloy, sanjoy, llvm-commits

Differential Revision: http://reviews.llvm.org/D14296

llvm-svn: 255115
2015-12-09 15:03:52 +00:00
..
ADT [ARM] Add ARMv8.2-A to TargetParser 2015-12-01 10:33:56 +00:00
Analysis [LV][LAA] Add a layer over SCEV to apply run-time checked knowledge on SCEV expressions 2015-12-09 15:03:52 +00:00
AsmParser AsmParser: Save and restore the parsing state for types using SlotMapping. 2015-08-21 21:32:39 +00:00
Bitcode Remove "ExportingModule" from ThinLTO Index (NFC) 2015-12-03 02:37:23 +00:00
CodeGen Revert "Implement a new pass - LiveDebugValues - to compute the set of live DEBUG_VALUEs at each basic block and insert them. Reviewed and accepted at: http://reviews.llvm.org/D11933" 2015-12-09 08:17:42 +00:00
Config [autoconf] Fix MinGW build 2015-11-28 00:54:12 +00:00
DebugInfo [llvm-dwp] Retrieve the DWOID from the CU for the cu_index entry 2015-12-04 17:20:04 +00:00
ExecutionEngine Remove useless hack that avoids calling LLVMLinkInInterpreter() 2015-12-07 22:27:19 +00:00
IR Revert "Add Available Externally linkage type to isWeakForLinker()" 2015-12-08 19:13:31 +00:00
IRReader
LibDriver
LineEditor
Linker [ThinLTO] Helper for performing renaming/promotion on a module 2015-12-04 23:40:22 +00:00
LTO Fix the order of destructors in LibLTOCodeGenerator 2015-12-09 03:37:51 +00:00
MC Replace uint16_t with the MCPhysReg typedef in many places. A lot of physical register arrays already use this typedef. 2015-12-05 07:13:35 +00:00
Object Use make_range to reduce mentions of iterator type. NFC 2015-12-06 05:08:07 +00:00
Option [Option] Use an ArrayRef to store the Option Infos in OptTable. NFC 2015-10-21 16:30:42 +00:00
Passes
ProfileData [PGO] Add version to getPGOFuncName method 2015-12-05 05:16:36 +00:00
Support Support: Teach Asan about BumpPtrAllocator 2015-12-07 23:12:26 +00:00
TableGen Re-commit r247216: "Fix Clang-tidy misc-use-override warnings, other minor fixes" 2015-09-10 16:49:58 +00:00
Target Add uint8_t size to LegalizeTypeAction enum and use the enum type directly to remove some typecasts. NFC 2015-12-07 06:31:41 +00:00
Transforms [LV][LAA] Add a layer over SCEV to apply run-time checked knowledge on SCEV expressions 2015-12-09 15:03:52 +00:00
CMakeLists.txt
InitializePasses.h Revert "Implement a new pass - LiveDebugValues - to compute the set of live DEBUG_VALUEs at each basic block and insert them. Reviewed and accepted at: http://reviews.llvm.org/D11933" 2015-12-09 08:17:42 +00:00
LinkAllIR.h
LinkAllPasses.h [ThinLTO] Support for specifying function index from pass manager 2015-12-07 19:21:11 +00:00
module.modulemap llvm/module.modulemap: AVR.def should be textual header. 2015-10-24 00:25:18 +00:00
module.modulemap.build
Pass.h
PassAnalysisSupport.h [PassManager] Tuning Memory Usage of AnalysisUsage 2015-12-08 00:10:56 +00:00
PassInfo.h Reformat partially. 2015-10-05 04:46:30 +00:00
PassRegistry.h
PassSupport.h Support: Clean up TSan annotations. 2015-08-18 22:31:24 +00:00