llvm-project/llvm/test/Transforms
Quentin Colombet 5ab555532b [InstCombiner] Expose opportunities to merge subtract and comparison.
Several architectures use the same instruction to perform both a comparison and
a subtract. The instruction selection framework does not allow to consider
different basic blocks to expose such fusion opportunities.

Therefore, these instructions are “merged” by CSE at MI IR level.

To increase the likelihood of CSE to apply in such situation, we reorder the
operands of the comparison, when they have the same complexity, so that they
matches the order of the most frequent subtract.
E.g.,

icmp A, B
...
sub B, A

<rdar://problem/14514580>

llvm-svn: 190352
2013-09-09 20:56:48 +00:00
..
ADCE [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
ArgumentPromotion [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
BBVectorize TBAA: remove !tbaa from testing cases when they are not needed. 2013-08-21 22:20:53 +00:00
BlockPlacement [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
BranchFolding
CodeExtractor [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
CodeGenPrepare [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
ConstProp Teach ConstantFolding about pointer address spaces 2013-08-20 21:20:04 +00:00
ConstantMerge [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
CorrelatedValuePropagation [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
DeadArgElim Debug Info Testing: update context from empty string to null. 2013-09-08 03:11:54 +00:00
DeadStoreElimination [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
DebugIR [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
EarlyCSE [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
FunctionAttrs [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
GCOVProfiling Debug Info Testing: update context from empty string to null. 2013-09-08 03:11:54 +00:00
GVN [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
GlobalDCE [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
GlobalOpt Debug Info Testing: update context from empty string to null. 2013-09-08 03:11:54 +00:00
IPConstantProp [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
IndVarSimplify [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
Inline Handle address spaces in TargetTransformInfo 2013-08-28 22:41:57 +00:00
InstCombine [InstCombiner] Expose opportunities to merge subtract and comparison. 2013-09-09 20:56:48 +00:00
InstSimplify [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
Internalize Merge these 2 tests in a single file. 2013-09-04 19:19:32 +00:00
JumpThreading [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
LCSSA [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
LICM Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields. 2013-09-06 21:03:58 +00:00
LoopDeletion [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
LoopIdiom Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields. 2013-09-06 21:03:58 +00:00
LoopRotate Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields. 2013-09-06 21:03:58 +00:00
LoopSimplify [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
LoopStrengthReduce [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
LoopUnroll [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
LoopUnswitch [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
LoopVectorize Debug Info Testing: update context from empty string to null. 2013-09-08 03:11:54 +00:00
LowerAtomic [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
LowerExpectIntrinsic [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
LowerInvoke [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
LowerSwitch Revert patches to add case-range support for PR1255. 2013-09-09 19:14:35 +00:00
Mem2Reg Debug Info: add an identifier field to DICompositeType. 2013-08-26 22:39:55 +00:00
MemCpyOpt [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
MergeFunc [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
MetaRenamer [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
ObjCARC Debug Info Testing: update context from empty string to null. 2013-09-08 03:11:54 +00:00
PhaseOrdering [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
PruneEH [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
Reassociate [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
Reg2Mem [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
SCCP [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
SLPVectorizer/X86 Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields. 2013-09-06 21:03:58 +00:00
SROA [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
ScalarRepl Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields. 2013-09-06 21:03:58 +00:00
SimplifyCFG Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields. 2013-09-06 21:03:58 +00:00
Sink [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
StripSymbols Fix a test to not fail for users with my name. :) 2013-08-29 00:41:22 +00:00
StructurizeCFG [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
TailCallElim [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
TailDup [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00