llvm-6502/test/Transforms/InstCombine
Anders Carlsson 77bc49e5e2 Recognize and simplify
(A+B) == A  ->  B == 0
A == (A+B)  ->  B == 0



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124567 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-30 22:01:13 +00:00
..
2002-03-11-InstCombineHang.ll
2002-05-14-SubFailure.ll
2002-08-02-CastTest.ll
2002-12-05-MissedConstProp.ll
2003-05-26-CastMiscompile.ll
2003-05-27-ConstExprCrash.ll
2003-06-05-BranchInvertInfLoop.ll
2003-07-21-ExternalConstant.ll
2003-08-12-AllocaNonNull.ll remove a use of llvm-dis 2010-11-30 02:04:15 +00:00
2003-09-09-VolatileLoadElim.ll
2003-10-29-CallSiteResolve.ll
2003-11-03-VarargsCallBug.ll
2003-11-13-ConstExprCastCall.ll
2004-01-13-InstCombineInvokePHI.ll
2004-02-23-ShiftShiftOverflow.ll
2004-03-13-InstCombineInfLoop.ll
2004-04-04-InstCombineReplaceAllUsesWith.ll
2004-05-07-UnsizedCastLoad.ll
2004-07-27-ConstantExprMul.ll
2004-08-09-RemInfLoop.ll
2004-08-10-BoolSetCC.ll
2004-09-20-BadLoadCombine2.ll
2004-09-20-BadLoadCombine.ll
2004-09-28-BadShiftAndSetCC.ll
2004-11-22-Missed-and-fold.ll
2004-11-27-SetCCForCastLargerAndConstant.ll
2004-12-08-RemInfiniteLoop.ll
2005-03-04-ShiftOverflow.ll
2005-04-07-UDivSelectCrash.ll
2005-06-15-DivSelectCrash.ll
2005-06-15-ShiftSetCCCrash.ll
2005-06-16-RangeCrash.ll
2005-06-16-SetCCOrSetCCMiscompile.ll
2005-07-07-DeadPHILoop.ll
2006-02-13-DemandedMiscompile.ll
2006-02-28-Crash.ll
2006-03-30-ExtractElement.ll
2006-04-28-ShiftShiftLongLong.ll
2006-05-04-DemandedBitCrash.ll
2006-09-15-CastToBool.ll
2006-10-19-SignedToUnsignedCastAndConst-2.ll
2006-10-20-mask.ll
2006-10-26-VectorReassoc.ll
2006-11-03-Memmove64.ll
2006-11-10-ashr-miscompile.ll
2006-12-01-BadFPVectorXform.ll
2006-12-05-fp-to-int-ext.ll
2006-12-08-Phi-ICmp-Op-Fold.ll
2006-12-08-Select-ICmp.ll
2006-12-15-Range-Test.ll
2006-12-23-Select-Cmp-Cmp.ll
2007-01-13-ExtCompareMiscompile.ll
2007-01-14-FcmpSelf.ll
2007-01-18-VectorInfLoop.ll
2007-01-27-AndICmp.ll
2007-02-01-LoadSinkAlloca.ll
2007-02-07-PointerCast.ll
2007-02-23-PhiFoldInfLoop.ll
2007-03-13-CompareMerge.ll
2007-03-19-BadTruncChangePR1261.ll
2007-03-21-SignedRangeTest.ll
2007-03-25-BadShiftMask.ll
2007-03-25-DoubleShift.ll
2007-03-26-BadShiftMask.ll
2007-04-04-BadFoldBitcastIntoMalloc.ll
2007-04-08-SingleEltVectorCrash.ll
2007-05-04-Crash.ll
2007-05-10-icmp-or.ll
2007-05-14-Crash.ll
2007-05-18-CastFoldBug.ll
2007-06-06-AshrSignBit.ll
2007-06-21-DivCompareMiscomp.ll
2007-08-02-InfiniteLoop.ll
2007-09-10-AliasConstFold.ll
2007-09-11-Trampoline.ll
2007-09-17-AliasConstFold2.ll
2007-10-10-EliminateMemCpy.ll
2007-10-12-Crash.ll
2007-10-28-stacksave.ll
2007-10-31-RangeCrash.ll
2007-10-31-StringCrash.ll
2007-11-07-OpaqueAlignCrash.ll
2007-11-15-CompareMiscomp.ll
2007-11-22-IcmpCrash.ll
2007-11-25-CompatibleAttributes.ll
2007-12-10-ConstFoldCompare.ll
2007-12-12-GEPScale.ll
2007-12-16-AsmNoUnwind.ll
2007-12-18-AddSelCmpSub.ll
2007-12-28-IcmpSub2.ll
2008-01-06-BitCastAttributes.ll
2008-01-06-CastCrash.ll
2008-01-06-VoidCast.ll
2008-01-13-AndCmpCmp.ll
2008-01-13-NoBitCastAttributes.ll
2008-01-14-DoubleNest.ll
2008-01-14-VarArgTrampoline.ll
2008-01-21-MismatchedCastAndCompare.ll
2008-01-21-MulTrunc.ll
2008-01-27-FloatSelect.ll
2008-01-29-AddICmp.ll
2008-02-13-MulURem.ll
2008-02-16-SDivOverflow2.ll
2008-02-16-SDivOverflow.ll
2008-02-23-MulSub.ll
2008-02-28-OrFCmpCrash.ll
2008-03-13-IntToPtr.ll
2008-04-22-ByValBitcast.ll
2008-04-28-VolatileStore.ll
2008-04-29-VolatileLoadDontMerge.ll
2008-04-29-VolatileLoadMerge.ll
2008-05-08-LiveStoreDelete.ll
2008-05-08-StrLenSink.ll
2008-05-09-SinkOfInvoke.ll
2008-05-17-InfLoop.ll
2008-05-18-FoldIntToPtr.ll
2008-05-22-IDivVector.ll
2008-05-22-NegValVector.ll
2008-05-23-CompareFold.ll
2008-05-31-AddBool.ll
2008-05-31-Bools.ll
2008-06-05-ashr-crash.ll
2008-06-08-ICmpPHI.ll
2008-06-13-InfiniteLoopStore.ll
2008-06-13-ReadOnlyCallStore.ll
2008-06-19-UncondLoad.ll
2008-06-21-CompareMiscomp.ll
2008-06-24-StackRestore.ll
2008-07-08-AndICmp.ll
2008-07-08-ShiftOneAndOne.ll
2008-07-08-SubAnd.ll
2008-07-08-VolatileLoadMerge.ll
2008-07-09-SubAndError.ll
2008-07-10-CastSextBool.ll
2008-07-10-ICmpBinOp.ll
2008-07-11-RemAnd.ll
2008-07-13-DivZero.ll
2008-07-16-fsub.ll
2008-07-16-sse2_storel_dq.ll
2008-08-05-And.ll
2008-08-17-ICmpXorSignbit.ll
2008-09-02-VectorCrash.ll
2008-09-29-FoldingOr.ll
2008-10-11-DivCompareFold.ll
2008-10-23-ConstFoldWithoutMask.ll
2008-11-01-SRemDemandedBits.ll
2008-11-08-FCmp.ll
2008-11-20-DivMulRem.ll My auto-simplifier noticed that ((X/Y)*Y)/Y occurs several times in SPEC 2011-01-28 16:51:11 +00:00
2008-11-27-IDivVector.ll
2008-11-27-MultiplyIntVec.ll
2008-11-27-UDivNegative.ll
2008-12-17-SRemNegConstVec.ll
2009-01-05-i128-crash.ll
2009-01-08-AlignAlloca.ll
2009-01-16-PointerAddrSpace.ll
2009-01-19-fmod-constant-float-specials.ll
2009-01-19-fmod-constant-float.ll
2009-01-24-EmptyStruct.ll
2009-01-31-InfIterate.ll
2009-01-31-Pressure.ll
2009-02-04-FPBitcast.ll
2009-02-20-InstCombine-SROA.ll
2009-02-21-LoadCST.ll
2009-02-25-CrashZeroSizeArray.ll
2009-03-18-vector-ashr-crash.ll
2009-03-20-AShrOverShift.ll
2009-03-24-InfLoop.ll
2009-04-07-MulPromoteToI96.ll
2009-05-23-FCmpToICmp.ll
2009-06-11-StoreAddrSpace.ll
2009-06-16-SRemDemandedBits.ll
2009-07-02-MaskedIntVector.ll
2009-12-17-CmpSelectNull.ll
2010-01-28-NegativeSRem.ll
2010-03-03-ExtElim.ll
2010-11-01-lshr-mask.ll Have SimplifyBinOp dispatch Xor, Add and Sub to the corresponding methods 2010-12-20 14:47:04 +00:00
2010-11-21-SizeZeroTypeGEP.ll If a GEP index simply advances by multiples of a type of zero size, 2010-11-22 16:32:50 +00:00
2010-11-23-Distributed.ll Add a generic expansion transform: A op (B op' C) -> (A op B) op' (A op C) 2010-12-22 13:36:08 +00:00
add2.ll
add3.ll
add-shrink.ll
add-sitofp.ll
add.ll Recognize and simplify 2011-01-30 22:01:13 +00:00
addnegneg.ll
adjust-for-sminmax.ll
align-2d-gep.ll
align-addr.ll
align-external.ll
alloca.ll
and2.ll Teach InstructionSimplify to fold (A & B) & A -> A & B and (A | B) | A -> A | B. 2010-09-10 22:39:55 +00:00
and-compare.ll
and-fcmp.ll
and-not-or.ll
and-or-and.ll
and-or-not.ll
and-or.ll
and-xor-merge.ll
and.ll
apint-add1.ll
apint-add2.ll
apint-and1.ll
apint-and2.ll
apint-and-compare.ll
apint-and-or-and.ll
apint-and-xor-merge.ll
apint-call-cast-target.ll
apint-cast-and-cast.ll
apint-cast-cast-to-and.ll
apint-cast.ll
apint-div1.ll
apint-div2.ll
apint-mul1.ll
apint-mul2.ll
apint-not.ll
apint-or1.ll
apint-or2.ll
apint-rem1.ll
apint-rem2.ll
apint-select.ll
apint-shift-simplify.ll
apint-shift.ll
apint-shl-trunc.ll
apint-sub.ll
apint-xor1.ll
apint-xor2.ll
apint-zext1.ll
apint-zext2.ll
ashr-nop.ll
badmalloc.ll
binop-cast.ll
bit-checks.ll Generalize instcombine's support for combining multiple bit checks into a single test. Patch by Dirk Steinke! 2010-09-08 22:16:17 +00:00
bit-tracking.ll
bitcast-sext-vector.ll
bitcast-store.ll Fix a case where instcombine was stripping metadata (and alignment) 2010-10-25 16:16:27 +00:00
bitcast-vec-canon.ll
bitcast-vector-fold.ll
bitcast.ll handle the constant case of vector insertion. For something 2010-08-28 01:50:57 +00:00
bitcount.ll
bittest.ll
bswap-fold.ll
bswap.ll
call2.ll
call-cast-target.ll
call-intrinsics.ll
call.ll
canonicalize_branch.ll
cast_ptr.ll
cast-mul-select.ll
cast-set.ll
cast.ll Re-apply r113679, which was reverted in r113720, which added a paid of new instcombine transforms 2010-09-13 17:59:27 +00:00
compare-signs.ll
constant-fold-compare.ll
constant-fold-gep.ll implement constant folding support for an exotic constant expr: 2011-01-06 06:19:46 +00:00
CPP_min_max.ll
crash.ll fix PR9013, an infinite loop in instcombine. 2011-01-21 05:29:50 +00:00
dce-iterate.ll
deadcode.ll
dg.exp
div-cmp-overflow.ll
div.ll
enforce-known-alignment.ll
exact-sdiv.ll
extractvalue.ll Transform (extractvalue (load P), ...) to (load (gep P, 0, ...)) if the load has no other uses, shrinking the load. 2010-11-29 21:56:20 +00:00
fcmp-select.ll
fcmp-special.ll
fold-bin-operand.ll
fold-calls.ll Don't try to constant fold libm functions with non-finite arguments. 2010-09-27 21:29:20 +00:00
fold-vector-zero.ll
fp-ret-bitcast.ll
fpcast.ll
fpextend.ll
fsub.ll
gepgep.ll
getelementptr.ll
hoist_instr.ll
icmp.ll Fix a random missed optimization by making InstCombine more aggressive when determining which bits are demanded by 2011-01-11 00:36:45 +00:00
idioms.ll
IntPtrCast.ll
intrinsics.ll X86 supports i8/i16 overflow ops (except i8 multiplies), we should 2010-12-19 20:03:11 +00:00
invariant.ll
JavaCompare.ll
known_align.ll
load3.ll
load-cmp.ll
load-select.ll
load.ll
loadstore-alignment.ll
logical-select.ll
lshr-phi.ll
malloc2.ll
malloc3.ll
malloc-free-delete.ll
malloc.ll
memcpy-to-load.ll
memcpy.ll fix PR8267 - Instcombine shouldn't optimizer away volatile memcpy's. 2010-10-01 05:51:02 +00:00
memmove.ll
memset2.ll Test case for r122215 when InstCombine optimizes memset 2010-12-20 01:06:23 +00:00
memset_chk.ll
memset.ll
mul-masked-bits.ll
mul.ll
multi-use-or.ll
narrow.ll
neon-intrinsics.ll Teach instcombine to set the alignment arguments for NEON load/store intrinsics. 2010-10-22 21:41:48 +00:00
no-negzero.ll
not-fcmp.ll
not.ll
nothrow.ll
nsw.ll
objsize.ll Revert 122959, it needs more thought. Add it back to README.txt with additional notes. 2011-01-07 20:42:20 +00:00
odr-linkage.ll
or-fcmp.ll Just because we have determined that an (fcmp | fcmp) is true for A < B, 2011-01-21 19:39:42 +00:00
or-to-xor.ll
or.ll Teach InstCombine to merge (icmp ult (X + CA), C1) | (icmp eq X, C2) into (icmp ult (X + CA), C1 + 1) if C2 + CA == C1. 2010-12-20 16:18:51 +00:00
overflow.ll recognize an unsigned add with overflow idiom into uadd. 2010-12-19 19:37:52 +00:00
phi-merge-gep.ll
phi.ll enhance FoldOpIntoPhi in instcombine to try harder when a phi has 2011-01-16 05:28:59 +00:00
pr2645-0.ll
pr2645-1.ll
pr2996.ll
pr8547.ll When checking that the necessary bits are zero in 2010-11-10 01:30:56 +00:00
preserve-sminmax.ll
ptr-int-cast.ll
README.txt
rem.ll InstCombine: Add a missing irem identity (X % X -> 0). 2010-11-17 19:11:46 +00:00
sdiv-1.ll
sdiv-2.ll
sdiv-shift.ll
select-2.ll
select-crash.ll Teach InstCombine not to use Add and Neg on FP. PR 8490. 2010-10-27 23:45:18 +00:00
select-load-call.ll
select.ll Clean up the tests a little, make sure we match an instruction in the right 2011-01-28 05:13:17 +00:00
set.ll
setcc-strength-reduce.ll
sext.ll
shift-sra.ll
shift.ll Move some shift transforms out of instcombine and into InstructionSimplify. 2011-01-14 00:37:45 +00:00
shufflemask-undef.ll
shufflevec-constant.ll
signed-comparison.ll
signext.ll
simplify-demanded-bits-pointer.ll
sink_instruction.ll
sitofp.ll
sqrt.ll Fix a serious performance regression introduced by r108687 on linux: 2010-09-07 20:01:38 +00:00
srem1.ll
srem-simplify-bug.ll
srem.ll
stack-overalign.ll
stacksaverestore.ll
store.ll
strcpy_chk.ll
sub.ll InstCombine: Implement X - A*-B -> X + A*B. 2010-11-22 20:31:27 +00:00
trunc.ll implement an instcombine xform that canonicalizes casts outside of and-with-constant operations. 2011-01-15 06:32:33 +00:00
udiv_select_to_select_shift.ll
udiv-simplify-bug-0.ll
udiv-simplify-bug-1.ll
udivrem-change-width.ll
urem-simplify-bug.ll more test cleanup 2010-09-02 22:38:56 +00:00
urem.ll
vec_demanded_elts.ll Teach instcombine about the rest of the SSE and SSE2 conversion 2011-01-10 07:19:37 +00:00
vec_extract_elt.ll
vec_insertelt.ll
vec_narrow.ll
vec_sext.ll Add vector versions of some existing scalar transforms to aid codegen in matching psign & pblend operations to the IR produced by clang/gcc for their C idioms. 2010-12-17 23:12:19 +00:00
vec_shuffle.ll Change instcombine's getShuffleMask to represent undef with negative values. 2010-10-29 22:03:05 +00:00
vector-casts.ll
vector-srem.ll
volatile_store.ll
xor2.ll Re-apply r113679, which was reverted in r113720, which added a paid of new instcombine transforms 2010-09-13 17:59:27 +00:00
xor-undef.ll
xor.ll
zero-point-zero-add.ll
zeroext-and-reduce.ll
zext-bool-add-sub.ll
zext-fold.ll
zext-or-icmp.ll
zext.ll

This directory contains test cases for the instcombine transformation.  The
dated tests are actual bug tests, whereas the named tests are used to test
for features that the this pass should be capable of performing.