llvm-project/llvm/test
Philip Reames ad5a84c883 [LoopPred/WC] Use a dominating widenable condition to remove analyze loop exits
This implements a version of the predicateLoopExits transform from IndVarSimplify extended to exploit widenable conditions - and thus be much wider in scope of legality. The code structure ends up being almost entirely different, so I chose to duplicate this into the LoopPredication pass instead of trying to reuse the code in the IndVars.

The core notions of the transform are as follows:

    If we have a widenable condition which controls entry into the loop, we're allowed to widen it arbitrarily. Given that, it's simply a *profitability* question as to what conditions to fold into the widenable branch.
    To avoid pass ordering issues, we want to avoid widening cases that would otherwise be dischargeable. Or... widen in a form which can still be discharged. Thus, we phrase the transform as selecting one analyzeable exit from the set of analyzeable exits to keep. This avoids creating pass ordering complexities.
    Since none of the above proves that we actually exit through our analyzeable exits - we might exit through something else entirely - we limit ourselves to cases where a) the latch is analyzeable and b) the latch is predicted taken, and c) the exit being removed is statically cold.

Differential Revision: https://reviews.llvm.org/D69830
2019-11-18 11:23:29 -08:00
..
Analysis [ConstantFold] Handle identity folds at top of ConstantFoldBinaryInst 2019-11-17 21:30:14 +00:00
Assembler Add support for multi-module bitcode files to llvm-dis 2019-11-14 10:40:41 -08:00
Bindings [IR] Redefine Freeze instruction 2019-11-12 10:49:00 +09:00
Bitcode Add support for multi-module bitcode files to llvm-dis 2019-11-14 10:40:41 -08:00
BugPoint [bugpoint] Reduce metadata that does not contribute to crash. 2019-10-30 15:11:56 +00:00
CodeGen [PowerPC] Test case for vector float gather on ppc64le and ppc64 2019-11-18 13:17:07 -06:00
DebugInfo Revert "[DWARF5]Addition of alignment atrribute in typedef DIE." 2019-11-18 15:53:22 +01:00
Demangle [Demangle] Add a few more options to the microsoft demangler 2019-10-15 08:29:56 +00:00
Examples [Examples] Add IRTransformations directory to examples. 2019-11-12 14:14:48 +00:00
ExecutionEngine [JITLink] Refactor EH-frame handling to support eh-frames with existing relocs. 2019-11-06 14:30:26 -08:00
Feature [NFC] Fix test reserve_global_reg.ll after 2d739f9 2019-11-18 15:04:32 +00:00
FileCheck
Instrumentation [hwasan] Remove lazy thread-initialisation 2019-11-04 10:58:46 +00:00
Integer
JitListener
LTO Reland: Dead Virtual Function Elimination 2019-10-17 09:58:57 +00:00
Linker [IRMover] Set Address Space for moved global values 2019-11-05 16:32:48 -08:00
MC [AMDGPU][MC][GFX10] Enabled v_movrel*[sdwa|dpp|dpp8] opcodes 2019-11-18 17:23:40 +03:00
MachineVerifier Revert "[MachineVerifier] Improve verification of live-in lists. 2019-11-07 14:02:13 -08:00
Object Fix a print error found while testing llvm-objcopy 2019-11-18 13:07:35 +00:00
ObjectYAML [ObjectYAML] - Redefine LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::yaml::Hex*) as LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR. 2019-10-30 18:12:48 +03:00
Other [llvm-bcanalyzer] Don't dump the contents if -dump is not passed 2019-11-13 10:38:57 -08:00
Reduce
SafepointIRVerifier
Support
SymbolRewriter
TableGen [GlobalISel] Match table opt: fix a bug in matching num of operands 2019-11-01 01:57:48 -07:00
ThinLTO/X86 ThinLTO : Import always_inline functions irrespective of the threshold 2019-11-08 17:02:01 -08:00
Transforms [LoopPred/WC] Use a dominating widenable condition to remove analyze loop exits 2019-11-18 11:23:29 -08:00
Unit
Verifier [DebugInfo] Add a DW_OP_LLVM_entry_value operation 2019-10-15 11:31:21 +00:00
YAMLParser
tools [yaml2obj][test] Move tests to binary format specific subdirectories 2019-11-18 09:06:14 -08:00
.clang-format
CMakeLists.txt
TestRunner.sh
lit.cfg.py
lit.site.cfg.py.in