diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2013-05-06 21:21:31 +0000 | 
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2013-05-06 21:21:31 +0000 | 
| commit | 70f286d95fb9c6ff5483a75097404d61b302727c (patch) | |
| tree | 913c1455b8050ac0827b8b0e852758dac8ad4fc6 /llvm/lib/Transforms | |
| parent | 0cdce8351a28bdeef853a69c127803e74875c942 (diff) | |
| download | bcm5719-llvm-70f286d95fb9c6ff5483a75097404d61b302727c.tar.gz bcm5719-llvm-70f286d95fb9c6ff5483a75097404d61b302727c.zip | |
InstCombine: (X ^ signbit) + C -> X + (signbit ^ C)
llvm-svn: 181249
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp index 1aa51d06cb0..166f8dfdb4a 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp @@ -974,6 +974,11 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {            return BinaryOperator::CreateSub(ConstantExpr::getAdd(XorRHS, CI),                                             XorLHS);        } +      // (X + signbit) + C could have gotten canonicalized to (X ^ signbit) + C, +      // transform them into (X + (signbit ^ C)) +      if (XorRHS->getValue().isSignBit()) +          return BinaryOperator::CreateAdd(XorLHS, +                                           ConstantExpr::getXor(XorRHS, CI));      }    } | 

