llvm-project/llvm/test/Transforms/SimplifyCFG
Hans Wennborg b73c0b041d Allow switch-to-lookup table for tables with holes by adding bitmask check
This allows us to generate table lookups for code such as:

  unsigned test(unsigned x) {
    switch (x) {
      case 100: return 0;
      case 101: return 1;
      case 103: return 2;
      case 105: return 3;
      case 107: return 4;
      case 109: return 5;
      case 110: return 6;
      default: return f(x);
    }
  }

Since cases 102, 104, etc. are not constants, the lookup table has holes
in those positions. We therefore guard the table lookup with a bitmask check.

Patch by Jasper Neumann!

llvm-svn: 203694
2014-03-12 18:35:40 +00:00
..
SPARC [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
X86 Allow switch-to-lookup table for tables with holes by adding bitmask check 2014-03-12 18:35:40 +00:00
2002-05-21-PHIElimination.ll
2002-09-24-PHIAssertion.ll
2003-03-07-DominateProblem.ll
2003-08-05-InvokeCrash.ll
2003-08-17-BranchFold.ll Converted 8x tests of SimplifyCFG to use FileCheck instead of grep. 2013-04-09 05:18:53 +00:00
2003-08-17-BranchFoldOrdering.ll Converted 8x tests of SimplifyCFG to use FileCheck instead of grep. 2013-04-09 05:18:53 +00:00
2003-08-17-FoldSwitch-dbg.ll Converted 8x tests of SimplifyCFG to use FileCheck instead of grep. 2013-04-09 05:18:53 +00:00
2003-08-17-FoldSwitch.ll Converted 8x tests of SimplifyCFG to use FileCheck instead of grep. 2013-04-09 05:18:53 +00:00
2004-12-10-SimplifyCFGCrash.ll
2005-06-16-PHICrash.ll
2005-08-01-PHIUpdateFail.ll
2005-10-02-InvokeSimplify.ll
2005-12-03-IncorrectPHIFold.ll Converted 8x tests of SimplifyCFG to use FileCheck instead of grep. 2013-04-09 05:18:53 +00:00
2006-02-17-InfiniteUnroll.ll
2006-06-12-InfLoop.ll
2006-08-03-Crash.ll
2006-10-19-UncondDiv.ll Converted 8x tests of SimplifyCFG to use FileCheck instead of grep. 2013-04-09 05:18:53 +00:00
2006-12-08-Ptr-ICmp-Branch.ll
2007-11-22-InvokeNoUnwind.ll Converted 8x tests of SimplifyCFG to use FileCheck instead of grep. 2013-04-09 05:18:53 +00:00
2007-12-21-Crash.ll
2008-01-02-hoist-fp-add.ll Converted 8x tests of SimplifyCFG to use FileCheck instead of grep. 2013-04-09 05:18:53 +00:00
2008-05-16-PHIBlockMerge.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2008-07-13-InfLoopMiscompile.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2008-09-08-MultiplePred.ll
2008-09-17-SpeculativeHoist.ll
2008-10-03-SpeculativelyExecuteBeforePHI.ll
2008-12-06-SingleEntryPhi.ll
2008-12-16-DCECond.ll
2009-01-18-PHIPropCrash.ll
2009-01-19-UnconditionalTrappingConstantExpr.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
2009-05-12-externweak.ll
2010-03-30-InvokeCrash.ll Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID 2013-01-01 13:57:25 +00:00
2011-03-08-UnreachableUse.ll
2011-09-05-TrivialLPad.ll
BrUnwind.ll Fix the remaining TCL-style quotes found in the testsuite. This is 2012-07-02 19:09:46 +00:00
CoveredLookupTable.ll Teach simplify-cfg how to correctly create covered lookup tables for switches on iN with N >= 3. 2013-10-20 07:04:37 +00:00
DeadSetCC.ll Fix the remaining TCL-style quotes found in the testsuite. This is 2012-07-02 19:09:46 +00:00
EmptyBlockMerge.ll Filecheckized 2x tests in SimplifyCFG and removed their date prefix to fit with current llvm style for test names. 2013-01-31 01:04:23 +00:00
EqualPHIEdgeBlockMerge.ll TryToSimplifyUncondBranchFromEmptyBlock was checking that any common 2013-07-11 08:28:20 +00:00
ForwardSwitchConditionToPHI.ll
HoistCode.ll
MagicPointer.ll Teach SimplifyCFG about address spaces 2013-10-21 18:55:08 +00:00
PHINode.ll Filecheckized 2x tests in SimplifyCFG and removed their date prefix to fit with current llvm style for test names. 2013-01-31 01:04:23 +00:00
PR9946.ll Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID 2013-01-01 13:57:25 +00:00
PR16069.ll Second part of pr16069 2013-06-04 14:11:59 +00:00
PhiBlockMerge.ll
PhiBlockMerge2.ll
PhiEliminate.ll
PhiEliminate2.ll
PhiEliminate3.ll
PhiNoEliminate.ll
SpeculativeExec.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
UncondBranchToReturn.ll Fix the remaining TCL-style quotes found in the testsuite. This is 2012-07-02 19:09:46 +00:00
UnreachableEliminate.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
attr-noduplicate.ll SimplifyCFG: Don't duplicate calls to functions marked noduplicate v2 2013-10-21 20:07:30 +00:00
basictest.ll Fix pr14893. 2014-01-28 16:56:46 +00:00
branch-cond-merge.ll
branch-cond-prop.ll
branch-fold-dbg.ll Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields. 2013-09-06 21:03:58 +00:00
branch-fold-test.ll
branch-fold.ll Remove dyn_cast + dereference pattern by replacing it with a cast and changing 2012-06-24 10:15:42 +00:00
branch-phi-thread.ll Fix the remaining TCL-style quotes found in the testsuite. This is 2012-07-02 19:09:46 +00:00
common-dest-folding.ll FoldBranchToCommonDest merges branches into a single branch with or/and of the condition. It has a heuristics for estimating when some of the dependencies are processed by out-of-order processors. This patch adds another rule to the heuristics that says that if the "BonusInstruction" that we speculatively execute is used by the condition of the second branch then it is okay to hoist it. This change exposes more opportunities for other passes to transform the code. It does not matter that much that we if-convert the code because the selectiondag builder splits or/and branches into multiple branches when profitable. 2013-11-12 22:37:16 +00:00
dbginfo.ll
dce-cond-after-folding-terminator.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
duplicate-phis.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
hoist-common-code.ll
hoist-dbgvalue.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-23 01:16:29 +00:00
indirectbr.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
invoke.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
invoke_unwind.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
iterative-simplify.ll
lifetime.ll
multiple-phis.ll Fix SpeculativelyExecuteBB to either speculate all or none of the phis 2012-01-05 23:58:56 +00:00
no_speculative_loads_with_tsan.ll Don't speculate loads under ThreadSanitizer 2013-11-21 07:29:28 +00:00
noreturn-call.ll
phi-undef-loadstore.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
preserve-branchweights-partial.ll Catch more CHECK that can be converted to CHECK-LABEL in Transforms for easier debugging. No functionality change. 2013-07-14 01:50:49 +00:00
preserve-branchweights-switch-create.ll PGO: preserve branch-weight metadata when merging two switches where 2012-09-14 17:29:56 +00:00
preserve-branchweights.ll PGO branch weight: keep halving the weights until they can fit into 2014-01-27 23:39:03 +00:00
return-merge.ll
select-gep.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
sink-common-code.ll SimplifyCFG: sink common codes from IF, ELSE blocks down to END block. 2012-09-20 22:37:36 +00:00
speculate-math.ll Allow speculating llvm.sqrt, fma and fmuladd 2014-01-31 00:09:00 +00:00
speculate-store.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
speculate-with-offset.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
switch-masked-bits.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
switch-on-const-select.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
switch-simplify-crash.ll
switch-to-icmp.ll Update Transforms tests to use CHECK-LABEL for easier debugging. No functionality change. 2013-07-14 01:42:54 +00:00
switch_create.ll Resolve TODO in test now that filecheck has multiple check prefixes. 2013-11-10 02:16:47 +00:00
switch_switch_fold.ll
switch_thread.ll Fix the remaining TCL-style quotes found in the testsuite. This is 2012-07-02 19:09:46 +00:00
trap-debugloc.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
trapping-load-unreachable.ll IR: add a second ordering operand to cmpxhg for failure 2014-03-11 10:48:52 +00:00
trivial-throw.ll Don't remove a landing pad if the invoke requires a table entry. 2013-03-11 20:53:00 +00:00
two-entry-phi-return.ll
unreachable-blocks.ll Make Value::isDereferenceablePointer() handle unreachable code blocks. (This 2012-01-23 00:05:17 +00:00
volatile-phioper.ll Use function attributes to indicate that we don't want to realign the stack. 2013-08-01 21:42:05 +00:00