llvm-project/llvm/test/Transforms/InstSimplify
Sanjay Patel 562272536a [InstSimplify] try to eliminate icmp Pred (add nsw X, C1), C2
I was surprised to see that we're missing icmp folds based on 'add nsw' in InstCombine, 
but we should handle the InstSimplify cases first because that could make the InstCombine
code simpler.

Here are Alive-based proofs for the logic:

Name: add_neg_constant
Pre: C1 < 0 && (C2 > ((1<<(width(C1)-1)) + C1))
%a = add nsw i7 %x, C1
%b = icmp sgt %a, C2
  =>
%b = false

Name: add_pos_constant
Pre: C1 > 0 && (C2 < ((1<<(width(C1)-1)) + C1 - 1))
%a = add nsw i6 %x, C1
%b = icmp slt %a, C2
  =>
%b = false

Name: nuw
Pre: C1 u>= C2
%a = add nuw i11 %x, C1
%b = icmp ult %a, C2
  =>
%b = false

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

llvm-svn: 292952
2017-01-24 17:03:24 +00:00
..
2010-12-20-Boolean.ll
2011-01-14-Thread.ll
2011-02-01-Vector.ll
2011-09-05-InsertExtractValue.ll
2011-10-27-BinOpCrash.ll
2011-11-23-MaskedBitsCrash.ll
2013-04-19-ConstantFoldingCrash.ll
AndOrXor.ll [InstSimplify] move one and add more tests for potential negation folds 2016-10-19 18:42:12 +00:00
add-mask.ll Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
and-icmps-same-ops.ll [InstSimplify] fixed (?) to not mutate icmps 2016-12-06 22:09:52 +00:00
apint-or.ll
assume.ll
bitcast-vector-fold.ll [ConstantFold] Improve the bitcast folding logic for constant vectors. 2016-09-13 14:50:47 +00:00
bitreverse.ll [ValueTracking] Extend known bits to understand @llvm.bitreverse. 2017-01-17 17:23:51 +00:00
bswap.ll
call-callconv.ll
call.ll Simplify llvm.masked.load w/ undef masks 2016-07-14 06:58:37 +00:00
cast.ll [InstSimplify] Fold gep (gep V, C), (xor V, -1) to C-1 2016-08-16 06:13:46 +00:00
compare.ll [Constants] don't die processing non-ConstantInt GEP indices in isGEPWithNoNotionalOverIndexing() (PR31262) 2016-12-11 20:07:02 +00:00
dead-code-removal.ll
div.ll [InstSimplify] Optimize away udivs in the presence of range metadata 2017-01-06 22:58:02 +00:00
exact-nsw-nuw.ll
fast-math.ll
fdiv.ll
floating-point-arithmetic.ll InstSimplify: Eliminate fabs on known positive 2017-01-11 00:33:24 +00:00
floating-point-compare.ll [instsimplify] Fix incorrect folding of an ordered fcmp with a vector of all NaN. 2016-09-02 14:47:43 +00:00
fold-builtin-fma.ll
gep.ll
icmp-constant.ll [InstSimplify] try to eliminate icmp Pred (add nsw X, C1), C2 2017-01-24 17:03:24 +00:00
implies.ll
load-relative-32.ll
load-relative.ll
load.ll [ConstantFolding] Extend FoldReinterpretLoadFromConstPtr to handle negative offsets 2016-07-13 23:33:07 +00:00
maxmin.ll
negate.ll [InstSimplify] fold negation of sign-bit 2016-10-19 21:23:45 +00:00
noalias-ptr.ll
or-icmps-same-ops.ll [InstSimplify] fixed (?) to not mutate icmps 2016-12-06 22:09:52 +00:00
past-the-end.ll
phi.ll
pr28725.ll [ConstantFolding] Use ConstantExpr::getWithOperands 2016-07-29 03:27:31 +00:00
ptr_diff.ll
reassociate.ll
rem.ll [InstSimplify] Optimize away urems in the presence of range metadata 2017-01-06 21:23:51 +00:00
require-dominator.ll Add unittest for r280760 2016-09-08 16:53:40 +00:00
returned.ll Pointer-comparison folding should look through returned-argument functions 2016-07-11 03:37:59 +00:00
select.ll [InstCombine] if the condition of a select may be known via assumes, eliminate the select 2017-01-13 17:02:42 +00:00
shift-128-kb.ll
shift-knownbits.ll [InstCombine / InstSimplify] add and move tests for lshr transforms; NFC 2017-01-13 22:54:12 +00:00
shr-nop.ll [ValueTracking] improve ComputeNumSignBits for vector constants 2016-06-22 19:20:59 +00:00
undef.ll [InstCombine] replace divide-by-constant checks with asserts; NFC 2016-08-30 17:31:34 +00:00
vec-cmp.ll
vector_gep.ll
vector_ptr_bitcast.ll