1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/Transforms
Sanjay Patel 66e8f4d8a3 [InstCombine] fold icmp with 'mul nsw/nuw' and constant operands
This also removes a more specific fold that only handled icmp with 0.

https://rise4fun.com/Alive/sdM9

  Name: mul nsw with icmp eq
  Pre: (C1 != 0) && (C2 % C1) == 0
  %a = mul nsw i8 %x, C1
  %r = icmp eq i8 %a, C2
    =>
  %r = icmp eq i8 %x, C2 / C1

  Name: mul nuw with icmp eq
  Pre: (C1 != 0) && (C2 %u C1) == 0
  %a = mul nuw i8 %x, C1
  %r = icmp eq i8 %a, C2
    =>
  %r = icmp eq i8 %x, C2 /u C1

  Name: mul nsw with icmp ne
  Pre: (C1 != 0) && (C2 % C1) == 0
  %a = mul nsw i8 %x, C1
  %r = icmp ne i8 %a, C2
    =>
  %r = icmp ne i8 %x, C2 / C1

  Name: mul nuw with icmp ne
  Pre: (C1 != 0) && (C2 %u C1) == 0
  %a = mul nuw i8 %x, C1
  %r = icmp ne i8 %a, C2
    =>
  %r = icmp ne i8 %x, C2 /u C1
