1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/test/Transforms
Chuang-Yu Cheng 7e3b6f3bce Teaching SimplifyCFG to recognize the Or-Mask trick that InstCombine uses to
reduce the number of comparisons.

Specifically, InstCombine can turn:
  (i == 5334 || i == 5335)
into:
  ((i | 1) == 5335)

SimplifyCFG was already able to detect the pattern:
  (i == 5334 || i == 5335)
to:
  ((i & -2) == 5334)

This patch supersedes D21315 and resolves PR27555
(https://llvm.org/bugs/show_bug.cgi?id=27555).

Thanks to David and Chandler for the suggestions!

Author: Thomas Jablin (tjablin)
Reviewers: majnemer chandlerc halfdan cycheng

http://reviews.llvm.org/D21397

llvm-svn: 273639
2016-06-24 01:59:00 +00:00
..
ADCE
AddDiscriminators [PM] Port Add discriminator pass to new PM 2016-06-15 21:51:30 +00:00
AlignmentFromAssumptions [PM] Port AlignmentFromAssumptions to the new PM. 2016-06-15 06:18:01 +00:00
ArgumentPromotion Remove the ScalarReplAggregates pass 2016-06-15 00:19:09 +00:00
AtomicExpand Support expanding partial-word cmpxchg to full-word cmpxchg in AtomicExpandPass. 2016-06-17 18:11:48 +00:00
BBVectorize
BDCE
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantHoisting
ConstantMerge
ConstProp
CorrelatedValuePropagation
CrossDSOCFI
DCE
DeadArgElim [PM] Port DeadArgumentElimination to the new PM 2016-06-12 09:16:39 +00:00
DeadStoreElimination Allow DeadStoreElimination to track combinations of partial later wrties 2016-06-23 13:46:39 +00:00
EarlyCSE [EarlyCSE] Fold invariant loads 2016-06-16 20:47:57 +00:00
EliminateAvailableExternally
Float2Int
ForcedFunctionAttrs
FunctionAttrs [PM] Port ReversePostOrderFunctionAttrs to the new PM 2016-06-12 07:48:51 +00:00
FunctionImport
GCOVProfiling [PM] Port GCOVProfiler pass to the new pass manager 2016-06-05 05:12:23 +00:00
GlobalDCE
GlobalMerge
GlobalOpt IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
GuardWidening
GVN
IndVarSimplify Upgrade other old memset/memcpy signatures in tests causing buildbot failures with rL273568. 2016-06-23 16:34:52 +00:00
InferFunctionAttrs
Inline Upgrade old memset/memcpy signatures (without isVolatile argument) in tests 2016-06-22 15:16:06 +00:00
InstCombine InstCombine rule to fold trunc when value available 2016-06-23 20:22:22 +00:00
InstMerge [PM] Port MergedLoadStoreMotion to the new pass manager, take two. 2016-06-17 19:10:09 +00:00
InstSimplify [ValueTracking] improve ComputeNumSignBits for vector constants 2016-06-22 19:20:59 +00:00
Internalize [Internalize] Test that __stack_chk_{guard, fail} are not internalized. 2016-06-05 19:08:54 +00:00
IPConstantProp
IRCE
JumpThreading Revert r272891 "[JumpThreading] Prevent dangling pointer problems in BranchProbabilityInfo" 2016-06-16 16:25:53 +00:00
LCSSA [PM] Port LCSSA to the new PM. 2016-06-09 19:44:46 +00:00
LICM [ValueTracking] Calls to @llvm.assume always return 2016-06-14 20:23:16 +00:00
LoadCombine [LoadCombine] Combine Loads formed from GEPS with negative indexes 2016-06-19 06:14:56 +00:00
LoopDataPrefetch [Kryo] Enable loop prefetcher. 2016-06-21 22:47:56 +00:00
LoopDeletion
LoopDistribute [LAA] Enable symbolic stride speculation for all LAA clients 2016-06-17 22:35:41 +00:00
LoopIdiom Reapply "[LoopIdiom] Don't remove dead operands manually" 2016-06-20 16:03:25 +00:00
LoopInterchange
LoopLoadElim [LAA] Enable symbolic stride speculation for all LAA clients 2016-06-17 22:35:41 +00:00
LoopReroll Be wary of abnormal exits from loop when exploiting UB 2016-06-09 01:13:59 +00:00
LoopRotate
LoopSimplify Remove the ScalarReplAggregates pass 2016-06-15 00:19:09 +00:00
LoopSimplifyCFG
LoopStrengthReduce AMDGPU: Run pointer optimization passes 2016-06-15 00:11:01 +00:00
LoopUnroll [LoopUnrollAnalyzer] Fix a bug in UnrolledInstAnalyzer::visitLoad. 2016-06-23 14:31:31 +00:00
LoopUnswitch Remove the ScalarReplAggregates pass 2016-06-15 00:19:09 +00:00
LoopVectorize reverted the prev commit due to assertion failure 2016-06-21 12:10:11 +00:00
LoopVersioning [LoopVer] Update all existing PHIs in the exit block 2016-06-14 09:38:54 +00:00
LoopVersioningLICM
LowerAtomic
LowerBitSets
LowerExpectIntrinsic
LowerGuardIntrinsic
LowerInvoke
LowerSwitch
Mem2Reg [PM] Port Mem2Reg to the new pass manager. 2016-06-14 03:22:22 +00:00
MemCpyOpt [PM] Port MemCpyOpt to the new PM. 2016-06-14 02:44:55 +00:00
MergeFunc
MetaRenamer
NameAnonFunctions
NaryReassociate
ObjCARC
PartiallyInlineLibCalls
PGOProfile Fix PR28219: Use profile summary from reader and not compute it 2016-06-21 19:29:49 +00:00
PhaseOrdering
PlaceSafepoints
PreISelIntrinsicLowering
PruneEH
Reassociate
Reg2Mem
RewriteStatepointsForGC
SafeStack [safestack] Sink unsafe address computation to each use. 2016-06-16 22:34:04 +00:00
SampleProfile Pass AssumptionCacheTracker from SampleProfileLoader to Inliner 2016-06-20 20:53:40 +00:00
Scalarizer PR27938: Don't remove valid DebugLoc in Scalarizer 2016-06-16 10:48:54 +00:00
SCCP [SCCP] Don't assume all Constants are ConstantInt 2016-06-23 00:14:29 +00:00
SeparateConstOffsetFromGEP
SimplifyCFG Teaching SimplifyCFG to recognize the Or-Mask trick that InstCombine uses to 2016-06-24 01:59:00 +00:00
Sink
SLPVectorizer [SLPVectorizer][X86] Added ceil/floor/nearbyint/rint/trunc vectorization tests 2016-06-22 14:07:46 +00:00
SpeculativeExecution
SROA
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols Fix strip-dead-debug-info test if path contains "bar". 2016-06-16 19:39:55 +00:00
StructurizeCFG
TailCallElim
Util
WholeProgramDevirt [PM] Port WholeProgramDevirt to the new pass manager. 2016-06-14 21:44:19 +00:00