mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
- 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:
parent
e825bde125
commit
05bd1b2eee
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user