llvm/test/Transforms/InstCombine
Sanjay Patel fc164bf317 [InstCombine] remove constant by inverting compare + logic (PR27105)
https://llvm.org/bugs/show_bug.cgi?id=27105

We can check if all bits outside of a constant mask are set with a 
single constant.

As noted in the bug report, although this form should be considered the
canonical IR, backends may want to transform this into an 'andn' / 'andc' 
comparison against zero because that could be a single machine instruction.

Differential Revision: http://reviews.llvm.org/D18842


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@266362 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-14 20:17:40 +00:00
..
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 [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2003-09-09-VolatileLoadElim.ll
2003-10-29-CallSiteResolve.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2003-11-03-VarargsCallBug.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2004-01-13-InstCombineInvokePHI.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
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 [InstCombine] regenerate checks 2016-04-05 17:24:54 +00:00
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 [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2007-02-07-PointerCast.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
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 [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
2007-09-17-AliasConstFold2.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
2007-10-10-EliminateMemCpy.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
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 [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
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 [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
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-23-MulSub.ll
2008-02-28-OrFCmpCrash.ll
2008-03-13-IntToPtr.ll
2008-04-22-ByValBitcast.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2008-04-28-VolatileStore.ll
2008-04-29-VolatileLoadDontMerge.ll
2008-04-29-VolatileLoadMerge.ll
2008-05-08-LiveStoreDelete.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2008-05-08-StrLenSink.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2008-05-09-SinkOfInvoke.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
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 [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
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 [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2009-01-16-PointerAddrSpace.ll
2009-01-19-fmod-constant-float-specials.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
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 Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
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-05-30-memcpy-Struct.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
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 [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
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-28-select-hang.ll
2012-06-06-LoadOfPHIs.ll
2012-07-25-LoadPart.ll
2012-07-30-addrsp-bitcast.ll
2012-08-28-udiv_ashl.ll
2012-09-17-ZeroSizedAlloca.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
abs-1.ll
add2.ll [InstCombine] Generalize sub of selects optimization to all BinaryOperators 2015-07-14 22:39:23 +00:00
add3.ll
add-shrink.ll
add-sitofp.ll
add.ll
addnegneg.ll
AddOverFlow.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
addrspacecast.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
adjust-for-sminmax.ll
alias-recursion.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
align-2d-gep.ll
align-addr.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
align-attr.ll
align-external.ll Update enforceKnownAlignment after the isWeakForLinker semantic change 2015-07-14 00:11:08 +00:00
aligned-altivec.ll
aligned-qpx.ll [InstCombine/PowerPC] Fix single-precision QPX load/store replacement 2015-05-11 06:37:03 +00:00
all-bits-shift.ll InstCombine: Restrict computeKnownBits() on all Values to OptLevel > 2 2016-03-09 18:47:11 +00:00
alloca.ll [OperandBundles] Have InstCombine play nice with operand bundles 2015-12-23 09:58:41 +00:00
allocsize-32.ll Add the allocsize attribute to LLVM. 2016-04-12 01:05:35 +00:00
allocsize.ll Add the allocsize attribute to LLVM. 2016-04-12 01:05:35 +00:00
amdgcn-intrinsics.ll AMDGPU: Add frexp_exp intrinsic 2016-03-30 22:28:52 +00:00
and2.ll [InstCombine] transform masking off of an FP sign bit into a fabs() intrinsic call (PR24886) 2015-10-08 17:09:31 +00:00
and-compare.ll [InstCombine] Replace an and+icmp with a trunc+icmp 2015-08-16 07:09:17 +00:00
and-fcmp.ll
and-not-or.ll
and-or-and.ll
and-or-not.ll use FileCheck for tighter checking 2016-03-16 23:20:20 +00:00
and-or.ll [InstCombine] regenerate checks 2016-04-05 17:24:54 +00:00
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 [InstCombine] regenerate checks 2016-04-05 17:24:54 +00:00
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-or.ll Merge or combine tests and convert to FileCheck. 2015-09-08 18:36:56 +00:00
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
assume2.ll
assume-loop-align.ll
assume-redundant.ll Teach computeKnownBits to use new align attribute/metadata 2015-10-07 16:01:18 +00:00
assume.ll
atomic.ll
badmalloc.ll
binop-cast.ll
bit-checks.ll
bit-tracking.ll
bitcast-alias-function.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
bitcast-bigendian.ll [InstCombine] transform bitcasted bitwise logic ops with constants (PR26702) 2016-03-03 19:19:04 +00:00
bitcast-bitcast.ll [InstCombine] allow any pair of bitcasts to be combined 2015-12-12 00:33:36 +00:00
bitcast-sext-vector.ll
bitcast-store.ll
bitcast-vec-canon.ll [InstCombine] canonicalize (bitcast (extractelement X)) --> (extractelement(bitcast X)) 2015-12-12 16:44:48 +00:00
bitcast-vec-uniform.ll
bitcast-vector-fold.ll
bitcast.ll [InstCombine] transform bitcasted bitwise logic ops with constants (PR26702) 2016-03-03 19:19:04 +00:00
bitcount.ll
bitreverse-fold.ll Implement constant folding for bitreverse 2016-03-21 15:00:35 +00:00
bitreverse-hang.ll [InstCombine] Rewrite bswap/bitreverse handling completely. 2016-01-15 09:20:19 +00:00
bittest.ll
blend_x86.ll [InstCombine] Move SSE/AVX vector blend folding to instcombiner 2015-08-12 08:08:56 +00:00
branch.ll
bswap-fold.ll Fix a few more cases of 'CHECK[^:]*$'. NFCI 2015-08-10 19:56:39 +00:00
bswap-known-bits.ll Extend known bits to understand @llvm.bswap 2015-10-06 20:20:45 +00:00
bswap.ll [InstCombine] Recognize another bswap idiom. 2015-09-24 10:24:58 +00:00
builtin-object-size-offset.ll Calculate __builtin_object_size when pointer depends on a condition 2016-04-13 12:25:25 +00:00
builtin-object-size-ptr.ll Reland r262337 "calculate builtin_object_size if arg is a removable pointer" 2016-03-09 14:12:47 +00:00
call2.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
call_nonnull_arg.ll [InstCombineCalls] Use isKnownNonNullAt() to check nullness of passing arguments at callsite 2015-09-14 18:10:43 +00:00
call-cast-target-inalloca.ll
call-cast-target.ll
call-intrinsics.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
call.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
canonicalize_branch.ll
cast_ptr.ll
cast-call-combine.ll
cast-callee-deopt-bundles.ll [InstCombine] Don't drop operand bundles 2015-11-25 00:42:19 +00:00
cast-int-fcmp-eq-0.ll Broaden optimization of fcmp ([us]itofp x, constant) by instcombine. 2015-09-15 17:51:59 +00:00
cast-mul-select.ll
cast-set.ll Fix a bunch of trivial cases of 'CHECK[^:]*$' in the tests. NFCI 2015-08-10 19:01:27 +00:00
cast.ll Instcombine: destructor loads of structs that do not contains padding 2015-12-15 01:44:07 +00:00
ceil.ll
compare-alloca.ll InstCombine: Fold comparisons between unguessable allocas and other pointers 2015-10-07 00:20:07 +00:00
compare-signs.ll [InstCombine] Optimize icmp slt signum(x), 1 --> icmp slt x, 1 2015-09-16 20:41:29 +00:00
constant-expr-datalayout.ll
constant-fold-address-space-pointer.ll
constant-fold-alias.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
constant-fold-compare.ll
constant-fold-gep.ll
constant-fold-hang.ll
constant-fold-math.ll
convergent.ll [attrs] Handle convergent CallSites. 2016-03-14 20:18:54 +00:00
copysign.ll
cos-1.ll
cos-2.ll [LibCallSimplifier] don't get fooled by a fake sqrt() 2016-01-20 17:41:14 +00:00
cos-intrinsic.ll Propagate Undef in llvm.cos Intrinsic 2016-04-08 18:21:11 +00:00
CPP_min_max.ll
crash.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
ctpop.ll Tighten known bits for ctpop based on zero input bits 2015-10-14 22:42:12 +00:00
dce-iterate.ll
deadcode.ll
debug-line.ll testcase gardening: update the emissionKind enum to the new syntax. (NFC) 2016-04-01 00:16:49 +00:00
debuginfo.ll testcase gardening: update the emissionKind enum to the new syntax. (NFC) 2016-04-01 00:16:49 +00:00
default-alignment.ll
demand_shrink_nsw.ll InstCombineSimplifyDemanded: Remove nsw/nuw flags when optimizing demanded bits 2015-04-30 22:05:30 +00:00
demorgan-zext.ll [InstCombine] match De Morgan's Law hidden by zext ops (PR22723) 2015-09-25 23:21:38 +00:00
disable-simplify-libcalls.ll
distribute.ll
div-shift-crash.ll
div-shift.ll
div.ll Handle non-constant shifts in computeKnownBits, and use computeKnownBits for constant folding in InstCombine/Simplify 2015-10-23 20:37:08 +00:00
double-float-shrink-1.ll [LibCallSimplifier] don't get fooled by a fake fmin() 2016-01-21 20:19:54 +00:00
double-float-shrink-2.ll
enforce-known-alignment.ll
err-rep-cold.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
exact.ll
exp2-1.ll AMDGPU: mark ldexp LibCalls as unavailable 2015-12-15 17:24:15 +00:00
exp2-2.ll
ExtractCast.ll
extractvalue.ll Instcombine: destructor loads of structs that do not contains padding 2015-12-15 01:44:07 +00:00
fabs.ll [ValueTracking] teach computeKnownBits that a fabs() clears sign bits 2015-10-08 16:56:55 +00:00
fast-math-scalarization.ll Fix an issue where fast math flags were dropped during scalarization. 2016-03-01 19:35:52 +00:00
fast-math.ll [LibCallSimplifier] don't allow sqrt transform unless all ops are unsafe 2016-01-11 22:50:36 +00:00
fcmp-select.ll
fcmp-special.ll
fcmp.ll
fdiv.ll
ffs-1.ll TvOS: add missing support for some libcalls. 2015-11-02 18:00:00 +00:00
float-shrink-compare.ll
fmul.ll InstCombine: fabs(x) * fabs(x) -> x * x 2016-01-30 05:02:00 +00:00
fneg-ext.ll
fold-bin-operand.ll
fold-calls.ll
fold-fops-into-selects.ll
fold-phi-load-metadata.ll [InstCombine] Preserve metadata when merging loads that are phi 2015-09-23 18:40:57 +00:00
fold-phi.ll
fold-sqrt-sqrtf.ll
fold-vector-select.ll
fold-vector-zero.ll
fp-ret-bitcast.ll
fpcast.ll [IR] fptrunc-of-fptrunc isn't an EliminableCastPair. 2015-05-29 00:04:30 +00:00
fpextend_x86.ll
fpextend.ll
fprintf-1.ll [IR] Straighten out bundle overload of IRBuilder::CreateCall 2016-02-18 20:57:41 +00:00
fputs-1.ll
fsub.ll
fwrite-1.ll
gc.relocate.ll Don't propagate dereferenceable attribute through gc.relocate in InstCombine 2016-02-11 11:22:46 +00:00
gep-addrspace.ll
gep-sext.ll
gepgep.ll
gepphigep.ll [InstCombine] Teach instcombine not to create extra PHI nodes when folding GEPs 2015-10-26 10:25:05 +00:00
getelementptr.ll Limiting gep merging to fix the performance problem described in 2015-04-21 23:02:15 +00:00
hoist_instr.ll
icmp-logical.ll
icmp-range.ll [Bug 24848] Use range metadata to constant fold comparisons between two values 2015-09-26 03:26:47 +00:00
icmp-shr.ll [InstCombine] FoldICmpCstShrCst failed for ashr when comparing against -1 2015-09-19 00:48:31 +00:00
icmp.ll [InstCombine] remove constant by inverting compare + logic (PR27105) 2016-04-14 20:17:40 +00:00
idioms.ll
indexed-gep-compares.ll Re-commit r257064, after it was reverted in r257340. 2016-01-15 15:52:05 +00:00
inline-intrinsic-assert.ll [LibCallSimplifier] use instruction-level fast-math-flags to transform sqrt calls 2016-01-11 22:34:19 +00:00
insert-extract-shuffle.ll [InstCombine] avoid an insertelement transformation that induces the opposite extractelement fold (PR26354) 2016-01-29 20:21:02 +00:00
IntPtrCast.ll
intrinsics.ll Constfold trunc,rint,nearbyint,ceil and floor using APFloat 2015-07-21 08:52:23 +00:00
invariant.ll
invoke.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
isascii-1.ll
isdigit-1.ll
JavaCompare.ll
known_align.ll
LandingPadClauses.ll [EH] Keep filter clauses for types that have been caught. 2015-11-17 20:13:04 +00:00
lifetime.ll testcase gardening: update the emissionKind enum to the new syntax. (NFC) 2016-04-01 00:16:49 +00:00
load3.ll
load_combine_aa.ll [InstCombine] Employ AliasAnalysis in FindAvailableLoadedValue 2015-07-10 06:55:49 +00:00
load-bitcast32.ll Re-apply r238452, the bug was in clang and was fixed in r260567. 2016-02-11 22:30:41 +00:00
load-bitcast64.ll Re-apply r238452, the bug was in clang and was fixed in r260567. 2016-02-11 22:30:41 +00:00
load-cmp.ll Do (A == C1 || A == C2) -> (A & ~(C1 ^ C2)) == C1 rather than (A == C1 || A == C2) -> (A | (C1 ^ C2)) == C2 when C1 ^ C2 is a power of 2. 2015-12-02 16:15:07 +00:00
load-combine-metadata-2.ll Preserve load alignment and dereferenceable metadata during some transformations 2015-11-02 17:53:51 +00:00
load-combine-metadata-3.ll Preserve load alignment and dereferenceable metadata during some transformations 2015-11-02 17:53:51 +00:00
load-combine-metadata-4.ll Preserve load alignment and dereferenceable metadata during some transformations 2015-11-02 17:53:51 +00:00
load-combine-metadata.ll Handle non-constant shifts in computeKnownBits, and use computeKnownBits for constant folding in InstCombine/Simplify 2015-10-23 20:37:08 +00:00
load-select.ll
load.ll
loadstore-alignment.ll
loadstore-metadata.ll Preserve load alignment and dereferenceable metadata during some transformations 2015-11-02 17:53:51 +00:00
log-pow-nofastmath.ll [SimplifyLibCalls] Remove useless bits of this tests. 2015-11-30 19:38:35 +00:00
log-pow.ll [LibCallSimplifier] use instruction-level fast-math-flags to transform log calls 2016-01-11 23:31:48 +00:00
logical-select.ll
lshr-phi.ll
malloc-free-delete.ll [Analysis] Become aware of MSVC's new/delete functions 2015-12-03 22:45:19 +00:00
masked_intrinsics.ll Revert "Support arbitrary addrspace pointers in masked load/store intrinsics" 2016-04-14 08:47:17 +00:00
max-of-nots.ll [InstCombine] Add new rule for MIN(MAX(~A, ~B), ~C) et. al. 2015-04-30 04:56:04 +00:00
maxnum.ll
mem-gep-zidx.ll
memchr.ll
memcmp-1.ll Optimize memcmp(x,y,n)==0 for small n and suitably aligned x/y. 2015-08-28 18:30:18 +00:00
memcmp-2.ll
memcpy_chk-1.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
memcpy_chk-2.ll
memcpy-1.ll
memcpy-2.ll
memcpy-from-global.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
memcpy-to-load.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
memcpy.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
memmove_chk-1.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
memmove_chk-2.ll
memmove-1.ll
memmove-2.ll
memmove.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
memset2.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
memset_chk-1.ll Re-apply r238452, the bug was in clang and was fixed in r260567. 2016-02-11 22:30:41 +00:00
memset_chk-2.ll
memset-1.ll [LibCallSimplifier] fold memset(malloc(x), 0, x) --> calloc(1, x) 2016-01-26 16:17:24 +00:00
memset-2.ll
memset.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
merge-icmp.ll
min-positive.ll [InstCombine] (icmp sgt smin(PosA, B) 0) -> (icmp sgt B 0) 2016-03-09 21:05:07 +00:00
minmax-fold.ll Reapply r237539 with a fix for the Chromium build. 2015-05-20 18:41:25 +00:00
minmax-fp.ll Add support for floating-point minnum and maxnum 2015-08-11 09:12:57 +00:00
minnum.ll
misc-2002.ll [InstCombine] regenerate checks 2016-04-05 17:24:54 +00:00
mul-masked-bits.ll [InstCombine] regenerate checks 2016-04-05 17:24:54 +00:00
mul.ll [InstCombine] (mul nsw 1, INT_MIN) != (shl nsw 1, 31) 2015-04-18 04:41:30 +00:00
multi-size-address-space-pointer.ll
multi-use-or.ll
narrow-switch.ll
narrow.ll
neon-intrinsics.ll [ARM][NEON] Use address space in vld([1234]|[234]lane) and vst([1234]|[234]lane) instructions 2015-09-30 10:56:37 +00:00
no_cgscc_assert.ll [LibCallSimplifier] use instruction-level fast-math-flags to transform sqrt calls 2016-01-11 22:34:19 +00:00
no-negzero.ll
nonnull-attribute.ll isKnownNonNull needs to consider globals in non-zero address spaces. 2015-08-27 03:16:29 +00:00
not-fcmp.ll
not.ll fix typos, remove noise; NFCI 2015-09-08 17:58:22 +00:00
nothrow.ll
nsw.ll
obfuscated_splat.ll
objsize-64.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
objsize-address-space.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
objsize-noverify.ll
objsize.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
odr-linkage.ll
onehot_merge.ll
or-fcmp.ll
or-to-xor.ll
or-xor.ll
or.ll Do (A == C1 || A == C2) -> (A & ~(C1 ^ C2)) == C1 rather than (A == C1 || A == C2) -> (A | (C1 ^ C2)) == C2 when C1 ^ C2 is a power of 2. 2015-12-02 16:15:07 +00:00
osx-names.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
overflow-mul.ll
overflow.ll [InstCombine][CodeGenPrep] Create llvm.uadd.with.overflow in CGP. 2015-04-10 21:07:09 +00:00
OverlappingInsertvalues.ll
phi-load-metadata-2.ll Preserve load alignment and dereferenceable metadata during some transformations 2015-11-02 17:53:51 +00:00
phi-load-metadata-3.ll Preserve load alignment and dereferenceable metadata during some transformations 2015-11-02 17:53:51 +00:00
phi-load-metadata.ll Preserve load alignment and dereferenceable metadata during some transformations 2015-11-02 17:53:51 +00:00
phi-merge-gep.ll
phi-select-constexpr.ll
phi.ll [InstCombine] Simplify a known nonzero incoming value of PHI 2016-02-11 15:50:07 +00:00
pow-1.ll TvOS: add missing support for some libcalls. 2015-11-02 18:00:00 +00:00
pow-2.ll
pow-3.ll
pow-4.ll [LibCallSimplifier] use instruction-level fast-math-flags to transform pow(x, [small integer]) calls 2016-01-19 18:15:12 +00:00
pow-exp-nofastmath.ll [SimplifyLibCalls] Add a new transformation: pow(exp(x), y) -> exp(x*y) 2015-11-03 20:32:23 +00:00
pow-exp.ll [LibCallSimplifier] use instruction-level fast-math-flags to transform pow(exp(x)) calls 2016-01-12 17:30:37 +00:00
pow-sqrt.ll [LibCallSimplifier] use instruction-level fast-math-flags to transform pow(x, 0.5) calls 2016-01-12 19:06:35 +00:00
pr2645-0.ll
pr2645-1.ll
pr2996.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
pr12251.ll
pr12338.ll
pr17827.ll
pr19420.ll
pr20079.ll
pr21199.ll
pr21210.ll
pr21651.ll
pr21891.ll
pr23751.ll [InstCombine] Fix PR23751. 2015-06-05 18:04:42 +00:00
pr23809.ll [InstCombine] call SimplifyICmpInst with correct context 2015-06-25 20:14:47 +00:00
pr24354.ll Fix PR24354. 2015-08-11 21:33:55 +00:00
pr24605.ll [InstCombine] Fix PR24605. 2015-08-28 19:09:31 +00:00
pr25342.ll [InstCombine] Combine A->B->A BitCast 2016-03-17 18:47:20 +00:00
pr25745.ll [InstCombine] Call getCmpPredicateForMinMax only with a valid SPF 2015-12-05 23:44:22 +00:00
pr26992.ll [InstCombine] Don't insert instructions before a catch switch 2016-03-19 04:39:52 +00:00
pr26993.ll [SimplifyLibCalls] Only consider sinpi/cospi functions within the same function 2016-03-19 04:53:02 +00:00
pr27236.ll [InstCombine] Fix miscompile in FoldSPFofSPF 2016-04-08 16:51:49 +00:00
pr27332.ll [InstCombine] We folded an fcmp to an i1 instead of a vector of i1 2016-04-13 06:55:52 +00:00
PR7357.ll
preserve-sminmax.ll
prevent-cmp-merge.ll [InstCombine] Don't aggressively replace xor with icmp 2016-02-12 18:12:38 +00:00
printf-1.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
printf-2.ll [SimplifyLibCalls] Transform printf("%s", "a") -> putchar('a'). 2016-03-28 15:54:01 +00:00
printf-3.ll Add test for r256912 2016-01-07 19:27:16 +00:00
ptr-int-cast.ll
puts-1.ll
range-check.ll
README.txt
rem.ll
round.ll
sdiv-1.ll
sdiv-2.ll
select-2.ll
select-cmp-br.ll
select-cmp-cttz-ctlz.ll
select-crash-noverify.ll
select-crash.ll
select-extractelement.ll
select-load-call.ll
select-select.ll
select.ll [InstCombine] Fix incorrect rule from rL236202 2016-03-31 05:14:34 +00:00
set.ll
setcc-strength-reduce.ll
sext.ll
shift-shift.ll [InstCombine] consolidate tests for related bugs 2016-04-11 17:58:37 +00:00
shift-sra.ll
shift.ll Have a single way for creating unique value names. 2015-11-22 00:16:24 +00:00
shufflemask-undef.ll
shufflevec-constant.ll [InstCombine] regenerate checks 2016-04-05 17:24:54 +00:00
sign-test-and-or.ll
signed-comparison.ll
signext.ll
simplify-demanded-bits-pointer.ll
simplify-libcalls.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
sincospi.ll [SimplifyLibCalls] Don't depend on a called function having a name, it might be an indirect call. 2015-11-26 09:51:17 +00:00
sink_instruction.ll
sink-into-catchswitch.ll [InstCombine] Don't sink an instr after a catchswitch 2016-04-01 17:28:17 +00:00
sitofp.ll
sprintf-1.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
sqrt-nofast.ll [SimplifyLibCalls] Add test to ensure transform is not executed if fast-math 2015-10-31 20:59:32 +00:00
sqrt.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
srem1.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
srem-simplify-bug.ll
srem.ll
stack-overalign.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
stacksaverestore.ll [InstCombine] Be more conservative about removing stackrestore 2016-02-27 00:53:54 +00:00
statepoint.ll [gc.statepoint] Change gc.statepoint intrinsic's return type to token type instead of i32 type 2015-12-26 07:54:32 +00:00
store.ll [InstCombine] Extend peephole DSE to handle unordered atomics 2015-12-17 22:19:27 +00:00
stpcpy_chk-1.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
stpcpy_chk-2.ll
stpcpy-1.ll
stpcpy-2.ll
strcat-1.ll
strcat-2.ll
strcat-3.ll
strchr-1.ll
strchr-2.ll
strcmp-1.ll
strcmp-2.ll
strcpy_chk-1.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +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 Simplify strlen to a subtraction for certain cases. 2016-04-13 14:31:06 +00:00
strlen-2.ll
strncat-1.ll
strncat-2.ll
strncat-3.ll
strncmp-1.ll
strncmp-2.ll
strncpy_chk-1.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
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 [attrs] Extract the pure inference of function attributes into 2015-12-27 08:41:34 +00:00
struct-assign-tbaa.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
sub-xor.ll
sub.ll [InstCombine] Optimize subtract of selects into a select of a sub 2015-06-23 02:49:24 +00:00
switch-truncate-crash.ll
tan-nofastmath.ll [SimplifyLibCalls] New transformation: tan(atan(x)) -> x 2015-11-04 23:36:56 +00:00
tan.ll [LibCallSimplifier] use instruction-level fast-math-flags for tan/atan transform 2016-01-06 19:23:35 +00:00
toascii-1.ll
token.ll [InstructionCombining] prepareICWorklistFromFunction halts in infinite loop with instructions of token type 2016-01-04 23:28:57 +00:00
trunc.ll [InstCombine] fold trunc ([lshr] (bitcast vector) ) --> extractelement (PR25543) 2015-12-14 16:16:54 +00:00
type_pun.ll
udiv_select_to_select_shift.ll
udiv-simplify-bug-0.ll
udiv-simplify-bug-1.ll
udivrem-change-width.ll
unordered-fcmp-select.ll
unpack-fca.ll Explode store of arrays in instcombine 2016-03-02 22:36:45 +00:00
urem-simplify-bug.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
urem.ll
vec_demanded_elts.ll [InstCombine] Teach SimplifyDemandedVectorElts how to handle ConstantVector select masks with ConstantExpr elements (PR24922) 2015-10-06 10:34:53 +00:00
vec_extract_2elts.ll
vec_extract_elt.ll
vec_extract_var_elt.ll
vec_insertelt.ll
vec_narrow.ll
vec_phi_extract.ll
vec_sext.ll revert r262424 because there's a *clang test* for AArch64 that checks -O3 asm output 2016-03-02 01:04:09 +00:00
vec_shuffle.ll [InstCombine] fix propagation of fast-math-flags 2015-11-24 17:51:20 +00:00
vector_gep1.ll
vector_gep2.ll Fixed GEP visitor in the InstCombine pass. 2015-11-15 08:19:35 +00:00
vector-casts.ll Fix a crash where a utility function wasn't aware of fcmp vectors and created a value with the wrong type. Fixes PR24458! 2015-08-14 22:46:49 +00:00
vector-mul.ll
vector-srem.ll
vector-type.ll
volatile_store.ll [InstCombine] regenerate checks 2016-04-05 17:24:54 +00:00
vsx-unaligned.ll
weak-symbols.ll
win-math.ll
x86-crc32-demanded.ll
x86-f16c.ll [InstCombine] CVTPH2PS Vector Demanded Elements + Constant Folding 2015-09-12 13:39:53 +00:00
x86-insertps.ll [x86] instcombine more cases of insertps into a shufflevector 2015-04-25 20:55:25 +00:00
x86-masked-memops.ll Revert "Support arbitrary addrspace pointers in masked load/store intrinsics" 2016-04-14 08:47:17 +00:00
x86-pmovsx.ll [InstCombine][X86][SSE] Replace sign/zero extension intrinsics with native IR 2015-07-27 18:52:15 +00:00
x86-pmovzx.ll [InstCombine][X86][SSE] Replace sign/zero extension intrinsics with native IR 2015-07-27 18:52:15 +00:00
x86-pshufb.ll [InstCombine] Teach how to convert SSSE3/AVX2 byte shuffles to builtin shuffles if the shuffle mask is constant. 2015-09-30 16:44:39 +00:00
x86-sse2.ll [InstCombine] SSE/SSE2 (u)comiss/(u)comisd comparison intrinsics only use the lowest vector element 2016-02-20 23:17:35 +00:00
x86-sse4a.ll [InstCombine] SSE4A constant folding and conversion to shuffles. 2015-10-17 11:40:05 +00:00
x86-sse41.ll [InstCombine] Added SSE41 roundss/roundsd demanded vector elements invec tests 2016-02-21 14:50:27 +00:00
x86-sse.ll [InstCombine] SSE/SSE2 (u)comiss/(u)comisd comparison intrinsics only use the lowest vector element 2016-02-20 23:17:35 +00:00
x86-vector-shifts.ll [InstCombine] Improve Vector Demanded Bits Through Bitcasts 2015-09-29 08:19:11 +00:00
x86-vperm2.ll
x86-xop.ll [InstCombine] Added XOP frczss/vfrczsd demanded vector elements tests 2016-02-21 12:45:36 +00:00
xor2.ll
xor-undef.ll
xor.ll Have a single way for creating unique value names. 2015-11-22 00:16:24 +00:00
zero-point-zero-add.ll [InstCombine] We folded an fcmp to an i1 instead of a vector of i1 2016-04-13 06:55:52 +00:00
zeroext-and-reduce.ll
zext-bool-add-sub.ll
zext-fold.ll [InstCombine] regenerate checks 2016-04-05 17:24:54 +00:00
zext-or-icmp.ll minimize test and use FileCheck 2016-02-23 22:03:44 +00:00
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.