1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00

delete some obviously dead vector operations, which deletes a few thousand

operations from Duraids example.

llvm-svn: 37582
This commit is contained in:
Chris Lattner 2007-06-15 05:26:55 +00:00
parent 6f348e1c75
commit 96c6cf8b89

View File

@ -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,8 +3716,15 @@ 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)) {
ConstantInt *C1 = 0; Value *X = 0;
@ -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)) {