llvm-6502/test/Transforms/InstCombine
Dan Gohman a60832b018 Fix a bogus srem rule - a negative value srem'd by a power-of-2
can have a non-negative result; for example, -16%16 is 0. Also,
clarify the related comments. This fixes PR2670.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54767 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-13 23:12:35 +00:00
..
2002-03-11-InstCombineHang.ll
2002-05-14-SubFailure.ll
2002-05-14-TouchDeletedInst.ll
2002-08-02-CastTest.ll
2002-09-17-GetElementPtrCrash.ll
2002-12-05-MissedConstProp.ll
2003-05-26-CastMiscompile.ll
2003-05-27-ConstExprCrash.ll
2003-06-05-BranchInvertInfLoop.ll
2003-06-22-ConstantExprCrash.ll
2003-07-21-ExternalConstant.ll
2003-08-12-AllocaNonNull.ll
2003-09-09-VolatileLoadElim.ll
2003-10-23-InstcombineNullFail.ll
2003-10-29-CallSiteResolve.ll
2003-11-03-VarargsCallBug.ll
2003-11-13-ConstExprCastCall.ll Situations can arise when you have a function called that returns a 'void', but 2008-05-14 22:45:20 +00:00
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 Eliminate questionable syntax for stdin redirection. This probably also speeds things up a bit. 2008-05-20 22:07:21 +00:00
2004-12-08-InstCombineCrash.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-07-SextZextCrash.ll
2006-02-13-DemandedMiscompile.ll
2006-02-28-Crash.ll
2006-03-30-ExtractElement.ll
2006-04-01-InfLoop.ll
2006-04-28-ShiftShiftLongLong.ll
2006-05-04-DemandedBitCrash.ll
2006-05-06-Infloop.ll
2006-06-28-infloop.ll
2006-09-11-EmptyStructCrash.ll
2006-09-15-CastToBool.ll
2006-10-19-SignedToUnsignedCastAndConst-2.ll Eliminate questionable syntax for stdin redirection. This probably also speeds things up a bit. 2008-05-20 22:07:21 +00:00
2006-10-19-SignedToUnsignedCastAndConst.ll
2006-10-20-mask.ll
2006-10-26-VectorReassoc.ll
2006-11-03-Memmove64.ll
2006-11-10-ashr-miscompile.ll
2006-11-27-XorBug.ll
2006-12-01-BadFPVectorXform.ll
2006-12-05-fp-to-int-ext.ll
2006-12-08-ICmp-Combining.ll
2006-12-08-Phi-ICmp-Op-Fold.ll
2006-12-08-Select-ICmp.ll
2006-12-10-ICmp-GEP-GEP.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-03-27-PR1280.ll
2007-03-31-InfiniteLoop.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-05-EqualGEP.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-EmptyField.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 Ignore stderr for some more tests that expect warnings there. 2008-06-10 16:13:38 +00:00
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 Fix two more not-grep tests that were missing llvm-dis. 2008-06-09 22:36:45 +00:00
2008-01-21-MulTrunc.ll
2008-01-27-FloatSelect.ll
2008-01-29-AddICmp.ll
2008-02-04-GEPIdxBug.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 Fix a broken test. Neither load is eliminable without changing the CFG. 2008-07-09 05:01:02 +00:00
2008-05-08-LiveStoreDelete.ll Make instcombine's DSE respect loads as well as stores. It is not safe to 2008-05-08 17:20:30 +00:00
2008-05-08-StrLenSink.ll More than just loads can read from memory: readonly calls like strlen 2008-05-08 17:37:37 +00:00
2008-05-09-SinkOfInvoke.ll Testcase for PR2303. 2008-05-10 16:43:10 +00:00
2008-05-17-InfLoop.ll Fix PR2339 2008-05-18 04:11:26 +00:00
2008-05-18-FoldIntToPtr.ll "ret (constexpr)" can't be folded into a Constant. Add a method to 2008-05-25 20:56:15 +00:00
2008-05-22-IDivVector.ll Fix a recently added optimization to not crash on vectors. 2008-05-23 03:26:47 +00:00
2008-05-22-NegValVector.ll Constant integer vectors may also be negated. 2008-05-23 04:54:45 +00:00
2008-05-23-CompareFold.ll Fix a serious brain-o. Obviously no-one reviewed my patch :( 2008-05-24 04:06:28 +00:00
2008-05-31-AddBool.ll Adding i1 is always Xor. 2008-05-31 17:10:28 +00:00
2008-05-31-Bools.ll Add more i1 optimizations. add, sub, mul, s/udiv on i1 are now simplified away. 2008-05-31 17:59:52 +00:00
2008-06-05-ashr-crash.ll Add a test case for opt -instcombine bug fix in revision 52003. 2008-06-05 14:25:11 +00:00
2008-06-08-ICmpPHI.ll Remove unnecessary target lines. 2008-06-13 22:10:32 +00:00
2008-06-13-InfiniteLoopStore.ll Remove unnecessary target lines. 2008-06-13 22:12:16 +00:00
2008-06-13-ReadOnlyCallStore.ll Don't skip over instructions other than loads that might read memory 2008-06-13 22:02:12 +00:00
2008-06-19-UncondLoad.ll Fix PR2471, which is a bug involving an invalid promotion from a conditional load. 2008-06-20 05:12:56 +00:00
2008-06-21-CompareMiscomp.ll Fix for PR2479: correctly optimize expressions like (a > 13) & (a == 2008-06-21 23:36:13 +00:00
2008-06-24-StackRestore.ll Fix PR2488, a case where we deleted stack restores too aggressively. 2008-06-25 05:59:28 +00:00
2008-07-08-AndICmp.ll Reinstate this optimization, but without the miscompile. Thanks to Bill for 2008-08-06 04:54:03 +00:00
2008-07-08-ShiftOneAndOne.ll Fold ((1 << a) & 1) to (a == 0). 2008-07-09 05:20:13 +00:00
2008-07-08-SubAnd.ll Reduce x - y to -y when we know the 'x' part will get masked off anyways. 2008-07-09 04:32:37 +00:00
2008-07-08-VolatileLoadMerge.ll new testcase for PR2496 2008-07-08 17:18:05 +00:00
2008-07-09-SubAndError.ll Fix overzealous optimization. Thanks to Duncan Sands for pointing out my error! 2008-07-10 05:51:40 +00:00
2008-07-10-CastSextBool.ll Fix folding of icmp's of i1 where the comparison is signed. The code 2008-07-11 04:20:58 +00:00
2008-07-10-ICmpBinOp.ll Add another optimization from PR2330. Also catch some missing cases that are 2008-07-11 07:20:53 +00:00
2008-07-11-RemAnd.ll Enhance analysis of srem. 2008-07-12 05:04:38 +00:00
2008-07-13-DivZero.ll Fix PR2506 by being a bit more careful about reverse fact propagation when 2008-07-14 00:15:52 +00:00
2008-07-16-fsub.ll Fix PR2553 2008-07-17 06:07:20 +00:00
2008-07-16-sse2_storel_dq.ll Fix PR2296. Do not transform x86_sse2_storel_dq into a full-width store. 2008-07-16 07:28:14 +00:00
2008-08-05-And.ll Just grep for through the LL code instead of the ASM code 2008-08-06 00:10:32 +00:00
add2.ll be more aggressive about transforming add -> or when the operands have no 2008-05-19 20:01:56 +00:00
add-shrink.ll Teach instcombine 4 new xforms: 2008-05-20 05:46:13 +00:00
add-sitofp.ll Generalize the new code in instcombine's ComputeNumSignBits for handling 2008-05-23 02:28:01 +00:00
add.ll
addnegneg.ll
align-2d-gep.ll
align-addr.ll
align-inc.ll
alloca.ll
and2.ll
and-compare.ll
and-or-and.ll
and-or-not.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 When simplifying a call to a bitcast function, tighten up 2008-06-01 07:38:42 +00:00
apint-cast-and-cast.ll
apint-cast-cast-to-and.ll
apint-cast.ll
apint-div1.ll
apint-div2.ll
apint-elim-logicalops.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
binop-cast.ll
bit-tracking.ll
bitcast-gep.ll
bitcast-vector-fold.ll
bitcount.ll
bittest.ll
bswap-fold.ll implement some simple bswap optimizations, rdar://5992453 2008-06-18 04:33:20 +00:00
bswap.ll
call2.ll
call-cast-target.ll
call-intrinsics.ll
call.ll Ignore stderr for some more tests that expect warnings there. 2008-06-10 16:13:38 +00:00
canonicalize_branch.ll
cast2.ll
cast_ptr.ll
cast-and-cast.ll
cast-cast-to-and.ll
cast-load-gep.ll
cast-malloc.ll
cast-mul-select.ll Fix missed optimization opportunity when analyzing cast of mul and select. 2008-07-05 21:19:34 +00:00
cast-propagate.ll
cast-set.ll
cast.ll
CPP_min_max.ll
deadcode.ll
dg.exp sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
div.ll implement PR2328. 2008-05-16 02:59:42 +00:00
extractvalue.ll Add a few cases to instcombine's extractvalue testcase. 2008-07-16 12:57:25 +00:00
fold-vector-zero.ll
fp-ret-bitcast.ll Situations can arise when you have a function called that returns a 'void', but 2008-05-14 22:45:20 +00:00
fpcast.ll
fpextend.ll
GEPIdxCanon.ll
getelementptr_cast.ll
getelementptr_const.ll
getelementptr_index.ll
getelementptr-setcc.ll
getelementptr-seteq.ll
getelementptr.ll
hoist_instr.ll
icmp.ll
IntPtrCast.ll
JavaCompare.ll make this condition more precise. 2008-07-11 03:54:57 +00:00
known_align.ll
load2.ll
load.ll
loadstore-alignment.ll
malloc2.ll
malloc3.ll
malloc-free-delete.ll
malloc.ll
memcpy-to-load.ll
memmove.ll Implement PR2370: memmove(x,x,size) -> noop. 2008-05-28 05:30:41 +00:00
memset.ll
mul-masked-bits.ll Fix a bug in the ComputeMaskedBits logic for multiply. 2008-05-07 00:35:55 +00:00
mul.ll Implement support for simplifying vector comparisons by 0.0 and 1.0 like we 2008-08-11 22:06:05 +00:00
narrow.ll
not-fcmp.ll
not.ll Implement PR2298. This transforms: 2008-05-09 05:19:28 +00:00
or2.ll
or.ll
phi-merge.ll
phi.ll
README.txt
rem.ll
select.ll
set.ll
setcc-cast-cast.ll
setcc-strength-reduce.ll
sext-misc.ll optimize a common idiom generated by clang for bitfield access, PR2638. 2008-08-06 07:35:52 +00:00
shift-simplify.ll
shift-sra.ll
shift-trunc-shift.ll
shift.ll
shl-icmp.ll
shl-trunc.ll
shufflemask-undef.ll Fix a shufflevector instcombine that was emitting invalid masks indices 2008-08-06 18:17:32 +00:00
signext.ll
sink_instruction.ll
sitofp.ll Zap sitofp/fptoui pairs. In all cases when the sign difference 2008-08-06 05:13:06 +00:00
srem1.ll Fix a bogus srem rule - a negative value srem'd by a power-of-2 2008-08-13 23:12:35 +00:00
srem-simplify-bug.ll Correct the value of LowBits in srem and urem handling in 2008-05-06 00:51:48 +00:00
srem.ll
stacksaverestore.ll
store-merge.ll
store.ll
sub.ll Implement PR2298. This transforms: 2008-05-09 05:19:28 +00:00
udiv_select_to_select_shift.ll Fix PR2506 by being a bit more careful about reverse fact propagation when 2008-07-14 00:15:52 +00:00
udiv-simplify-bug-0.ll
udiv-simplify-bug-1.ll
urem-simplify-bug.ll
urem.ll
vec_demanded_elts.ll
vec_extract_elt.ll
vec_insert_to_shuffle.ll
vec_insertelt.ll
vec_narrow.ll
vec_shuffle.ll
vector-srem.ll
volatile_store.ll
xor2.ll
xor-undef.ll
xor.ll
zero-point-zero-add.ll
zeroext-and-reduce.ll
zext-fold.ll Peer through sext/zext when looking for not(cmp). 2008-05-31 19:01:33 +00:00
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.