llvm-6502/test/Transforms
Shuxin Yang a09e18fcfa For rdar://12329730, last piece.
This change attempts to simplify (X^Y) -> X or Y in the user's context if we know that
only bits from X or Y are demanded.

  A minimized case is provided bellow. This change will simplify "t>>16" into "var1 >>16".

  =============================================================
  unsigned foo (unsigned val1, unsigned val2) {
    unsigned t = val1 ^ 1234;
    return (t >> 16) | t; // NOTE: t is used more than once.
  }
  =============================================================

  Note that if the "t" were used only once, the expression would be finally optimized as well.
However, with with this change, the optimization will take place earlier.

  Reviewed by Nadav, Thanks a lot!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169317 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04 22:15:32 +00:00
..
ADCE
ArgumentPromotion
BBVectorize BBVectorize: Correctly merge SubclassOptionalData 2012-11-28 03:04:10 +00:00
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantMerge
ConstProp
CorrelatedValuePropagation
DeadArgElim
DeadStoreElimination
EarlyCSE
FunctionAttrs
GlobalDCE
GlobalOpt Revert previous check in r168581, r169079 as they are still in code review status. 2012-12-01 10:54:28 +00:00
GVN Add error handling in getInt. 2012-11-28 12:13:12 +00:00
IndVarSimplify Follow up to 168711: It's safe to base this analysis on the found compare, just return the value for the right predicate. 2012-11-29 19:07:57 +00:00
Inline Remove the dependent libraries feature. 2012-11-27 09:55:56 +00:00
InstCombine For rdar://12329730, last piece. 2012-12-04 22:15:32 +00:00
InstSimplify Fast-math test for SimplifyInstruction: fold multiply by 0 2012-11-27 01:00:22 +00:00
Internalize
IPConstantProp
JumpThreading
LCSSA
LICM
LoopDeletion
LoopIdiom rdar://12100355 (part 1) 2012-11-29 19:38:54 +00:00
LoopRotate
LoopSimplify
LoopStrengthReduce
LoopUnroll
LoopUnswitch
LoopVectorize Add support for reduction variables when IF-conversion is enabled. 2012-12-04 18:17:33 +00:00
LowerAtomic
LowerExpectIntrinsic
LowerInvoke
LowerSwitch
Mem2Reg
MemCpyOpt
MergeFunc
MetaRenamer
ObjCARC
PhaseOrdering
PruneEH
Reassociate Fix PR14060, an infinite loop in reassociate. The problem was that one of the 2012-11-18 19:27:01 +00:00
ScalarRepl
SCCP
SimplifyCFG Fix logic to determine whether to turn a switch into a lookup table. When 2012-11-30 02:02:42 +00:00
SimplifyLibCalls instcombine: Migrate puts optimizations 2012-11-29 19:15:17 +00:00
Sink
SROA SROA: Avoid struct and array types early to avoid creating an overly large integer type. 2012-12-01 11:53:32 +00:00
StripSymbols
TailCallElim
TailDup