llvm-6502/test/Transforms/InstCombine
Meador Inge 30d8f0e977 Normalize memcmp constant folding results.
The library call simplifier folds memcmp calls with all constant arguments
to a constant.  For example:

  memcmp("foo", "foo", 3) ->  0
  memcmp("hel", "foo", 3) ->  1
  memcmp("foo", "hel", 3) -> -1

The folding is implemented in terms of the system memcmp that LLVM gets
linked with.  It currently just blindly uses the value returned from
the system memcmp as the folded constant.

This patch normalizes the values returned from the system memcmp to
(-1, 0, 1) so that we get consistent results across multiple platforms.
The test cases were adjusted accordingly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167726 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-12 14:00:45 +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
2003-09-09-VolatileLoadElim.ll
2003-10-29-CallSiteResolve.ll
2003-11-03-VarargsCallBug.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-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 Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2007-04-08-SingleEltVectorCrash.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-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 Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
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-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
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
2010-11-21-SizeZeroTypeGEP.ll
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
2011-02-14-InfLoop.ll Fix 9216 - Endless loop in InstCombine pass. 2011-02-15 07:13:48 +00:00
2011-03-08-SRemMinusOneBadOpt.ll
2011-05-02-VectorBoolean.ll
2011-05-13-InBoundsGEP.ll
2011-05-28-swapmulsub.ll
2011-06-13-nsw-alloca.ll
2011-09-03-Trampoline.ll
2011-10-07-AlignPromotion.ll
2012-3-15-or-xor-constant.ll
2012-6-7-vselect-bitcast.ll
2012-01-11-OpaqueBitcastCrash.ll
2012-02-13-FCmp.ll
2012-02-28-ICmp.ll
2012-03-10-InstCombine.ll
2012-04-23-Neon-Intrinsics.ll
2012-04-24-vselect.ll
2012-04-30-SRem.ll
2012-05-27-Negative-Shift-Crash.ll
2012-05-28-select-hang.ll
2012-06-06-LoadOfPHIs.ll
2012-07-25-LoadPart.ll llvm/ConstantFolding.cpp: Make ReadDataFromGlobal() and FoldReinterpretLoadFromConstPtr() Big-endian-aware. 2012-11-08 20:34:25 +00:00
2012-07-30-addrsp-bitcast.ll
2012-08-28-udiv_ashl.ll It is illegal to transform (sdiv (ashr X c1) c2) -> (sdiv x (2^c1 * c2)), 2012-08-30 11:23:20 +00:00
2012-09-17-ZeroSizedAlloca.ll Fix instcombine to obey requested alignment when merging allocas. 2012-09-18 09:31:44 +00:00
2012-09-24-MemcpyFromGlobalCrash.ll Add missing : in CHECK line. 2012-09-24 17:22:43 +00:00
2012-10-25-vector-of-pointers.ll Fix a crash in SimpliftDemandedBits of vectors of pointers. 2012-10-26 17:17:05 +00:00
add2.ll
add3.ll
add-shrink.ll
add-sitofp.ll
add.ll Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767 2012-09-27 10:14:43 +00:00
addnegneg.ll
adjust-for-sminmax.ll
align-2d-gep.ll
align-addr.ll The alignment of an sret parameter is known: it must be at least the 2012-10-04 13:36:31 +00:00
align-external.ll
alloca.ll
and2.ll
and-compare.ll
and-fcmp.ll Fix broken tests. 2012-10-02 15:49:34 +00:00
and-not-or.ll
and-or-and.ll
and-or-not.ll
and-or.ll
and-xor-merge.ll
and-xor-or.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 Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767 2012-09-27 10:14:43 +00:00
apint-xor2.ll Revert 'Fix a typo 'iff' => 'if''. iff is an abreviation of if and only if. See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767 2012-09-27 10:14:43 +00:00
apint-zext1.ll
apint-zext2.ll
ashr-nop.ll
atomic.ll
badmalloc.ll
binop-cast.ll
bit-checks.ll
bit-tracking.ll
bitcast-sext-vector.ll
bitcast-store.ll
bitcast-vec-canon.ll
bitcast-vec-uniform.ll
bitcast-vector-fold.ll
bitcast.ll
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 Add a testcase that would have noticed the typo fixed in commit 166475. 2012-10-24 07:17:20 +00:00
compare-signs.ll
constant-fold-compare.ll
constant-fold-gep.ll
CPP_min_max.ll
crash.ll
dce-iterate.ll
deadcode.ll
debuginfo.ll
devirt.ll
disable-simplify-libcalls.ll instcombine: Migrate strcspn optimizations 2012-11-10 15:16:48 +00:00
div-shift.ll InstCombine: Make sure we use the pre-zext type when creating a constant of a value that is zext'd. 2012-09-21 16:26:41 +00:00
div.ll
enforce-known-alignment.ll
exact.ll
ExtractCast.ll
extractvalue.ll
fcmp-select.ll
fcmp-special.ll
fcmp.ll Enable some additional constant folding for PPCDoubleDouble. 2012-10-30 12:33:18 +00:00
fdiv.ll
fold-bin-operand.ll
fold-calls.ll
fold-sqrt-sqrtf.ll
fold-vector-select.ll [llvm] Updated the test fold-vector-select so that we test the vector selects exhaustively. 2012-08-30 23:11:49 +00:00
fold-vector-zero.ll
fp-ret-bitcast.ll
fpcast.ll
fpextend.ll
fsub.ll
gep-addrspace.ll
gepgep.ll
getelementptr.ll
hoist_instr.ll
icmp.ll
idioms.ll
IntPtrCast.ll
intrinsics.ll
invariant.ll
invoke.ll
JavaCompare.ll
known_align.ll
LandingPadClauses.ll
lit.local.cfg
load3.ll
load-cmp.ll
load-select.ll
load.ll
loadstore-alignment.ll
logical-select.ll
lshr-phi.ll
malloc-free-delete.ll
memcmp-1.ll Normalize memcmp constant folding results. 2012-11-12 14:00:45 +00:00
memcmp-2.ll instcombine: Migrate memcmp optimizations 2012-11-11 05:11:20 +00:00
memcpy_chk-1.ll instcombine: Add more test cases for __memcpy_chk simplification 2012-09-27 21:21:21 +00:00
memcpy_chk-2.ll instcombine: Add more test cases for __memcpy_chk simplification 2012-09-27 21:21:21 +00:00
memcpy-1.ll instcombine: Migrate memcpy optimizations 2012-11-11 05:54:34 +00:00
memcpy-2.ll instcombine: Migrate memcpy optimizations 2012-11-11 05:54:34 +00:00
memcpy-from-global.ll
memcpy-to-load.ll
memcpy.ll
memmove_chk-1.ll instcombine: Add more test cases for __memmove_chk simplification 2012-09-27 21:21:25 +00:00
memmove_chk-2.ll instcombine: Add more test cases for __memmove_chk simplification 2012-09-27 21:21:25 +00:00
memmove-1.ll instcombine: Migrate memmove optimizations 2012-11-11 06:22:40 +00:00
memmove-2.ll instcombine: Migrate memmove optimizations 2012-11-11 06:22:40 +00:00
memmove.ll
memset2.ll
memset_chk-1.ll instcombine: Add more test cases for __memset_chk simplification 2012-09-27 21:21:18 +00:00
memset_chk-2.ll instcombine: Add more test cases for __memset_chk simplification 2012-09-27 21:21:18 +00:00
memset-1.ll instcombine: Migrate memset optimizations 2012-11-11 06:49:03 +00:00
memset-2.ll instcombine: Migrate memset optimizations 2012-11-11 06:49:03 +00:00
memset.ll
merge-icmp.ll
mul-masked-bits.ll
mul.ll
multi-use-or.ll
narrow.ll
neon-intrinsics.ll
no-negzero.ll
not-fcmp.ll
not.ll manually upgrade a bunch of tests to modern syntax, and remove some that 2011-06-17 03:14:27 +00:00
nothrow.ll
nsw.ll
obfuscated_splat.ll [InstCombine] Teach InstCombine how to handle an obfuscated splat. 2012-10-16 21:29:38 +00:00
objsize-64.ll
objsize.ll
odr-linkage.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
or-fcmp.ll
or-to-xor.ll
or-xor.ll
or.ll
overflow.ll
phi-merge-gep.ll
phi.ll
pr2645-0.ll
pr2645-1.ll
pr2996.ll
pr8547.ll
pr12251.ll
pr12338.ll
preserve-sminmax.ll
ptr-int-cast.ll
README.txt
rem.ll
sdiv-1.ll
sdiv-2.ll
select-2.ll
select-crash.ll
select-load-call.ll
select.ll InstCombine: Fix an edge case where constant icmps could sneak into ConstantFoldInstOperands and crash. 2012-10-20 08:43:52 +00:00
set.ll
setcc-strength-reduce.ll
sext.ll
shift-sra.ll
shift.ll
shufflemask-undef.ll
shufflevec-constant.ll
sign-test-and-or.ll
signed-comparison.ll
signext.ll
simplify-demanded-bits-pointer.ll
sink_instruction.ll
sitofp.ll
sqrt.ll
srem1.ll
srem-simplify-bug.ll
srem.ll
stack-overalign.ll
stacksaverestore.ll
store.ll
stpcpy_chk-1.ll instcombine: Migrate stpcpy optimizations 2012-10-31 00:20:56 +00:00
stpcpy_chk-2.ll instcombine: Split out the __stpcpy_chk simplifications from StrCpyChkOpt 2012-10-31 00:20:51 +00:00
stpcpy-1.ll instcombine: Migrate stpcpy optimizations 2012-10-31 00:20:56 +00:00
stpcpy-2.ll instcombine: Migrate stpcpy optimizations 2012-10-31 00:20:56 +00:00
strcat-1.ll instcombine: Migrate strcat and strncat optimizations 2012-10-13 16:45:32 +00:00
strcat-2.ll instcombine: Migrate strcat and strncat optimizations 2012-10-13 16:45:32 +00:00
strcat-3.ll instcombine: Migrate strcat and strncat optimizations 2012-10-13 16:45:32 +00:00
strchr-1.ll instcombine: Migrate strchr and strrchr optimizations 2012-10-13 16:45:37 +00:00
strchr-2.ll instcombine: Migrate strchr and strrchr optimizations 2012-10-13 16:45:37 +00:00
strcmp-1.ll instcombine: Migrate strcmp and strncmp optimizations 2012-10-15 03:47:37 +00:00
strcmp-2.ll instcombine: Migrate strcmp and strncmp optimizations 2012-10-15 03:47:37 +00:00
strcpy_chk-1.ll instcombine: Migrate strcpy optimizations 2012-10-18 18:12:40 +00:00
strcpy_chk-2.ll instcombine: Add more test cases for __strcpy_chk simplification 2012-09-27 21:21:28 +00:00
strcpy_chk-64.ll
strcpy-1.ll instcombine: Migrate strcpy optimizations 2012-10-18 18:12:40 +00:00
strcpy-2.ll instcombine: Migrate strcpy optimizations 2012-10-18 18:12:40 +00:00
strcspn-1.ll instcombine: Migrate strcspn optimizations 2012-11-10 15:16:48 +00:00
strcspn-2.ll instcombine: Migrate strcspn optimizations 2012-11-10 15:16:48 +00:00
strlen-1.ll instcombine: Migrate strlen optimizations 2012-10-31 03:33:06 +00:00
strlen-2.ll instcombine: Migrate strlen optimizations 2012-10-31 03:33:06 +00:00
strncat-1.ll instcombine: Migrate strcat and strncat optimizations 2012-10-13 16:45:32 +00:00
strncat-2.ll instcombine: Migrate strcat and strncat optimizations 2012-10-13 16:45:32 +00:00
strncat-3.ll instcombine: Migrate strcat and strncat optimizations 2012-10-13 16:45:32 +00:00
strncmp-1.ll instcombine: Migrate memcmp optimizations 2012-11-11 05:11:20 +00:00
strncmp-2.ll instcombine: Migrate strcmp and strncmp optimizations 2012-10-15 03:47:37 +00:00
strncpy_chk-1.ll instcombine: Migrate strncpy optimizations 2012-10-31 03:33:00 +00:00
strncpy_chk-2.ll instcombine: Add more test cases for __strncpy_chk simplification 2012-09-27 21:21:31 +00:00
strncpy-1.ll instcombine: Migrate strncpy optimizations 2012-10-31 03:33:00 +00:00
strncpy-2.ll instcombine: Migrate strncpy optimizations 2012-10-31 03:33:00 +00:00
strpbrk-1.ll instcombine: Migrate strpbrk optimizations 2012-10-31 04:29:58 +00:00
strpbrk-2.ll instcombine: Migrate strpbrk optimizations 2012-10-31 04:29:58 +00:00
strrchr-1.ll instcombine: Migrate strchr and strrchr optimizations 2012-10-13 16:45:37 +00:00
strrchr-2.ll instcombine: Migrate strchr and strrchr optimizations 2012-10-13 16:45:37 +00:00
strspn-1.ll instcombine: Migrate strspn optimizations 2012-11-08 01:33:50 +00:00
strstr-1.ll instcombine: Migrate strstr optimizations 2012-11-11 03:51:48 +00:00
strstr-2.ll instcombine: Migrate strstr optimizations 2012-11-11 03:51:48 +00:00
strto-1.ll instcombine: Migrate strto* optimizations 2012-10-31 14:58:26 +00:00
struct-assign-tbaa.ll Don't crash when !tbaa.struct contents is invalid. 2012-10-11 02:05:23 +00:00
sub-xor.ll
sub.ll
trunc.ll
udiv_select_to_select_shift.ll Convert a few more opt | llvm-dis to opt -S. 2009-09-08 22:41:33 +00:00
udiv-simplify-bug-0.ll
udiv-simplify-bug-1.ll
udivrem-change-width.ll
urem-simplify-bug.ll
urem.ll
vec_demanded_elts.ll Prefer shuffles to selects. Backends love shuffles! 2012-09-27 08:33:56 +00:00
vec_extract_elt.ll
vec_insertelt.ll
vec_narrow.ll
vec_sext.ll
vec_shuffle.ll Surprisingly, we missed a trivial case here. Fix that! 2012-09-28 09:33:53 +00:00
vector_gep1.ll
vector_gep2.ll Generalize the transform that boosts GEP indices to the size of a pointer to 2012-11-03 11:44:17 +00:00
vector-casts.ll
vector-srem.ll
volatile_store.ll
weak-symbols.ll instcombine: Migrate strcmp and strncmp optimizations 2012-10-15 03:47:37 +00:00
x86-crc32-demanded.ll
xor2.ll
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.