1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/Transforms
Roman Lebedev ad7efc958c [InstCombine] foldUnsignedUnderflowCheck(): handle last few cases (PR43251)
Summary:
I don't have a direct motivational case for this,
but it would be good to have this for completeness/symmetry.

This pattern is basically the motivational pattern from
https://bugs.llvm.org/show_bug.cgi?id=43251
but with different predicate that requires that the offset is non-zero.

The completeness bit comes from the fact that a similar pattern (offset != zero)
will be needed for https://bugs.llvm.org/show_bug.cgi?id=43259,
so it'd seem to be good to not overlook very similar patterns..

Proofs: https://rise4fun.com/Alive/21b

Also, there is something odd with `isKnownNonZero()`, if the non-zero
knowledge was specified as an assumption, it didn't pick it up (PR43267)

With this, i see no other missing folds for
https://bugs.llvm.org/show_bug.cgi?id=43251

Reviewers: spatel, nikic, xbolva00

Reviewed By: spatel

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

llvm-svn: 372257
2019-09-18 20:10:07 +00:00
..
ADCE Add missing test for r366215 2019-07-16 15:28:29 +00:00
AddDiscriminators
AggressiveInstCombine
AlignmentFromAssumptions [AlignmentFromAssumptions] getNewAlignmentDiff(): use getURemExpr() 2019-08-23 02:17:04 +00:00
ArgumentPromotion IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
AtomicExpand
BDCE
BlockExtractor [BlockExtractor] Avoid assert with wrong line format 2019-08-20 14:46:02 +00:00
BranchFolding
CalledValuePropagation
CallSiteSplitting
CanonicalizeAliases
CodeExtractor [CodeExtractor] Fix sinking of allocas with multiple bitcast uses (PR42451) 2019-07-10 16:32:20 +00:00
CodeGenPrepare [NFC} Updated test 2019-09-17 09:45:52 +00:00
ConstantHoisting [RISCV] Fix RISCVTTIImpl::getIntImmCost for immediates where getMinSignedBits() > 64 2019-07-09 10:56:18 +00:00
ConstantMerge
ConstProp [ConstProp] allow folding for fma that produces NaN 2019-09-12 14:10:50 +00:00
Coroutines [coroutine] Fixes "cannot move instruction since its users are not dominated by CoroBegin" problem. 2019-08-15 00:48:51 +00:00
CorrelatedValuePropagation [LVI] Look through extractvalue of insertvalue 2019-09-07 12:03:59 +00:00
CrossDSOCFI
DCE
DeadArgElim [FunctionAttrs] Annotate "willreturn" for intrinsics 2019-07-28 06:09:56 +00:00
DeadStoreElimination [FunctionAttrs] Annotate "willreturn" for intrinsics 2019-07-28 06:09:56 +00:00
DivRemPairs [DivRemPairs] Recommit: Handling for expanded-form rem - recomposition (PR42673) 2019-07-31 12:06:51 +00:00
EarlyCSE [EarlyCSE] Add support for unary FNeg to EarlyCSE 2019-08-07 14:34:41 +00:00
EliminateAvailableExternally
EntryExitInstrumenter Reland "[ARM] push LR before __gnu_mcount_nc" 2019-08-16 23:30:16 +00:00
ExpandMemCmp Revert "Reland "r364412 [ExpandMemCmp][MergeICmps] Move passes out of CodeGen into opt pipeline."" 2019-09-10 10:39:09 +00:00
Float2Int [Float2Int] Add support for unary FNeg to Float2Int 2019-07-08 14:46:07 +00:00
ForcedFunctionAttrs
FunctionAttrs [Attributor][Fix] Initialize the cache prior to using it 2019-09-17 10:52:41 +00:00
FunctionImport Reland "Change the X86 datalayout to add three address spaces 2019-09-10 23:15:38 +00:00
GCOVProfiling
GlobalDCE
GlobalMerge
GlobalOpt [GlobalOpt] prevent crashing on large integer types (PR42932) 2019-08-09 12:43:25 +00:00
GlobalSplit
GuardWidening
GVN [GVN] Propagate simple equalities from assumes within the tail of the block 2019-09-03 17:31:19 +00:00
GVNHoist
GVNSink
HardwareLoops [ARM][LowOverheadLoops] Enable by default 2019-07-30 08:14:28 +00:00
HotColdSplit [CodeExtractor] Fix sinking of allocas with multiple bitcast uses (PR42451) 2019-07-10 16:32:20 +00:00
IndirectBrExpand
IndVarSimplify [SimplifyCFG] FoldTwoEntryPHINode(): consider *total* speculation cost, not per-BB cost 2019-09-16 16:18:24 +00:00
InferAddressSpaces AMDGPU: Add intrinsics for address space identification 2019-09-05 02:20:39 +00:00
InferFunctionAttrs [BuildLibCalls] Noalias annotation 2019-08-14 16:50:06 +00:00
Inline [Inliner][NFC] Make test less brittle. 2019-09-09 13:08:16 +00:00
InstCombine [InstCombine] foldUnsignedUnderflowCheck(): handle last few cases (PR43251) 2019-09-18 20:10:07 +00:00
InstMerge [MergedLoadStoreMotion] Sink stores to BB with more than 2 predecessors 2019-09-05 17:00:32 +00:00
InstNamer
InstSimplify [InstSimplify] add tests for fma/fmuladd; NFC 2019-09-18 17:27:02 +00:00
InterleavedAccess
Internalize
IPConstantProp
IRCE [SCEV] Add smin support to getRangeRef 2019-09-12 21:32:27 +00:00
JumpThreading IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
LCSSA
LICM [LICM/AST] Check if the AliasAny set is removed from the tracker. 2019-09-12 18:09:47 +00:00
LoadStoreVectorizer Handle casts changing pointer size in the vectorizer 2019-08-02 04:03:37 +00:00
LoopDataPrefetch
LoopDeletion
LoopDistribute Revert "[IRBuilder] Fold consistently for or/and whether constant is LHS or RHS" 2019-07-07 22:12:01 +00:00
LoopFusion [LoopFusion] Extend use of OptimizationRemarkEmitter 2019-07-30 15:58:43 +00:00
LoopIdiom Revert r370454 "[LoopIdiomRecognize] BCmp loop idiom recognition" 2019-09-03 17:14:56 +00:00
LoopInstSimplify [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
LoopInterchange [LoopInterchange] Properly move condition, induction increment and ops to latch. 2019-09-11 08:23:23 +00:00
LoopLoadElim
LoopPredication [LoopPred] Extend LFTR normalization to the inverse EQ case 2019-07-09 01:27:45 +00:00
LoopReroll
LoopRotate [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
LoopSimplify
LoopSimplifyCFG
LoopStrengthReduce
LoopTransformWarning
LoopUnroll [LoopUnroll] Use LoopSize+1 as threshold, to allow unrolling loops matching LoopSize. 2019-09-17 09:02:48 +00:00
LoopUnrollAndJam
LoopUnswitch [LoopUnroll+LoopUnswitch] do not transform loops containing callbr 2019-07-15 21:16:29 +00:00
LoopVectorize [LV] Add ARM MVE tail-folding tests 2019-09-16 14:56:26 +00:00
LoopVersioning
LoopVersioningLICM
LowerAtomic
LowerExpectIntrinsic Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
LowerGuardIntrinsic
LowerInvoke
LowerSwitch
LowerTypeTests cfi-icall: Allow the jump table to be optionally made non-canonical. 2019-08-09 22:31:59 +00:00
LowerWidenableCondition
MakeGuardsExplicit
Mem2Reg
MemCpyOpt [BuildLibCalls] Noalias annotation 2019-08-14 16:50:06 +00:00
MergeFunc IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
MergeICmps
MetaRenamer
NameAnonGlobals
NaryReassociate
NewGVN
ObjCARC [FunctionAttrs] Annotate "willreturn" for intrinsics 2019-07-28 06:09:56 +00:00
PartiallyInlineLibCalls
PGOProfile [PGO] Change hardcoded thresholds for cold/inlinehint to use summary 2019-09-17 23:12:13 +00:00
PhaseOrdering Revert "Reland "r364412 [ExpandMemCmp][MergeICmps] Move passes out of CodeGen into opt pipeline."" 2019-09-10 10:39:09 +00:00
PlaceSafepoints
PreISelIntrinsicLowering
PruneEH
Reassociate [Reassoc] Small fix to support unary FNeg in NegateValue(...) 2019-08-23 15:49:38 +00:00
Reg2Mem
RewriteStatepointsForGC
SafeStack [SafeStack] Insert the deref before remaining elements 2019-07-24 00:16:23 +00:00
SampleProfile [SampleFDO] Minimize performance impact when profile-sample-accurate 2019-09-18 16:06:28 +00:00
ScalarizeMaskedMemIntrin/X86 [ScalarizeMaskedMemIntrin] Add test case for expanding scatter. 2019-08-07 23:16:29 +00:00
Scalarizer [Intrinsic] Add the llvm.umul.fix.sat intrinsic 2019-09-07 12:16:14 +00:00
SCCP [SCCP] Update condition to avoid overflow. 2019-07-31 18:22:22 +00:00
SeparateConstOffsetFromGEP
SimpleLoopUnswitch [LoopPassManager + MemorySSA] Only enable use of MemorySSA for LPMs known to preserve it. 2019-08-21 17:00:57 +00:00
SimplifyCFG [SimplifyCFG] mergeConditionalStoreToAddress(): consider cost, not instruction count 2019-09-18 19:46:57 +00:00
Sink
SLPVectorizer [SLP] limit vectorization of Constant subclasses (PR33958) 2019-09-15 13:03:24 +00:00
SpeculateAroundPHIs Ignore indirect branches from callbr. 2019-08-14 16:44:07 +00:00
SpeculativeExecution
SROA [Loads/SROA] Remove blatantly incorrect code and fix a bug revealed in the process 2019-08-27 19:34:43 +00:00
StackProtector/X86
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols
StructurizeCFG
SyntheticCountsPropagation
TailCallElim
ThinLTOBitcodeWriter cfi-icall: Allow the jump table to be optionally made non-canonical. 2019-08-09 22:31:59 +00:00
Util [Debuginfo][SROA] Need to handle dbg.value in SROA pass. 2019-09-04 14:19:49 +00:00
WholeProgramDevirt IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00