mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
delete some obviously dead vector operations, which deletes a few thousand
operations from Duraids example. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37582 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bc198eeba6
commit
041a6c9048
@ -3245,8 +3245,10 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) {
|
||||
return &I;
|
||||
} else {
|
||||
if (ConstantVector *CP = dyn_cast<ConstantVector>(Op1)) {
|
||||
if (CP->isAllOnesValue())
|
||||
if (CP->isAllOnesValue()) // X & <-1,-1> -> X
|
||||
return ReplaceInstUsesWith(I, I.getOperand(0));
|
||||
} else if (isa<ConstantAggregateZero>(Op1)) {
|
||||
return ReplaceInstUsesWith(I, Op1); // X & <0,0> -> <0,0>
|
||||
}
|
||||
}
|
||||
|
||||
@ -3714,7 +3716,14 @@ Instruction *InstCombiner::visitOr(BinaryOperator &I) {
|
||||
if (SimplifyDemandedBits(&I, APInt::getAllOnesValue(BitWidth),
|
||||
KnownZero, KnownOne))
|
||||
return &I;
|
||||
} else if (isa<ConstantAggregateZero>(Op1)) {
|
||||
return ReplaceInstUsesWith(I, Op0); // X | <0,0> -> X
|
||||
} else if (ConstantVector *CP = dyn_cast<ConstantVector>(Op1)) {
|
||||
if (CP->isAllOnesValue()) // X | <-1,-1> -> <-1,-1>
|
||||
return ReplaceInstUsesWith(I, I.getOperand(1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
// or X, -1 == -1
|
||||
if (ConstantInt *RHS = dyn_cast<ConstantInt>(Op1)) {
|
||||
@ -4107,6 +4116,8 @@ Instruction *InstCombiner::visitXor(BinaryOperator &I) {
|
||||
if (SimplifyDemandedBits(&I, APInt::getAllOnesValue(BitWidth),
|
||||
KnownZero, KnownOne))
|
||||
return &I;
|
||||
} else if (isa<ConstantAggregateZero>(Op1)) {
|
||||
return ReplaceInstUsesWith(I, Op0); // X ^ <0,0> -> X
|
||||
}
|
||||
|
||||
if (ConstantInt *RHS = dyn_cast<ConstantInt>(Op1)) {
|
||||
|
Loading…
Reference in New Issue
Block a user