llvm-project/llvm/test/Transforms/IndVarSimplify
Sanjoy Das 37e87c2023 [IndVars] Have `cloneArithmeticIVUser` guess better
Summary:
`cloneArithmeticIVUser` currently trips over expression like `add %iv,
-1` when `%iv` is being zero extended -- it tries to construct the
widened use as `add %iv.zext, zext(-1)` and (correctly) fails to prove
equivalence to `zext(add %iv, -1)` (here the SCEV for `%iv` is
`{1,+,1}`).

This change teaches `IndVars` to try sign extending the non-IV operand
if that makes the newly constructed IV use equivalent to the widened
narrow IV use.

Reviewers: atrick, hfinkel, reames

Subscribers: sanjoy, llvm-commits

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

llvm-svn: 250483
2015-10-16 01:00:47 +00:00
..
NVPTX [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
2002-09-09-PointerIndVar.ll
2003-04-16-ExprAnalysis.ll
2003-09-23-NotAtTop.ll
2003-12-10-RemoveInstrCrash.ll
2003-12-15-Crash.ll
2004-03-10-PHIInsertionBug.ll
2004-04-05-InvokeCastCrash.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2004-04-07-ScalarEvolutionCrash.ll
2005-02-11-InvokeCrash.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2005-02-17-TruncateExprCrash.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2005-02-26-ExitValueCompute.ll
2005-06-15-InstMoveCrash.ll
2005-11-18-Crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2006-03-31-NegativeStride.ll
2006-06-16-Indvar-LCSSA-Crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2006-09-20-LFTR-Crash.ll
2006-12-10-BitCast.ll
2007-01-06-TripCount.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-06-06-DeleteDanglesPtr.ll
2007-11-23-BitcastCrash.ll
2008-06-15-SCEVExpanderBug.ll
2008-09-02-IVType.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
2008-10-03-CouldNotCompute.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2008-11-25-APFloatAssert.ll
2009-04-14-shorten_iv_vars.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2009-04-15-shorten-iv-vars-2.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2009-04-22-IndvarCrash.ll
2009-04-27-Floating.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
2009-05-24-useafterfree.ll
2011-09-10-widen-nsw.ll This patch teaches IndVarSimplify to add nuw and nsw to certain kinds 2015-01-06 19:02:56 +00:00
2011-09-19-vectoriv.ll
2011-09-27-hoistsext.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2011-10-27-lftrnull.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2011-11-01-lftrptr.ll Verifier: Call verifyModule() from llc and opt 2015-03-27 22:04:28 +00:00
2011-11-15-multiexit.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2011-11-17-selfphi.ll
2012-07-17-lftr-undef.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2012-10-19-congruent-constant.ll
2014-06-21-congruent-constant.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
ada-loops.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
ashr-tripcount.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
avoid-i0.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
backedge-on-min-max.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
bec-cmp.ll Make ScalarEvolution::isKnownPredicate a little smarter 2015-08-19 01:51:51 +00:00
casted-argument.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
crash.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
dangling-use.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
divide-pointer.ll
dont-recompute.ll
elim-extend.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
eliminate-comparison.ll [SCEV] Try to prove predicates by splitting them 2015-10-02 18:50:30 +00:00
eliminate-max.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
eliminate-rem.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
exit_value_test2.ll Enable exitValue rewrite only when the cost of expansion is low. 2015-05-28 21:49:07 +00:00
exit_value_test3.ll Enable exitValue rewrite only when the cost of expansion is low. 2015-05-28 21:49:07 +00:00
exit_value_tests.ll
floating-point-iv.ll
indirectbr.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
interesting-invoke-use.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
iterationCount_zext_or_trunc.ll
iv-fold.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
iv-sext.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
iv-widen.ll [IndVars] Have `cloneArithmeticIVUser` guess better 2015-10-16 01:00:47 +00:00
iv-zext.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
lcssa-preservation.ll Enable exitValue rewrite only when the cost of expansion is low. 2015-05-28 21:49:07 +00:00
lftr-address-space-pointers.ll Revert some changes that were made to fix PR20680. 2015-03-02 21:41:07 +00:00
lftr-extend-const.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
lftr-other-uses.ll
lftr-promote.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
lftr-reuse.ll Revert some changes that were made to fix PR20680. 2015-03-02 21:41:07 +00:00
lftr-udiv-tripcount.ll [SCEV] Strengthen SCEVExpander::isHighCostExpansion. 2015-04-14 03:20:32 +00:00
lftr-zext.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
lftr_simple.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
loop-invariant-conditions.ll [IndVars] Make loop varying predicates loop invariant. 2015-07-27 21:42:49 +00:00
loop_evaluate7.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
loop_evaluate8.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
loop_evaluate9.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
loop_evaluate10.ll
loop_evaluate11.ll
loop_evaluate_1.ll
loop_evaluate_2.ll
loop_evaluate_3.ll
loop_evaluate_4.ll
loop_evaluate_5.ll
loop_evaluate_6.ll
lrev-existing-umin.ll [IndVars] Try to use existing values in RewriteLoopExitValues. 2015-07-09 18:46:12 +00:00
masked-iv.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
no-iv-rewrite.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
overflowcheck.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
phi-uses-value-multiple-times.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
polynomial-expand.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr18223.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr20680.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
pr22222.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr24356.ll [IndVars] Fix PR24356. 2015-08-06 20:43:41 +00:00
pr24783.ll [IndVars] Fix PR24783. 2015-09-15 23:45:39 +00:00
pr24952.ll [SCEV] identical instructions don't compute equal values 2015-09-27 21:09:48 +00:00
pr24956.ll [SCEV] Don't crash on pointer comparisons 2015-09-28 21:14:32 +00:00
pr25047.ll [IndVars] Preserve LCSSA in `eliminateIdentitySCEV` 2015-10-07 17:38:31 +00:00
pr25051.ll [IndVars] Don't break dominance in `eliminateIdentitySCEV` 2015-10-06 21:44:49 +00:00
pr25060.ll [SCEV] Pick backedge values for phi nodes correctly 2015-10-08 18:28:36 +00:00
preserve-signed-wrap.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
promote-iv-to-eliminate-casts.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
sharpen-range.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
shrunk-constant.ll
signed-trip-count.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
single-element-range.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
sink-alloca.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
sink-trapping.ll
strengthen-overflow.ll Fix PR22222 2015-01-15 01:46:09 +00:00
tripcount_compute.ll
tripcount_infinite.ll FileCheck'ify some wc/grep based tests; NFCI. 2015-07-28 03:50:09 +00:00
udiv-invariant-but-traps.ll
udiv.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
uglygep.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
ult-sub-to-eq.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
use-range-metadata.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
variable-stride-ivs-0.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
variable-stride-ivs-1.ll
verify-scev.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
widen-loop-comp.ll [IndVars] Fix a bug in r248045. 2015-09-20 01:52:18 +00:00
widen-nsw.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00