llvm-project/llvm/test/Transforms/SimpleLoopUnswitch
Max Kazantsev 619a83463f [SimpleLoopUnswitch] Unswitch by experimental.guard intrinsics
This patch adds support of `llvm.experimental.guard` intrinsics to non-trivial
simple loop unswitching. These intrinsics represent implicit control flow which
has pretty much the same semantics as usual conditional branches. The
algorithm of dealing with them is following:

- Consider guards as unswitching candidates;
- If a guard is considered the best candidate, turn it into a branch;
- Apply normal unswitching algorithm on this branch.

The patch has no compile time effect on code that does not contain any guards.

Differential Revision: https://reviews.llvm.org/D53744
Reviewed By: chandlerc

llvm-svn: 345387
2018-10-26 14:20:11 +00:00
..
2006-06-13-SingleEntryPHI.ll
2006-06-27-DeadSwitchCase.ll
2007-05-09-Unreachable.ll
2007-05-09-tl.ll
2007-07-12-ExitDomInfo.ll
2007-07-13-DomInfo.ll
2007-07-18-DomInfo.ll
2007-08-01-Dom.ll
2007-08-01-LCSSA.ll
2007-10-04-DomFrontier.ll
2008-06-02-DomInfo.ll
2008-06-17-DomFrontier.ll
2010-11-18-LCSSA.ll
2011-06-02-CritSwitch.ll
2011-09-26-EHCrash.ll
2012-04-02-IndirectBr.ll
2012-04-30-LoopUnswitch-LPad-Crash.ll
2012-05-20-Phi.ll
2015-09-18-Addrspace.ll
LIV-loop-condtion.ll [PM/LoopUnswitch] Support partial trivial unswitching. 2018-06-20 18:57:07 +00:00
basictest.ll
cleanuppad.ll
copy-metadata.ll
crash.ll
delete-dead-blocks.ll [SimpleLoopUnswitch] remove a chain of dead blocks at once 2018-09-04 20:19:41 +00:00
exponential-behavior.ll
formDedicatedAfterTrivial1.ll [SimpleLoopUnswitch] Form dedicated exits after trivial unswitches. 2018-08-28 20:41:05 +00:00
formDedicatedAfterTrivial2.ll [SimpleLoopUnswitch] Form dedicated exits after trivial unswitches. 2018-08-28 20:41:05 +00:00
formDedicatedAfterTrivial3.ll [SimpleLoopUnswitch] Form dedicated exits after trivial unswitches. 2018-08-28 20:41:05 +00:00
guards.ll [SimpleLoopUnswitch] Unswitch by experimental.guard intrinsics 2018-10-26 14:20:11 +00:00
infinite-loop.ll
msan.ll
nontrivial-unswitch-cost.ll
nontrivial-unswitch.ll [PM/Unswitch] Fix a collection of closely related issues with trivial 2018-07-10 08:36:05 +00:00
pr37888.ll [LegacyPM] Fix PR37888 by teaching the legacy loop pass manager how to 2018-06-22 02:43:41 +00:00
preserve-analyses.ll
trivial-unswitch-iteration.ll Generalize MergeBlockIntoPredecessor. Replace uses of MergeBasicBlockIntoOnlyPred. 2018-06-20 22:01:04 +00:00
trivial-unswitch.ll [PM/Unswitch] Fix a collection of closely related issues with trivial 2018-07-10 08:36:05 +00:00
update-scev.ll [PM/Unswitch] Fix a collection of closely related issues with trivial 2018-07-10 08:36:05 +00:00