llvm/test/Transforms/InstCombine
Owen Anderson 7a0201c6a6 Remove an InstCombine that transformed patterns like (x * uitofp i1 y) to (select y, x, 0.0) when the multiply has fast math flags set.
While this might seem like an obvious canonicalization, there is one subtle problem with it.  The result of the original expression
is undef when x is NaN (remember, fast math flags), but the result of the select is always defined when x is NaN.  This means that the
new expression is strictly more defined than the original one.  One unfortunate consequence of this is that the transform is not reversible!
It's always legal to make increase the defined-ness of an expression, but it's not legal to reduce it.  Thus, targets that prefer the original
form of the expression cannot reverse the transform to recover it.  Another way to think of it is that the transform has lost source-level
information (the fast math flags), which is undesirable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215825 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-17 03:51:29 +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
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 Use "weak alias" instead of "alias weak" 2014-07-30 22:51:54 +00:00
2007-09-17-AliasConstFold2.ll Use "weak alias" instead of "alias weak" 2014-07-30 22:51:54 +00:00
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-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 Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
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-11-NotInitialized.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 IR: Fold away compares between GV GEPs and GVs 2014-07-04 22:05:26 +00:00
2010-05-30-memcpy-Struct.ll
2010-11-01-lshr-mask.ll
2010-11-21-SizeZeroTypeGEP.ll
2010-11-23-Distributed.ll
2011-02-14-InfLoop.ll
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 AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
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
2012-07-30-addrsp-bitcast.ll Allow aliases to be unnamed_addr. 2014-06-06 01:20:28 +00:00
2012-08-28-udiv_ashl.ll
2012-09-17-ZeroSizedAlloca.ll
2012-09-24-MemcpyFromGlobalCrash.ll
2012-10-25-vector-of-pointers.ll
2012-12-14-simp-vgep.ll
2013-03-05-Combine-BitcastTy-Into-Alloca.ll
abs_abs.ll This removes TODO added in http://reviews.llvm.org/D3658 2014-06-12 14:06:00 +00:00
abs-1.ll
add2.ll InstCombine: Combine (add (and %a, %b) (or %a, %b)) to (add %a, %b) 2014-08-11 22:32:02 +00:00
add3.ll
add-shrink.ll Convert test to FileCheck. 2014-06-02 21:23:54 +00:00
add-sitofp.ll [InstCombine] mark ADD with nuw if no unsigned overflow 2014-06-17 00:42:07 +00:00
add.ll
addnegneg.ll
AddOverFlow.ll [ValueTracking] Extend range metadata to call/invoke 2014-06-19 16:50:16 +00:00
addrspacecast.ll InstCombine: Canonicalize addrspacecast between different element types 2014-06-06 21:52:55 +00:00
adjust-for-sminmax.ll
align-2d-gep.ll Make instsimplify's analysis of icmp eq/ne use computeKnownBits to determine whether the icmp is always true or false. Patch by Suyog Sarda! 2014-06-19 03:35:49 +00:00
align-addr.ll
align-attr.ll Make use of the align parameter attribute for all pointer arguments 2014-07-22 16:58:55 +00:00
align-external.ll
alloca.ll InstCombine: don't drop 'inalloca' in PromoteCastOfAllocation (PR19569) 2014-04-28 17:40:03 +00:00
and2.ll
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-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
apint-xor2.ll
apint-zext1.ll
apint-zext2.ll
assume.ll Canonicalization for @llvm.assume 2014-07-25 21:45:17 +00:00
atomic.ll
badmalloc.ll
binop-cast.ll
bit-checks.ll
bit-tracking.ll
bitcast-alias-function.ll Allow alias to point to an arbitrary ConstantExpr. 2014-06-03 02:41:57 +00:00
bitcast-bigendian.ll
bitcast-sext-vector.ll
bitcast-store.ll [InstCombine] Don't fold bitcast into store if it would need addrspacecast 2014-03-25 17:21:41 +00:00
bitcast-vec-canon.ll
bitcast-vec-uniform.ll
bitcast-vector-fold.ll
bitcast.ll InstCombine: Don't allow turning vector-of-pointer loads into vector-of-integer. 2013-09-19 20:59:04 +00:00
bitcount.ll
bittest.ll
blend_x86.ll Post-commit fixes for r209643 2014-05-27 16:54:33 +00:00
bswap-fold.ll
bswap.ll
call2.ll
call-cast-target-inalloca.ll IR: Conservatively verify inalloca arguments 2014-04-30 17:22:00 +00:00
call-cast-target.ll Don't refuse to transform constexpr(call(arg, ...)) to call(constexpr(arg), ...)) just because the function has multiple return values even if their return types are the same. Patch by Eduard Burtescu! 2014-01-18 22:47:12 +00:00
call-intrinsics.ll
call.ll Cleanup handling of constant function casts. 2013-09-17 21:10:14 +00:00
canonicalize_branch.ll
cast_ptr.ll Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
cast-call-combine.ll Make sure that value handle users see the transformation of an indirect call to a direct call. This is important for the CallGraph iteration. Patch by Björn Steinbrink! 2014-02-20 23:00:15 +00:00
cast-mul-select.ll
cast-set.ll Add CHECK-LABELs 2014-01-22 22:32:58 +00:00
cast.ll Allwo bitcast + struct GEP transform to work with addrspacecast 2014-08-12 19:46:13 +00:00
ceil.ll Allow constant folding of ceil function whenever feasible 2014-03-24 04:36:06 +00:00
compare-signs.ll InstCombine: fold (A >> C) == (B >> C) --> (A^B) < (1 << C) for constant Cs. 2013-11-16 16:00:48 +00:00
constant-expr-datalayout.ll
constant-fold-address-space-pointer.ll Canonicalize addrspacecast ConstExpr between different pointer types 2014-06-15 21:40:57 +00:00
constant-fold-compare.ll
constant-fold-gep.ll Fix another constant folding address space place I missed. 2013-11-04 20:46:52 +00:00
constant-fold-math.ll ConstantFolding: Also fold the vector overloads of our math intrinsics. 2014-03-05 19:41:48 +00:00
copysign.ll Allow constant folding of copysign 2014-03-06 05:32:52 +00:00
cos-1.ll
cos-2.ll
CPP_min_max.ll
crash.ll
dce-iterate.ll
deadcode.ll
debug-line.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
debuginfo.ll Debug Info: update testing cases to specify the debug info version number. 2013-11-22 21:49:45 +00:00
descale-zero.ll InstCombine: Fix a crash in Descale for multiply-by-zero 2014-07-10 17:13:27 +00:00
devirt.ll
disable-simplify-libcalls.ll
distribute.ll This patch removed duplicate code for matching patterns 2014-06-26 08:57:33 +00:00
div-shift-crash.ll
div-shift.ll
div.ll InstCombine: Combine mul with div. 2014-08-16 08:55:06 +00:00
double-float-shrink-1.ll Disable transforms that introduce calls to exp10*() on Linux due to 2013-12-28 02:40:19 +00:00
double-float-shrink-2.ll
enforce-known-alignment.ll
err-rep-cold.ll Add the cold attribute to error-reporting call sites 2013-11-17 02:06:35 +00:00
exact.ll
exp2-1.ll SimplifyLibCalls: Push TLI through the exp2->ldexp transform. 2014-02-04 20:27:23 +00:00
exp2-2.ll
ExtractCast.ll
extractvalue.ll
fast-math.ll InstCombine: Refactor fmul/fdiv combines to handle vectors. 2014-01-19 13:36:27 +00:00
fcmp-select.ll
fcmp-special.ll
fcmp.ll
fdiv.ll Fix all the remaining lost-fast-math-flags bugs I've been able to find. The most important of these are cases in the generic logic for combining BinaryOperators. 2014-01-20 07:44:53 +00:00
ffs-1.ll [InstCombine] mark ADD with nuw if no unsigned overflow 2014-06-17 00:42:07 +00:00
float-shrink-compare.ll Enable double to float shrinking optimizations for binary functions like 'fmin/fmax'. Fix radar:15283121 2013-12-16 22:42:40 +00:00
fmul.ll Fix all the remaining lost-fast-math-flags bugs I've been able to find. The most important of these are cases in the generic logic for combining BinaryOperators. 2014-01-20 07:44:53 +00:00
fneg-ext.ll
fold-bin-operand.ll
fold-calls.ll
fold-fops-into-selects.ll
fold-phi.ll
fold-sqrt-sqrtf.ll
fold-vector-select.ll
fold-vector-zero.ll
fp-ret-bitcast.ll
fpcast.ll Fix more instances of dropped fast math flags when optimizing FADD instructions. All found by inspection (aka grep). 2014-01-18 00:48:14 +00:00
fpextend_x86.ll Rein in overzealous InstCombine of fptrunc(OP(fpextend, fpextend)). 2013-11-28 21:38:05 +00:00
fpextend.ll Rein in overzealous InstCombine of fptrunc(OP(fpextend, fpextend)). 2013-11-28 21:38:05 +00:00
fprintf-1.ll Fix broken FileCheck prefix 2014-02-26 19:51:08 +00:00
fputs-1.ll
fsub.ll
fwrite-1.ll
gep-addrspace.ll Fix PR19270 - type mismatch caused by invalid optimization. 2014-04-03 17:51:58 +00:00
gepgep.ll
gepphigep.ll Add support for combining GEPs across PHI nodes 2014-05-29 20:29:47 +00:00
getelementptr.ll Allwo bitcast + struct GEP transform to work with addrspacecast 2014-08-12 19:46:13 +00:00
hoist_instr.ll
icmp-logical.ll InstCombine: allow unmasked icmps to be combined with logical ops 2013-09-04 11:57:17 +00:00
icmp-shr.ll This patch implements optimization as mentioned in PR19753: Optimize comparisons with "ashr/lshr exact" of a constanst. 2014-07-22 19:19:36 +00:00
icmp.ll Look through addrspacecasts when turning ptr comparisons into 2014-06-09 19:20:29 +00:00
idioms.ll
insert-extract-shuffle.ll InstCombine: form shuffles from wider range of insert/extractelements 2014-03-07 10:24:44 +00:00
IntPtrCast.ll
intrinsics.ll InstCombine: Strength reduce sadd.with.overflow into a regular nsw add if we can prove that it cannot overflow. 2014-07-04 10:22:21 +00:00
invariant.ll
invoke.ll
isascii-1.ll
isdigit-1.ll
JavaCompare.ll
known_align.ll
LandingPadClauses.ll
load3.ll
load-addrspace-cast.ll Fix a bug in InstCombine where we would incorrectly attempt to construct a 2014-03-13 22:51:43 +00:00
load-cmp.ll Use right address space size in InstCombineCompares 2013-09-30 21:11:01 +00:00
load-select.ll
load.ll Convert test to FileCheck. 2014-07-15 00:07:27 +00:00
loadstore-alignment.ll Teach computeKnownBits to look through addrspacecast. 2014-07-15 01:55:03 +00:00
logical-select.ll
lshr-phi.ll
malloc-free-delete.ll
memcmp-1.ll
memcmp-2.ll
memcpy_chk-1.ll
memcpy_chk-2.ll
memcpy-1.ll
memcpy-2.ll
memcpy-from-global.ll InstCombine: Canonicalize addrspacecast between different element types 2014-06-06 21:52:55 +00:00
memcpy-to-load.ll
memcpy.ll
memmove_chk-1.ll
memmove_chk-2.ll
memmove-1.ll
memmove-2.ll
memmove.ll
memset2.ll
memset_chk-1.ll
memset_chk-2.ll
memset-1.ll
memset-2.ll
memset.ll
merge-icmp.ll
mul-masked-bits.ll
mul.ll InstCombine: Teach most integer add/sub/mul/div combines how to deal with vectors. 2014-01-19 15:24:22 +00:00
multi-size-address-space-pointer.ll
multi-use-or.ll
narrow.ll
neon-intrinsics.ll
no-negzero.ll
not-fcmp.ll
not.ll
nothrow.ll
nsw.ll
obfuscated_splat.ll
objsize-64.ll
objsize-address-space.ll Use "weak alias" instead of "alias weak" 2014-07-30 22:51:54 +00:00
objsize.ll Use "weak alias" instead of "alias weak" 2014-07-30 22:51:54 +00:00
odr-linkage.ll
onehot_merge.ll InstCombine: Replace a hand-rolled version of isKnownToBeAPowerOfTwo with the real thing. 2014-01-19 16:48:41 +00:00
or-fcmp.ll
or-to-xor.ll
or-xor.ll InstCombine: ((A | ~B) ^ (~A | B)) to A ^ B 2014-08-14 06:46:25 +00:00
or.ll Added InstCombine Transform for ((B | C) & A) | B -> B | (A & C) 2014-08-14 06:41:38 +00:00
osx-names.ll
overflow-mul.ll InstCombine: Disable umul.with.overflow recognition for vectors. 2014-06-24 10:47:52 +00:00
overflow.ll
OverlappingInsertvalues.ll [InstCombine] Some cleanup in optimization of redundant insertvalue instructions. 2014-05-08 19:50:24 +00:00
phi-merge-gep.ll
phi-select-constexpr.ll Don't use isNullValue to evaluate ConstantExpr 2013-12-06 21:48:36 +00:00
phi.ll
pow-1.ll Change math intrinsic attributes from readonly to readnone. These 2014-03-06 00:18:15 +00:00
pow-2.ll
pow-3.ll
pr2645-0.ll
pr2645-1.ll
pr2996.ll
pr8547.ll
pr12251.ll
pr12338.ll
pr17827.ll Conservative fix for PR17827 - don't optimize a shift + and + compare sequence where the shift is logical unless the comparison is unsigned 2013-12-02 18:43:59 +00:00
pr19420.ll Revert "Revert r206045, "Fix shift by constants for vector."" 2014-04-14 21:50:37 +00:00
pr20059.ll removed duplicate testcase 2014-07-09 17:49:58 +00:00
pr20079.ll IR: Fold away compares between GV GEPs and GVs 2014-07-04 22:05:26 +00:00
PR7357.ll
preserve-sminmax.ll
printf-1.ll Fix broken FileCheck prefixes 2014-02-26 22:29:11 +00:00
printf-2.ll
ptr-int-cast.ll
puts-1.ll
r600-intrinsics.ll R600/SI: Add intrinsics for various math instructions. 2014-06-19 01:19:19 +00:00
README.txt
rem.ll Add back commit r210029. 2014-06-02 22:01:04 +00:00
round.ll Allow constant folding of round function whenever feasible 2014-03-07 04:36:21 +00:00
sdiv-1.ll
sdiv-2.ll
select-2.ll Fix all the remaining lost-fast-math-flags bugs I've been able to find. The most important of these are cases in the generic logic for combining BinaryOperators. 2014-01-20 07:44:53 +00:00
select-crash.ll
select-extractelement.ll Scalarize select vector arguments when extracted. 2013-11-04 20:36:06 +00:00
select-load-call.ll
select-select.ll Remove a very old instcombine where we would turn sequences of selects into 2014-02-12 23:54:07 +00:00
select.ll [InstCombine] mark ADD with nuw if no unsigned overflow 2014-06-17 00:42:07 +00:00
set.ll
setcc-strength-reduce.ll
sext.ll Add back commit r210029. 2014-06-02 22:01:04 +00:00
shift-sra.ll
shift.ll Revert "Revert r206045, "Fix shift by constants for vector."" 2014-04-14 21:50:37 +00:00
shufflemask-undef.ll
shufflevec-constant.ll
sign-test-and-or.ll InstCombine: Teach icmp merging about the equivalence of bit tests and UGE/ULT with a power of 2. 2014-02-11 21:09:03 +00:00
signed-comparison.ll
signext.ll
simplify-demanded-bits-pointer.ll
simplify-libcalls.ll
sincospi.ll ARM64: initial backend import 2014-03-29 10:18:08 +00:00
sink_instruction.ll
sitofp.ll
sprintf-1.ll Fix broken FileCheck prefixes 2014-02-26 22:29:11 +00:00
sqrt.ll
srem1.ll
srem-simplify-bug.ll
srem.ll
stack-overalign.ll
stacksaverestore.ll
store.ll TBAA: handle scalar TBAA format and struct-path aware TBAA format. 2013-09-27 18:34:27 +00:00
stpcpy_chk-1.ll Change objectsize intrinsic to accept different address spaces. 2013-10-07 18:06:48 +00:00
stpcpy_chk-2.ll
stpcpy-1.ll
stpcpy-2.ll
strcat-1.ll
strcat-2.ll
strcat-3.ll
strchr-1.ll Add strchr(p, 0) -> p + strlen(p) to SimplifyLibCalls 2014-02-04 05:55:16 +00:00
strchr-2.ll
strcmp-1.ll
strcmp-2.ll
strcpy_chk-1.ll Change objectsize intrinsic to accept different address spaces. 2013-10-07 18:06:48 +00:00
strcpy_chk-2.ll
strcpy_chk-64.ll
strcpy-1.ll
strcpy-2.ll
strcspn-1.ll
strcspn-2.ll
strlen-1.ll Fold strlen(expr ? "str1" : "str2") to x ? len1 : len2. This fires about 330 times in a bootstrap of clang. 2014-05-02 04:11:45 +00:00
strlen-2.ll
strncat-1.ll
strncat-2.ll
strncat-3.ll
strncmp-1.ll
strncmp-2.ll
strncpy_chk-1.ll
strncpy_chk-2.ll
strncpy-1.ll
strncpy-2.ll
strpbrk-1.ll
strpbrk-2.ll
strrchr-1.ll
strrchr-2.ll
strspn-1.ll
strstr-1.ll
strstr-2.ll
strto-1.ll
struct-assign-tbaa.ll TBAA: handle scalar TBAA format and struct-path aware TBAA format. 2013-09-27 18:34:27 +00:00
sub-xor.ll
sub.ll InstCombine: Correctly propagate NSW/NUW for x-(-A) -> x+A 2014-07-31 04:49:29 +00:00
toascii-1.ll
trunc.ll
udiv_select_to_select_shift.ll
udiv-simplify-bug-0.ll
udiv-simplify-bug-1.ll
udivrem-change-width.ll
urem-simplify-bug.ll
urem.ll
vec_demanded_elts.ll Also handle ConstantAggregateZero when optimizing vpermilvar*. 2014-04-29 22:20:40 +00:00
vec_extract_2elts.ll
vec_extract_elt.ll
vec_extract_var_elt.ll InstCombine: Don't try to use aggregate elements of ConstantExprs. 2014-01-24 19:02:37 +00:00
vec_insertelt.ll
vec_narrow.ll
vec_phi_extract.ll InstCombine: Teach most integer add/sub/mul/div combines how to deal with vectors. 2014-01-19 15:24:22 +00:00
vec_sext.ll InstCombine: Modernize a bunch of cast combines. 2014-01-19 20:05:13 +00:00
vec_shuffle.ll InstCombine: Don't try to reorder shuffles where the mask is a ConstantExpr. 2014-06-24 10:38:10 +00:00
vector_gep1.ll
vector_gep2.ll
vector-casts.ll
vector-mul.ll
vector-srem.ll
vector-type.ll
volatile_store.ll
weak-symbols.ll
win-math.ll
x86-crc32-demanded.ll
xor2.ll This patch implements transform for pattern "(A & ~B) ^ (~A) -> ~(A & B)". 2014-08-01 05:07:20 +00:00
xor-undef.ll
xor.ll
zero-point-zero-add.ll
zeroext-and-reduce.ll
zext-bool-add-sub.ll Add back commit r210029. 2014-06-02 22:01:04 +00:00
zext-fold.ll
zext-or-icmp.ll
zext.ll InstCombine: Modernize a bunch of cast combines. 2014-01-19 20:05:13 +00:00

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.