1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/test/Transforms/InstCombine
Nikita Popov a2de3621a0 [InstCombine] Determine demanded and known bits for funnel shifts
Support funnel shifts in InstCombine demanded bits simplification.
If the shift amount is constant, we can determine both the demanded
bits of the operands, as well as the known bits of the result.

If one of the operands has no demanded bits, it will be replaced
by undef and the funnel shift will be simplified into a simple shift
due to the simplifications added in D54778.

Differential Revision: https://reviews.llvm.org/D54869

llvm-svn: 347515
2018-11-24 19:00:45 +00:00
..
AArch64
AMDGPU InstCombine: Avoid introducing poison values when lowering llvm.amdgcn.[us]bfe 2018-11-08 17:57:57 +00:00
ARM
NVPTX
PowerPC
X86 [InstCombine] drop poison flags in SimplifyVectorDemandedElts 2018-10-04 21:36:50 +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
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-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-18-VectorInfLoop.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 [PPC] Remove Darwin support from POWER backend. 2018-08-28 01:18:29 +00:00
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 [PPC] Remove Darwin support from POWER backend. 2018-08-28 01:18:29 +00:00
2007-10-31-StringCrash.ll
2007-11-07-OpaqueAlignCrash.ll
2007-11-15-CompareMiscomp.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-14-VarArgTrampoline.ll
2008-01-21-MismatchedCastAndCompare.ll
2008-01-21-MulTrunc.ll
2008-01-27-FloatSelect.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
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-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-ShiftOneAndOne.ll
2008-07-08-SubAnd.ll
2008-07-08-VolatileLoadMerge.ll
2008-07-09-SubAndError.ll
2008-07-10-CastSextBool.ll
2008-07-11-RemAnd.ll
2008-07-13-DivZero.ll
2008-07-16-fsub.ll
2008-08-05-And.ll
2008-09-02-VectorCrash.ll
2008-10-11-DivCompareFold.ll
2008-10-23-ConstFoldWithoutMask.ll
2008-11-01-SRemDemandedBits.ll
2008-11-08-FCmp.ll
2008-11-27-IDivVector.ll
2008-11-27-MultiplyIntVec.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-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-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
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-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
add3.ll
add4.ll
add-sitofp.ll
add.ll
addnegneg.ll
AddOverFlow.ll
addrspacecast.ll
adjust-for-minmax.ll
alias-recursion.ll
align-2d-gep.ll
align-addr.ll
align-attr.ll
align-external.ll
all-bits-shift.ll
alloca-big.ll [InstCombine] Limit simplifyAllocaArraySize constant folding to values that fit into a uint64_t 2018-08-13 16:50:20 +00:00
alloca-cast-debuginfo.ll
alloca.ll
allocsize-32.ll
allocsize.ll
and2.ll [InstCombine] move/add tests for xor+add fold; NFC 2018-07-31 12:31:00 +00:00
and-compare.ll
and-fcmp.ll
and-narrow.ll
and-or-and.ll
and-or-icmps.ll
and-or-not.ll
and-or.ll
and-xor-merge.ll
and-xor-or.ll [InstCombine] simplify code for A & (A ^ B) --> A & ~B 2018-07-31 13:00:03 +00:00
and.ll
apint-add.ll
apint-and-compare.ll
apint-and-or-and.ll
apint-and-xor-merge.ll
apint-and.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-or.ll
apint-rem1.ll
apint-rem2.ll
apint-select.ll
apint-shift-simplify.ll
apint-shift.ll [InstCombine] Ensure nested shifts are in range (OSS-Fuzz #9880) 2018-11-06 11:28:22 +00:00
apint-shl-trunc.ll [InstCombine] reverse 'trunc X to <N x i1>' canonicalization; 2nd try 2018-10-10 20:47:46 +00:00
apint-sub.ll
apint-xor1.ll
apint-xor2.ll
assoc-cast-assoc.ll
assume2.ll
assume-loop-align.ll
assume-redundant.ll
assume.ll
atomic.ll
badmalloc.ll
binop-cast.ll
bit-checks.ll
bitcast-alias-function.ll
bitcast-bigendian.ll
bitcast-bitcast.ll
bitcast-sext-vector.ll
bitcast-store.ll
bitcast-vec-canon.ll
bitcast.ll
bitcount.ll
bitreverse-hang.ll
bitreverse-known-bits.ll
bittest.ll
branch.ll
broadcast.ll
bswap-fold.ll
bswap-known-bits.ll
bswap.ll
builtin-object-size-offset.ll
builtin-object-size-ptr.ll
cabs-array.ll
cabs-discrete.ll
call2.ll
call_nonnull_arg.ll
call-callconv.ll
call-cast-attrs.ll
call-cast-target-inalloca.ll
call-cast-target.ll
call-guard.ll
call-intrinsics.ll
call.ll
canonicalize_branch.ll
canonicalize-ashr-shl-to-masking.ll
canonicalize-constant-low-bit-mask-and-icmp-eq-to-icmp-ule.ll
canonicalize-constant-low-bit-mask-and-icmp-ne-to-icmp-ugt.ll
canonicalize-constant-low-bit-mask-and-icmp-sge-to-icmp-sle.ll
canonicalize-constant-low-bit-mask-and-icmp-sgt-to-icmp-sgt.ll
canonicalize-constant-low-bit-mask-and-icmp-sle-to-icmp-sle.ll
canonicalize-constant-low-bit-mask-and-icmp-slt-to-icmp-sgt.ll
canonicalize-constant-low-bit-mask-and-icmp-uge-to-icmp-ule.ll
canonicalize-constant-low-bit-mask-and-icmp-ugt-to-icmp-ugt.ll
canonicalize-constant-low-bit-mask-and-icmp-ule-to-icmp-ule.ll
canonicalize-constant-low-bit-mask-and-icmp-ult-to-icmp-ugt.ll
canonicalize-lack-of-signed-truncation-check.ll
canonicalize-low-bit-mask-and-icmp-eq-to-icmp-ule.ll
canonicalize-low-bit-mask-and-icmp-ne-to-icmp-ugt.ll
canonicalize-low-bit-mask-v2-and-icmp-eq-to-icmp-ule.ll [InstCombine] foldICmpWithLowBitMaskedVal(): handle ~(-1 << y) mask 2018-09-19 13:35:27 +00:00
canonicalize-low-bit-mask-v2-and-icmp-ne-to-icmp-ugt.ll [InstCombine] foldICmpWithLowBitMaskedVal(): handle ~(-1 << y) mask 2018-09-19 13:35:27 +00:00
canonicalize-low-bit-mask-v3-and-icmp-eq-to-icmp-ule.ll [InstCombine] foldICmpWithLowBitMaskedVal(): handle uncanonical ((1 << y)+(-1)) mask 2018-09-19 13:35:40 +00:00
canonicalize-low-bit-mask-v3-and-icmp-ne-to-icmp-ugt.ll [InstCombine] foldICmpWithLowBitMaskedVal(): handle uncanonical ((1 << y)+(-1)) mask 2018-09-19 13:35:40 +00:00
canonicalize-low-bit-mask-v4-and-icmp-eq-to-icmp-ule.ll [InstCombine] foldICmpWithLowBitMaskedVal(): handle uncanonical ((-1 << y) >> y) mask 2018-09-19 13:35:46 +00:00
canonicalize-low-bit-mask-v4-and-icmp-ne-to-icmp-ugt.ll [InstCombine] foldICmpWithLowBitMaskedVal(): handle uncanonical ((-1 << y) >> y) mask 2018-09-19 13:35:46 +00:00
canonicalize-lshr-shl-to-masking.ll
canonicalize-shl-lshr-to-masking.ll
canonicalize-signed-truncation-check.ll
cast_ptr.ll
cast-call-combine-prof.ll
cast-call-combine.ll
cast-callee-deopt-bundles.ll
cast-int-fcmp-eq-0.ll
cast-int-icmp-eq-0.ll
cast-mul-select.ll
cast-select.ll
cast-set-preserve-signed-dbg-val.ll
cast-set.ll
cast-unsigned-icmp-eqcmp-0.ll
cast.ll
ceil.ll
clamp-to-minmax.ll
cmp-intrinsic.ll
compare-3way.ll
compare-alloca.ll
compare-signs.ll
compare-udiv.ll
compare-unescaped.ll
consecutive-fences.ll
constant-expr-datalayout.ll
constant-fold-address-space-pointer.ll
constant-fold-alias.ll
constant-fold-compare.ll
constant-fold-gep.ll
constant-fold-iteration.ll
constant-fold-libfunc.ll
constant-fold-math.ll
convergent.ll
copysign.ll
cos-1.ll [InstCombine] add reflection fold for tan(-x) 2018-08-16 22:46:20 +00:00
cos-2.ll
cos-sin-intrinsic.ll [InstCombine] canonicalize fneg with llvm.sin 2018-08-29 18:27:49 +00:00
CPP_min_max.ll
crash.ll
ctpop.ll
dce-iterate.ll
deadcode.ll
debug-line.ll
debuginfo_add.ll
debuginfo-dce2.ll
debuginfo-dce.ll
debuginfo-skip.ll
debuginfo-variables.ll
debuginfo.ll
default-alignment.ll
demand_shrink_nsw.ll [InstCombine] fix xor-or-xor fold to check uses and handle commutes 2018-09-04 23:22:13 +00:00
demorgan-sink-not-into-xor.ll [InstCombine] De Morgan: sink 'not' into 'xor' (PR38446) 2018-08-08 13:31:19 +00:00
demorgan.ll
disable-simplify-libcalls.ll
distribute.ll
div-shift-crash.ll
div-shift.ll
div.ll
double-float-shrink-1.ll [SLC] Fix shrinking of pow() 2018-08-06 19:40:17 +00:00
double-float-shrink-2.ll
early_constfold_changes_IR.ll
early_dce_clobbers_callgraph.ll
element-atomic-memintrins.ll
enforce-known-alignment.ll
err-rep-cold.ll
exact.ll
exp2-1.ll
exp2-2.ll
ExtractCast.ll
extractelement.ll [InstCombine] allow bitcast to/from FP for vector insert/extract transform 2018-10-04 16:25:05 +00:00
extractinsert-tbaa.ll
extractvalue.ll
fabs-libcall.ll
fabs.ll
fadd-fsub-factor.ll [InstCombine] fix/enhance fadd/fsub factorization 2018-08-12 15:48:26 +00:00
fadd.ll
fast-math.ll [InstCombine] move/add tests for fadd/fsub factorization; NFC 2018-08-12 15:06:15 +00:00
fcmp-select.ll [InstCombine] add/adjust tests for fcmp+select substitution; NFC 2018-11-05 18:09:10 +00:00
fcmp-special.ll [InstCombine] canonicalize -0.0 to +0.0 in fcmp 2018-11-05 17:26:42 +00:00
fcmp.ll [InstCombine] propagate FMF for fcmp+fabs folds 2018-11-07 16:15:01 +00:00
fdiv-cos-sin.ll [InstCombine] Don't transform sin/cos -> tanl if for half types 2018-09-19 12:01:38 +00:00
fdiv-sin-cos.ll
fdiv.ll
ffs-1.ll
float-shrink-compare.ll
fls.ll
fma.ll
fmul-sqrt.ll
fmul.ll
fneg.ll [InstCombine] fold fneg into constant operand of fmul/fdiv 2018-08-08 14:29:08 +00:00
fold-bin-operand.ll
fold-calls.ll
fold-fops-into-selects.ll
fold-phi-load-metadata.ll
fold-phi.ll
fold-sqrt-sqrtf.ll
fold-vector-select.ll
fold-vector-zero.ll
fp-ret-bitcast.ll
fpcast.ll [FPEnv] Last BinaryOperator::isFNeg(...) to m_FNeg(...) changes 2018-10-25 18:09:33 +00:00
fpextend_x86.ll
fpextend.ll
fprintf-1.ll
fputs-1.ll
fputs-opt-size.ll
fsh.ll [InstCombine] Determine demanded and known bits for funnel shifts 2018-11-24 19:00:45 +00:00
fsub.ll [InstCombine] fold fneg into constant operand of fmul/fdiv 2018-08-08 14:29:08 +00:00
fwrite-1.ll
gc.relocate.ll
gep-addrspace.ll Fix InstCombine address space assert 2018-07-31 15:53:03 +00:00
gep-combine-loop-invariant.ll
gep-custom-dl.ll
gep-sext.ll
gep-vector.ll [InstCombine] Fix incongruous GEP type addrspace 2018-10-08 08:40:45 +00:00
gepgep.ll
gepphigep.ll
getelementptr-folding.ll
getelementptr.ll
hoist_instr.ll
icmp_sdiv_with_and_without_range.ll
icmp-add.ll [InstCombine] add folds for unsigned-overflow compares 2018-09-11 22:40:20 +00:00
icmp-bc-vec.ll
icmp-custom-dl.ll
icmp-div-constant.ll
icmp-logical.ll
icmp-mul-zext.ll
icmp-mul.ll [InstCombine] Add new tests in preparation for a combine of icmp (mul nsw/nuw X, C2), C 2018-09-27 10:08:38 +00:00
icmp-range.ll
icmp-shl-nsw.ll
icmp-shl-nuw.ll
icmp-shr-lt-gt.ll
icmp-shr.ll
icmp-uge-of-add-of-shl-one-by-bits-to-allones-and-val-to-icmp-eq-of-lshr-val-by-bits-and-0.ll [InstCombine] Inefficient pattern for high-bits checking 3 (PR38708) 2018-09-15 12:04:13 +00:00
icmp-uge-of-not-of-shl-allones-by-bits-and-val-to-icmp-eq-of-lshr-val-by-bits-and-0.ll [InstCombine] Inefficient pattern for high-bits checking 2 (PR38708) 2018-09-13 20:33:12 +00:00
icmp-ugt-of-shl-1-by-bits-and-val-to-icmp-eq-of-lshr-val-by-bits-and-0.ll [NFC][InstCombine] Test what happens if 'unefficient high bit check' pattern is on both sides. 2018-09-13 20:33:02 +00:00
icmp-ule-of-shl-1-by-bits-and-val-to-icmp-ne-of-lshr-val-by-bits-and-0.ll [NFC][InstCombine] Test what happens if 'unefficient high bit check' pattern is on both sides. 2018-09-13 20:33:02 +00:00
icmp-ult-of-add-of-shl-one-by-bits-to-allones-and-val-to-icmp-ne-of-lshr-val-by-bits-and-0.ll [InstCombine] Inefficient pattern for high-bits checking 3 (PR38708) 2018-09-15 12:04:13 +00:00
icmp-ult-of-not-of-shl-allones-by-bits-and-val-to-icmp-ne-of-lshr-val-by-bits-and-0.ll [InstCombine] Inefficient pattern for high-bits checking 2 (PR38708) 2018-09-13 20:33:12 +00:00
icmp-vec.ll [InstCombine] move vector compare before same-shuffled ops 2018-08-16 12:52:17 +00:00
icmp-xor-signbit.ll
icmp.ll [InstCombine] reverse 'trunc X to <N x i1>' canonicalization; 2nd try 2018-10-10 20:47:46 +00:00
idioms.ll
indexed-gep-compares.ll
inline-intrinsic-assert.ll
inselt-binop.ll [InstCombine] add tests for insertelement+binop; NFC 2018-08-20 16:49:08 +00:00
insert-const-shuf.ll
insert-extract-shuffle.ll [InstCombine] try to turn shuffle into insertelement 2018-10-30 15:26:39 +00:00
insert-val-extract-elem.ll
int_sideeffect.ll
intptr1.ll
intptr2.ll
intptr3.ll
intptr4.ll
intptr5.ll
intptr6.ll
intptr7.ll
IntPtrCast.ll
intrinsics.ll
invariant.group.ll
invariant.ll
invert-variable-mask-in-masked-merge-scalar.ll
invert-variable-mask-in-masked-merge-vector.ll
invoke.ll
isascii-1.ll
isdigit-1.ll
JavaCompare.ll
known_align.ll
known-never-nan.ll [InstSimplify] use isKnownNeverNaN to fold more fcmp ord/uno 2018-08-21 14:45:13 +00:00
LandingPadClauses.ll
lifetime-asan.ll
lifetime-no-null-opt.ll
lifetime.ll
load3.ll
load_combine_aa.ll
load-bitcast32.ll
load-bitcast64.ll
load-bitcast-select.ll
load-cmp.ll
load-combine-metadata-2.ll
load-combine-metadata-3.ll
load-combine-metadata-4.ll
load-combine-metadata-dominance.ll [Local] Make DoesKMove required for combineMetadata. 2018-08-24 11:40:04 +00:00
load-combine-metadata.ll [Local] Keep K's range if K does not move when combining metadata. 2018-10-27 16:53:45 +00:00
load-select.ll
load.ll [InstCombine] auto-generate full checks; NFC 2018-11-10 18:51:10 +00:00
loadstore-alignment.ll
loadstore-metadata.ll
log-pow-nofastmath.ll
log-pow.ll
logical-select.ll [ValueTracking] peek through 2-input shuffles in ComputeNumSignBits 2018-11-03 13:18:55 +00:00
lower-dbg-declare.ll
lshr-phi.ll
lshr.ll
malloc-free-delete.ll [InstCombine] Teach the move free before null test opti how to deal with noop casts 2018-10-30 20:51:04 +00:00
masked_intrinsics.ll
masked-merge-add.ll
masked-merge-and-of-ors.ll
masked-merge-or.ll
masked-merge-xor.ll
max_known_bits.ll [InstCombine] remove stall comment from test file; NFC 2018-09-14 18:02:17 +00:00
max-of-nots.ll [InstCombine] Tests for ~A - Min/Max(~A, O) -> Max/Min(A, ~O) - A. NFC 2018-10-02 09:06:49 +00:00
maximum.ll [InstCombine] Combine nested min/max intrinsics with constants 2018-10-31 17:50:52 +00:00
maxnum.ll [InstCombine] Combine nested min/max intrinsics with constants 2018-10-31 17:50:52 +00:00
mem-gep-zidx.ll
mem-par-metadata-memcpy.ll
memchr.ll
memcmp-1.ll
memcmp-2.ll
memcmp-constant-fold.ll
memcpy_chk-1.ll
memcpy_chk-2.ll
memcpy-1.ll
memcpy-2.ll
memcpy-addrspace.ll
memcpy-from-global.ll
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
min-positive.ll
minimum.ll [InstCombine] Combine nested min/max intrinsics with constants 2018-10-31 17:50:52 +00:00
minmax-demandbits.ll [InstCombine] Demand bits of UMin 2018-10-11 11:28:27 +00:00
minmax-fold.ll
minmax-fp.ll [InstCombine] canonicalize -0.0 to +0.0 in fcmp 2018-11-05 17:26:42 +00:00
minnum.ll [InstCombine] Combine nested min/max intrinsics with constants 2018-10-31 17:50:52 +00:00
misc-2002.ll
mul-masked-bits.ll
mul.ll [InstCombine] Fix incorrect usage of getPrimitiveSizeInBits when we should be using the element size for vectors 2018-09-11 17:57:20 +00:00
multi-size-address-space-pointer.ll
multi-use-or.ll
multiple-uses-load-bitcast-select.ll
musttail-thunk.ll
narrow-math.ll [InstCombine] Support (sub (sext x), (sext y)) --> (sext (sub x, y)) and (sub (zext x), (zext y)) --> (zext (sub x, y)) 2018-09-15 18:54:10 +00:00
narrow-switch.ll [InstCombine] do not shrink switch conditions to illegal types (PR29009) 2018-11-07 14:12:41 +00:00
narrow.ll
no_cgscc_assert.ll
no_sink_instruction.ll Add -instcombine-code-sinking option 2018-10-25 08:32:29 +00:00
no-negzero.ll
non-integral-pointers.ll
nonnull-attribute.ll
not.ll [InstCombine] allow add+not --> sub for arbitrary vector constants. 2018-09-03 18:21:59 +00:00
nothrow.ll
nsw.ll [ValueTracking] peek through shuffles in ComputeNumSignBits (PR37549) 2018-10-26 21:05:14 +00:00
obfuscated_splat.ll
objsize-64.ll
objsize-address-space.ll
objsize-noverify.ll
objsize.ll
odr-linkage.ll
onehot_merge.ll
opaque.ll
operand-complexity.ll [InstCombine] fix complexity canonicalization with fake unary vector ops 2018-10-13 16:15:37 +00:00
or-fcmp.ll
or-shifted-masks.ll
or-xor.ll
or.ll
osx-names.ll
out-of-bounds-indexes.ll
overflow-mul.ll
overflow.ll
OverlappingInsertvalues.ll
phi-load-metadata-2.ll
phi-load-metadata-3.ll
phi-load-metadata-dominance.ll [Local] Make DoesKMove required for combineMetadata. 2018-08-24 11:40:04 +00:00
phi-load-metadata.ll
phi-merge-gep.ll
phi-preserve-ir-flags.ll
phi-select-constant.ll
phi-timeout.ll
phi.ll
pow-1.ll [InstCombine] Expand the simplification of pow() into exp2() 2018-08-30 19:04:51 +00:00
pow-2.ll [InstCombine] regenerate checks; NFC 2018-08-14 15:21:13 +00:00
pow-3.ll [SLC] Expand simplification of pow() for vector types 2018-08-13 16:12:37 +00:00
pow-4.ll [SLC] Support expanding pow(x, n+0.5) to x * x * ... * sqrt(x) 2018-09-03 17:37:39 +00:00
pow-cbrt.ll
pow-exp-nofastmath.ll [InstCombine] regenerate checks; NFC 2018-08-14 15:21:13 +00:00
pow-exp.ll [InstCombine] Expand the simplification of pow() with nested exp{,2}() 2018-08-29 17:59:48 +00:00
pow-sqrt.ll [NFC] Fix typo in test cases 2018-08-16 17:03:22 +00:00
pr2645-0.ll
pr2996.ll
pr12251.ll
pr12338.ll
pr17827.ll
pr19420.ll
pr20079.ll
pr20678.ll
pr21199.ll
pr21210.ll
pr21651.ll
pr21891.ll
pr23751.ll
pr23809.ll
pr24354.ll
pr24605.ll
pr25342.ll
pr25745.ll
pr26992.ll
pr26993.ll
pr27236.ll
pr27332.ll
pr27343.ll [InstCombine] Add PR27343 test cases 2018-10-14 20:14:33 +00:00
pr27703.ll
pr27996.ll
pr28143.ll
pr28725.ll
pr30929.ll
pr31990_wrong_memcpy.ll
pr32686.ll
pr33453.ll
pr33689_same_bitwidth.ll
pr34349.ll
pr34627.ll
pr35515.ll
pr36362.ll
pr38677.ll [ValueTracking] Fix assert message and add test case for r340546 and PR38677. 2018-08-23 17:45:53 +00:00
pr38897.ll [InstCombine] Fold (min/max ~X, Y) -> ~(max/min X, ~Y) when Y is freely invertible 2018-09-22 05:53:27 +00:00
pr38915.ll [InstCombine] Fold (xor (min/max X, Y), -1) -> (max/min ~X, ~Y) when X and Y are freely invertible. 2018-09-13 18:52:58 +00:00
pr38984.ll [InstCombine] Handle vector compares in foldGEPIcmp(), take 2 2018-10-01 14:59:25 +00:00
pr39177.ll [InstCombine] Cleanup libfunc attribute inferring 2018-10-16 21:18:31 +00:00
PR30597.ll
PR37526.ll
prefetch-load.ll
preserve-sminmax.ll
preserved-analyses.ll
prevent-cmp-merge.ll
printf-1.ll [SLC] Add an alignment to CreateGlobalString 2018-09-06 08:42:17 +00:00
printf-2.ll
printf-3.ll
ptr-int-cast.ll
puts-1.ll
range-check.ll
README.txt
readnone-maythrow.ll
realloc.ll
rem.ll
rotate.ll [InstCombine] adjust rotate direction in tests; NFC 2018-11-15 19:15:41 +00:00
round.ll
salvage-dbg-declare.ll
scalarization.ll [InstCombine] add tests for extractelement; NFC 2018-09-21 14:43:49 +00:00
sdiv-1.ll
sdiv-2.ll
sdiv-guard.ll
select_arithmetic.ll
select_meta.ll [InstCombine] use 'match' to handle vectors and simplify code 2018-10-23 15:05:12 +00:00
select-2.ll
select-binop-cmp.ll [InstCombine] canonicalize -0.0 to +0.0 in fcmp 2018-11-05 17:26:42 +00:00
select-bitext-bitwise-ops.ll
select-bitext.ll
select-cmp-br.ll
select-cmp-cttz-ctlz.ll
select-cmpxchg.ll
select-crash-noverify.ll
select-crash.ll
select-extractelement.ll
select-gep.ll [InstCombine] Do not fold scalar ops over select with vector condition. 2018-09-07 14:40:06 +00:00
select-icmp-and.ll
select-implied.ll
select-load-call.ll
select-obo-peo-ops.ll
select-of-bittest.ll
select-pr39595.ll [InstCombine] Remove a couple of asserts based on incorrect assumptions 2018-11-14 17:55:07 +00:00
select-select.ll
select-with-bitwise-ops.ll
select.ll [InstCombine] Fold (min/max ~X, Y) -> ~(max/min X, ~Y) when Y is freely invertible 2018-09-22 05:53:27 +00:00
set-lowbits-mask-canonicalize.ll
set.ll [NFC][InstCombine] Regenerate set.ll test 2018-08-05 08:53:40 +00:00
setcc-strength-reduce.ll
sext.ll
shift-add.ll
shift-shift.ll
shift-sra.ll
shift.ll
should-change-type.ll
shuffle_select.ll [InstCombine] drop poison flags in SimplifyVectorDemandedElts 2018-10-04 21:36:50 +00:00
shuffle-select-narrow.ll [InstCombine] enhance vector demanded elements to look at a vector select condition operand 2018-09-11 18:49:00 +00:00
shufflevec-bitcast.ll
shufflevec-constant.ll
sign-test-and-or.ll
signed-comparison.ll
signed-truncation-check.ll [InstCombine] Re-land: Optimize redundant 'signed truncation check pattern'. 2018-08-13 21:54:37 +00:00
signext.ll
simplify-demanded-bits-pointer.ll
simplify-libcalls-erased.ll [InstCombine] Fix SimplifyLibCalls erasing an instruction while IC still had references to it. 2018-10-11 14:51:11 +00:00
simplify-libcalls.ll
sincospi.ll
sink_instruction.ll
sink-into-catchswitch.ll
sitofp.ll
smax-icmp.ll
smin-icmp.ll
snprintf.ll
sprintf-1.ll
sprintf-void.ll
sqrt-nofast.ll
sqrt.ll
srem1.ll
srem-simplify-bug.ll
stack-overalign.ll
stacksave-debuginfo.ll
stacksaverestore.ll
statepoint.ll
store-load-unaliased-gep.ll
store.ll [InstCombine] auto-generate full checks; NFC 2018-11-10 18:51:10 +00:00
storemerge-dbg.ll [InstCombine] Set debug loc on mergeStoreIntoSuccessor phi 2018-11-19 19:55:02 +00:00
stpcpy_chk-1.ll
stpcpy_chk-2.ll
stpcpy-1.ll
stpcpy-2.ll
str-int-2.ll
str-int.ll
strcat-1.ll
strcat-2.ll
strcat-3.ll
strchr-1.ll
strchr-2.ll
strcmp-1.ll
strcmp-2.ll
strcmp-memcmp.ll [InstCombine] Disable strcmp->memcmp transform for MSan. 2018-09-19 19:37:24 +00:00
strcpy_chk-1.ll
strcpy_chk-2.ll
strcpy_chk-64.ll
strcpy-1.ll
strcpy-2.ll
strcspn-1.ll
strcspn-2.ll
strlen-1.ll
strlen-2.ll
strncat-1.ll
strncat-2.ll
strncat-3.ll
strncmp-1.ll
strncmp-2.ll
strncmp-wrong-datalayout.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-new.ll
struct-assign-tbaa.ll
sub-minmax.ll [InstCombine] Fold ~A - Min/Max(~A, O) -> Max/Min(A, ~O) - A 2018-10-02 09:48:34 +00:00
sub-not.ll
sub-xor.ll
sub.ll [InstCombine] use m_Neg() in dyn_castNegVal() to match vectors with undef elts 2018-10-19 17:54:53 +00:00
switch-constant-expr.ll
switch-truncate-crash.ll
tan-nofastmath.ll
tan.ll
tbaa-store-to-load.ll
toascii-1.ll
token.ll
trunc-binop-ext.ll
trunc.ll
type_pun.ll
uaddo.ll [InstCombine] add tests for unsigned add overflow; NFC 2018-09-12 21:13:37 +00:00
udiv_select_to_select_shift.ll
udiv-simplify.ll
udivrem-change-width.ll
umax-icmp.ll
umin-icmp.ll
unfold-masked-merge-with-const-mask-scalar.ll
unfold-masked-merge-with-const-mask-vector.ll
unlocked-stdio-mingw.ll
unlocked-stdio.ll
unordered-fcmp-select.ll
unpack-fca.ll
unrecognized_three-way-comparison.ll
unsigned_saturated_sub.ll
urem-simplify-bug.ll
vararg.ll
vec_demanded_elts.ll [InstCombine] drop poison flags in SimplifyVectorDemandedElts 2018-10-04 21:36:50 +00:00
vec_extract_2elts.ll
vec_extract_var_elt.ll
vec_insertelt.ll
vec_narrow.ll
vec_phi_extract.ll
vec_sext.ll [InstCombine] try harder to form select from logic ops (2nd try) 2018-10-24 15:17:56 +00:00
vec_shuffle.ll [InstCombine] combine a shuffle and an extract subvector shuffle 2018-10-14 15:25:06 +00:00
vector_gep1.ll
vector_gep2.ll
vector_insertelt_shuffle.ll
vector-casts.ll [InstCombine] reverse 'trunc X to <N x i1>' canonicalization; 2nd try 2018-10-10 20:47:46 +00:00
vector-concat-binop.ll [InstCombine] narrow binops on concatenated vectors (PR33026) 2018-09-25 15:57:37 +00:00
vector-mul.ll
vector-type.ll
vector-udiv.ll
vector-urem.ll
vector-xor.ll [InstCombine] consolidate tests for ~(X+C); NFC 2018-09-03 18:04:21 +00:00
volatile_store.ll
wcslen-1.ll
wcslen-2.ll
wcslen-3.ll
wcslen-4.ll
weak-symbols.ll
win-math.ll
xor2.ll [InstCombine] fix xor-or-xor fold to check uses and handle commutes 2018-09-04 23:22:13 +00:00
xor-icmps.ll [InstCombine] Fix IC trying to create a xor of pointer types. 2018-08-15 17:46:22 +00:00
xor-undef.ll
xor.ll [InstCombine] add/move tests for select with inverted condition; NFC 2018-10-23 14:37:29 +00:00
zero-point-zero-add.ll
zeroext-and-reduce.ll
zext-bool-add-sub.ll
zext-fold.ll
zext-or-icmp.ll
zext-phi.ll
zext.ll [InstCombine] make ((X & C) ^ C) form consistent for vectors 2018-09-04 21:17:14 +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.