2020-08-05 17:29:32 -04:00
..
ADCE
AddDiscriminators
AggressiveInstCombine
AlignmentFromAssumptions Temporarily Revert "[AssumeBundles] Use operand bundles to encode alignment assumptions" 2020-07-16 11:54:04 -07:00
ArgumentPromotion [ArgPromotion] Replace all md uses of promoted values with undef. 2020-08-03 19:31:53 +01:00
AtomicExpand
Attributor [Attributor] Check nonnull attribute violation in AAUndefinedBehavior 2020-08-03 17:12:50 +09:00
BDCE [BDCE] SExt -> ZExt when no sign bits is used and instruction has multiple uses 2020-07-10 08:34:53 +01:00
BlockExtractor
BranchFolding
CalledValuePropagation
CallSiteSplitting Re-enable "[InstCombine] Simplify boolean Phis with const inputs using CFG" 2020-07-16 16:09:08 +07:00
CanonicalizeAliases
CanonicalizeFreezeInLoops
CodeExtractor
CodeGenPrepare CodeGenPrep: remove AssertingVH references before deleting dead instructions. 2020-07-15 15:19:21 +01:00
ConstantHoisting
ConstantMerge
ConstProp
Coroutines [Coroutines] Refactor sinkLifetimeStartMarkers 2020-07-09 18:23:28 +08:00
CorrelatedValuePropagation [ConstantRange][CVP] Make use of abs poison flag 2020-07-30 23:06:10 +02:00
CrossDSOCFI
DCE
DeadArgElim IR: Define byref parameter attribute 2020-07-20 10:23:09 -04:00
DeadStoreElimination Re-land "[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support" 2020-07-28 14:00:11 +00:00
DivRemPairs [ValueTracking] Let isGuaranteedNotToBeUndefOrPoison use canCreateUndefOrPoison 2020-07-20 09:21:39 +09:00
EarlyCSE [BasicAA] Rename deprecated -basicaa to -basic-aa 2020-06-26 20:41:37 -07:00
EliminateAvailableExternally
EntryExitInstrumenter Re-land "[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support" 2020-07-28 14:00:11 +00:00
ExpandMemCmp
FixIrreducible [fix-irreducible] Skip unreachable predecessors. 2020-07-11 10:08:44 -04:00
Float2Int
ForcedFunctionAttrs
FunctionAttrs [FunctionAttrs] Rename functionattrs -> function-attrs 2020-07-28 09:09:13 -07:00
FunctionImport
GCOVProfiling
GlobalDCE [FunctionAttrs] Rename functionattrs -> function-attrs 2020-07-28 09:09:13 -07:00
GlobalMerge
GlobalOpt [GVN] add early exit to ConstantFoldLoadThroughBitcast [NFC] 2020-07-13 21:44:17 -04:00
GlobalSplit
GuardWidening
GVN [GVN] Rewrite IsValueFullyAvailableInBlock(): no recursion, less false-negatives 2020-07-28 10:19:28 +03:00
GVNHoist
GVNSink [NFCI][SimplifyCFG] Guard common code hoisting with a (default-on) flag 2020-07-20 10:29:57 +03:00
HardwareLoops [SCEV] If Start>=RHS, simplify (Start smin RHS) = RHS for trip counts. 2020-08-03 17:22:42 +01:00
HotColdSplit [HotColdSplit] Add test case for unlikely attribute in outlined function 2020-08-04 13:16:33 -07:00
IndirectBrExpand
IndVarSimplify [FunctionAttrs] Rename functionattrs -> function-attrs 2020-07-28 09:09:13 -07:00
InferAddressSpaces Revert "[InstSimplify] Remove select ?, undef, X -> X and select ?, X, undef -> X transforms" and subsequent patches 2020-07-15 22:02:33 -07:00
InferFunctionAttrs
Inline [NewPM] Don't print 'Invalidating all non-preserved analyses' 2020-07-30 19:40:29 -07:00
InstCombine [InstCombine] fold icmp with 'mul nsw/nuw' and constant operands 2020-08-05 17:29:32 -04:00
InstMerge [BasicAA] Rename deprecated -basicaa to -basic-aa 2020-06-26 20:41:37 -07:00
InstNamer
InstSimplify [InstSimplify] fold icmp with mul nsw and constant operands 2020-08-05 14:38:39 -04:00
InterleavedAccess
Internalize
IRCE [NPM] Bail out when -foo and --passes=foo are both specified 2020-06-22 08:27:13 -07:00
JumpThreading [JumpThreading] Consider freeze as a zero-cost instruction 2020-08-05 14:42:36 +09:00
LCSSA
LICM [tbaa] Rename type-based-aa -> tbaa 2020-07-30 19:51:35 -07:00
LoadStoreVectorizer Rename scoped-noalias -> scoped-noalias-aa 2020-07-24 12:14:27 -07:00
LoopDataPrefetch Re-land "[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support" 2020-07-28 14:00:11 +00:00
LoopDeletion [NPM][IVUsers] Rename ivusers -> iv-users 2020-07-15 09:38:21 -07:00
LoopDistribute [BasicAA] Rename deprecated -basicaa to -basic-aa 2020-06-26 20:41:37 -07:00
LoopFusion [Loop Fusion] Integrate Loop Peeling into Loop Fusion (re-land after fixing ASAN build failures) 2020-07-23 21:02:04 +00:00
LoopIdiom [BasicAA] Enable -basic-aa-recphi by default 2020-08-04 10:43:42 +01:00
LoopInstSimplify
LoopInterchange [BasicAA] Rename deprecated -basicaa to -basic-aa 2020-06-26 20:41:37 -07:00
LoopLoadElim [LAA] Avoid adding pointers to the checks if they are not needed. 2020-07-30 19:21:14 +01:00
LoopPredication [BasicAA] Rename deprecated -basicaa to -basic-aa 2020-06-26 20:41:37 -07:00
LoopReroll [IR] Simplify Use::swap. NFCI. 2020-07-21 12:15:12 +01:00
LoopRotate [NewPM][LoopRotate] Rename rotate -> loop-rotate 2020-08-05 12:25:01 -07:00
LoopSimplify Re-land "[PowerPC] Remove QPX/A2Q BGQ/BGP CNK support" 2020-07-28 14:00:11 +00:00
LoopSimplifyCFG For some tests targeting SystemZ, -march=z13 ---> -mcpu=z13 2020-07-29 19:18:01 -07:00
LoopStrengthReduce [SCEV] don't query getSCEV() for incomplete phis 2020-08-01 02:38:54 -04:00
LoopTransformWarning
LoopUnroll [NewPM] Don't print 'Invalidating all non-preserved analyses' 2020-07-30 19:40:29 -07:00
LoopUnrollAndJam [tbaa] Rename type-based-aa -> tbaa 2020-07-30 19:51:35 -07:00
LoopUnswitch [FunctionAttrs] Rename functionattrs -> function-attrs 2020-07-28 09:09:13 -07:00
LoopVectorize Revert "[LoopVectorizer] Inloop vector reductions" 2020-08-05 10:24:15 -07:00
LoopVersioning [NewPM][LoopVersioning] Port LoopVersioning to NPM 2020-08-03 10:32:09 -07:00
LoopVersioningLICM
LowerAtomic
LowerConstantIntrinsics IR: Define byref parameter attribute 2020-07-20 10:23:09 -04:00
LowerExpectIntrinsic Add support of __builtin_expect_with_probability 2020-06-22 10:21:28 -07:00
LowerGuardIntrinsic
LowerInvoke
LowerMatrixIntrinsics [Matrix] Use TileInfo to create tiled loop nest for matrix multiply. 2020-07-20 21:11:53 +01:00
LowerSwitch
LowerTypeTests
LowerWidenableCondition
MakeGuardsExplicit
Mem2Reg [Mem2Reg] Teach promote to register about droppable instructions 2020-07-24 15:15:38 -05:00
MemCpyOpt Rename scoped-noalias -> scoped-noalias-aa 2020-07-24 12:14:27 -07:00
MergeFunc
MergeICmps
MetaRenamer
NameAnonGlobals
NaryReassociate
NewGVN [NewGVN] Require asserts for crashing tests. 2020-07-29 12:41:05 +01:00
ObjCARC [BasicAA] Rename -disable-basicaa to -disable-basic-aa to be consistent with the canonical name "basic-aa" 2020-06-26 20:55:44 -07:00
OpenMP [OpenMPOpt] Regression test for hiding latency of H2D mem transfers 2020-07-22 20:02:54 -05:00
PartiallyInlineLibCalls
PGOProfile [PGO] Move __profc_ and __profvp_ from their own comdat groups to __profd_'s comdat group 2020-08-03 20:35:50 -07:00
PhaseOrdering [SimplifyCFG][LoopRotate] SimplifyCFG: disable common instruction hoisting by default, enable late in pipeline 2020-07-29 20:05:30 +03:00
PlaceSafepoints
PreISelIntrinsicLowering Remove Passes dependency on CodeGen 2020-06-24 14:52:46 -07:00
PruneEH
Reassociate [FunctionAttrs] Rename functionattrs -> function-attrs 2020-07-28 09:09:13 -07:00
Reg2Mem
RewriteStatepointsForGC [NPM] Bail out when -foo and --passes=foo are both specified 2020-06-22 08:27:13 -07:00
SafeStack
SampleProfile [AutoFDO] Avoid merging inlinee samples multiple times 2020-07-31 09:30:05 -07:00
ScalarizeMaskedMemIntrin [SVE] Scalarize fixed length masked loads and stores. 2020-07-09 10:47:04 +00:00
Scalarizer [Scalarizer] When gathering scattered scalar, don't replace it with itself 2020-07-07 17:03:53 +03:00
SCCP [SCCP] Propagate inequalities 2020-08-04 20:20:52 +02:00
SeparateConstOffsetFromGEP
SimpleLoopUnswitch [SimpleLoopUnswitch] Preserve make.implicit in non-trivial unswitch if legal 2020-07-31 11:38:43 +07:00
SimplifyCFG [SimplifyCFG][LoopRotate] SimplifyCFG: disable common instruction hoisting by default, enable late in pipeline 2020-07-29 20:05:30 +03:00
Sink [BasicAA] Rename deprecated -basicaa to -basic-aa 2020-06-26 20:41:37 -07:00
SLPVectorizer [NFC] GetUnderlyingObject -> getUnderlyingObject 2020-07-30 21:08:24 -07:00
SpeculateAroundPHIs
SpeculativeExecution SpeculativeExecution: Fix for logic change introduced in D81730. 2020-07-09 15:45:23 +03:00
SROA Teach SROA to handle allocas with more than one dbg.declare. 2020-08-04 15:54:51 -07:00
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols
StructurizeCFG
SyntheticCountsPropagation
TailCallElim Revert "[TRE] allow TRE for non-capturing calls." 2020-07-13 00:39:48 +03:00
ThinLTOBitcodeWriter
TypePromotion/ARM
UnifyLoopExits
UniqueInternalLinkageNames
Util Fix tests after 16f777f4217cfcdcf6ddce8eb1e3525a65563c43 2020-07-14 22:52:26 +02:00
VectorCombine/X86 [VectorCombine] add tests for non-zero gep offsets; NFC 2020-08-01 10:18:37 -04:00
WholeProgramDevirt Restore "[WPD/LowerTypeTests] Delay lowering/removal of type tests until after ICP" 2020-07-14 12:16:57 -07:00