Enable a couple xforms for packed vectors (undef | v) -> -1 for packed.
authorChris Lattner <sabre@nondot.org>
Thu, 4 Jan 2007 02:12:40 +0000 (02:12 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 4 Jan 2007 02:12:40 +0000 (02:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32858 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/SCCP.cpp

index 08c5d27cd5191a1d08070e006da066e98b46cfd6..41174808100c8765afdc1a6b2c6157fe9b9238af 100644 (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: