llvm-project/llvm/test
Nikolai Bozhenov 4a04fb9e90 [BypassSlowDivision] Use ValueTracking to simplify run-time checks
ValueTracking is used for more thorough analysis of operands. Based on the
analysis, either run-time checks can be simplified (e.g. check only one operand
instead of two) or the transformation can be avoided. For example, it is quite
often the case that a divisor is promoted from a shorter type and run-time
checks for it are redundant.

With additional compile-time analysis of values, two special cases naturally
arise and are addressed by the patch:

 1) Both operands are known to be short enough. Then, the long division can be
    simply replaced with a short one without CFG modification.

 2) If a division is unsigned and the dividend is known to be short then the
    long division is not needed at all. Because if the divisor is too big for
    short division then the quotient is obviously zero (and the remainder is
    equal to the dividend). Actually, the division is not needed when
    (divisor > dividend).

Differential Revision: https://reviews.llvm.org/D29897

llvm-svn: 296832
2017-03-02 22:12:15 +00:00
..
Analysis Revert "Fix PR 24415 (at least), by making our post-dominator tree behavior sane." 2017-03-02 21:08:37 +00:00
Assembler Move inline asm diags tests to an ARM directory. 2017-02-08 16:48:35 +00:00
Bindings
Bitcode Add function importing info from samplepgo profile to the module summary. 2017-02-28 18:09:44 +00:00
BugPoint [IR/Verifier] List the CU we weren't able to find in `llvm.dbg.cu`. 2017-02-20 22:51:42 +00:00
CodeGen [DAGCombiner] Fix DebugLoc propagation when folding !(x cc y) -> (x !cc y) 2017-03-02 21:58:35 +00:00
DebugInfo Elide argument copies during instruction selection 2017-03-01 21:42:00 +00:00
Examples
ExecutionEngine RuntimeDyldELF/AArch64: Implement basic GOT support 2017-02-06 15:31:28 +00:00
Feature
FileCheck
Instrumentation [msan] Fix instrumentation of array allocas. 2017-02-24 00:13:17 +00:00
Integer
JitListener
LTO Implement intrinsic mangling for literal struct types. 2017-02-15 23:16:20 +00:00
LibDriver
Linker Verifier: Disallow a line number without a file in DISubprogram 2017-02-17 23:57:42 +00:00
MC [Hexagon] Fix testcase accidentally broken by r296645 2017-03-01 17:53:42 +00:00
Object Write to a temporary file in test instead of random file in the test directory. 2017-02-22 09:02:27 +00:00
ObjectYAML
Other NewGVN: Add debug counter for value numbering 2017-03-01 19:59:26 +00:00
SymbolRewriter
TableGen [globalisel] Decouple src pattern operands from dst pattern operands. 2017-02-24 15:43:30 +00:00
ThinLTO/X86 LTO: When creating a local cache, create the cache directory if it does not already exist. 2017-03-02 02:02:38 +00:00
Transforms [BypassSlowDivision] Use ValueTracking to simplify run-time checks 2017-03-02 22:12:15 +00:00
Unit
Verifier Teach the IR verifier to reject conflicting debug info for function arguments. 2017-02-28 23:48:42 +00:00
YAMLParser
tools LTO: When creating a local cache, create the cache directory if it does not already exist. 2017-03-02 02:02:38 +00:00
.clang-format
CMakeLists.txt
TestRunner.sh
lit.cfg
lit.site.cfg.in