Enable a couple xforms for packed vectors (undef | v) -> -1 for packed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32858 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2007-01-04 02:12:40 +00:00
parent e94d8b2f53
commit 7ce2f8b265

View File

@ -700,9 +700,10 @@ void SCCPSolver::visitBinaryOperator(Instruction &I) {
// Could annihilate value.
if (I.getOpcode() == Instruction::And)
markConstant(IV, &I, Constant::getNullValue(I.getType()));
else if (Constant *Ones = ConstantInt::getAllOnesValue(I.getType())) {
markConstant(IV, &I, Ones);
}
else if (const PackedType *PT = dyn_cast<PackedType>(I.getType()))
markConstant(IV, &I, ConstantPacked::getAllOnesValue(PT));
else
markConstant(IV, &I, ConstantInt::getAllOnesValue(I.getType()));
return;
} else {
if (I.getOpcode() == Instruction::And) {
@ -1233,11 +1234,11 @@ bool SCCPSolver::ResolvedUndefsIn(Function &F) {
case Instruction::Or:
// undef | X -> -1. X could be -1.
if (Constant *Ones = ConstantInt::getAllOnesValue(ITy)) {
markForcedConstant(LV, I, Ones);
return true;
}
break;
if (const PackedType *PTy = dyn_cast<PackedType>(ITy))
markForcedConstant(LV, I, ConstantPacked::getAllOnesValue(PTy));
else
markForcedConstant(LV, I, ConstantInt::getAllOnesValue(ITy));
return true;
case Instruction::SDiv:
case Instruction::UDiv: