- instcombine (~(a < b)) into (a >= b)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3406 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2002-08-20 18:24:26 +00:00
parent e825bde125
commit 05bd1b2eee

View File

@ -328,10 +328,18 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {
if (Op1C->isNullValue())
return ReplaceInstUsesWith(I, Op0);
// xor (xor X, -1), -1 = not (not X) = X
if (Op1C->isAllOnesValue())
// Is this a "NOT" instruction?
if (Op1C->isAllOnesValue()) {
// xor (xor X, -1), -1 = not (not X) = X
if (Value *X = dyn_castNotInst(Op0))
return ReplaceInstUsesWith(I, X);
// xor (setcc A, B), true = not (setcc A, B) = setncc A, B
if (SetCondInst *SCI = dyn_cast<SetCondInst>(Op0))
if (SCI->use_size() == 1)
return new SetCondInst(SCI->getInverseCondition(),
SCI->getOperand(0), SCI->getOperand(1));
}
}
return Changed ? &I : 0;