diff options
author | Chris Lattner <sabre@nondot.org> | 2010-01-05 21:04:47 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-01-05 21:04:47 +0000 |
commit | 718bf3f89d69f76791fec73b1edd55c450a93f12 (patch) | |
tree | 9436dce2cfda46733cfd91d63479dc0bd86cfe40 | |
parent | b31defe94caac68561344f78696be3a048413ec9 (diff) |
move a zext specific xform out of commonIntCastTransforms into visitZExt and modernize it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92770 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/InstCombine/InstCombineCasts.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/lib/Transforms/InstCombine/InstCombineCasts.cpp b/lib/Transforms/InstCombine/InstCombineCasts.cpp index e2bb3fbe04..4b8c5534df 100644 --- a/lib/Transforms/InstCombine/InstCombineCasts.cpp +++ b/lib/Transforms/InstCombine/InstCombineCasts.cpp @@ -645,16 +645,6 @@ Instruction *InstCombiner::commonIntCastTransforms(CastInst &CI) { cast<BinaryOperator>(SrcI)->getOpcode(), Op0c, Op1c); } } - - // cast (xor bool X, true) to int --> xor (cast bool X to int), 1 - if (isa<ZExtInst>(CI) && SrcBitSize == 1 && - SrcI->getOpcode() == Instruction::Xor && - Op1 == ConstantInt::getTrue(CI.getContext()) && - (!Op0->hasOneUse() || !isa<CmpInst>(Op0))) { - Value *New = Builder->CreateZExt(Op0, DestTy, Op0->getName()); - return BinaryOperator::CreateXor(New, - ConstantInt::get(CI.getType(), 1)); - } break; } return 0; @@ -933,6 +923,15 @@ Instruction *InstCombiner::visitZExt(ZExtInst &CI) { } } + // zext (xor i1 X, true) to i32 --> xor (zext i1 X to i32), 1 + Value *X; + if (SrcI && SrcI->getType()->isInteger(1) && + match(SrcI, m_Not(m_Value(X))) && + (!X->hasOneUse() || !isa<CmpInst>(X))) { + Value *New = Builder->CreateZExt(X, CI.getType()); + return BinaryOperator::CreateXor(New, ConstantInt::get(CI.getType(), 1)); + } + return 0; } |