remove an old hack that avoided creating MMX datatypes. The
authorChris Lattner <sabre@nondot.org>
Sun, 23 Jan 2011 06:40:33 +0000 (06:40 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 23 Jan 2011 06:40:33 +0000 (06:40 +0000)
X86 backend has been fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124064 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/ScalarReplAggregates.cpp
test/Transforms/ScalarRepl/vector_promote.ll

index 86c4e59a97dd4302d814a37215b380df293e8bfd..02cbfae05896f7dc81194abfa797ced318642f54 100644 (file)
@@ -247,26 +247,6 @@ private:
 } // end anonymous namespace.
 
 
-/// IsVerbotenVectorType - Return true if this is a vector type ScalarRepl isn't
-/// allowed to form.  We do this to avoid MMX types, which is a complete hack,
-/// but is required until the backend is fixed.
-static bool IsVerbotenVectorType(const VectorType *VTy, const Instruction *I) {
-  StringRef Triple(I->getParent()->getParent()->getParent()->getTargetTriple());
-  if (!Triple.startswith("i386") &&
-      !Triple.startswith("x86_64"))
-    return false;
-
-  // Reject all the MMX vector types.
-  switch (VTy->getNumElements()) {
-  default: return false;
-  case 1: return VTy->getElementType()->isIntegerTy(64);
-  case 2: return VTy->getElementType()->isIntegerTy(32);
-  case 4: return VTy->getElementType()->isIntegerTy(16);
-  case 8: return VTy->getElementType()->isIntegerTy(8);
-  }
-}
-
-
 /// TryConvert - Analyze the specified alloca, and if it is safe to do so,
 /// rewrite it to be a new alloca which is mem2reg'able.  This returns the new
 /// alloca if possible or null if not.
@@ -283,8 +263,7 @@ AllocaInst *ConvertToScalarInfo::TryConvert(AllocaInst *AI) {
   // we just get a lot of insert/extracts.  If at least one vector is
   // involved, then we probably really do have a union of vector/array.
   const Type *NewTy;
-  if (VectorTy && VectorTy->isVectorTy() && HadAVector &&
-      !IsVerbotenVectorType(cast<VectorType>(VectorTy), AI)) {
+  if (VectorTy && VectorTy->isVectorTy() && HadAVector) {
     DEBUG(dbgs() << "CONVERT TO VECTOR: " << *AI << "\n  TYPE = "
           << *VectorTy << '\n');
     NewTy = VectorTy;  // Use the vector type.
index fe55426b24a19743c042edbb534c8d1f1278b465..37cb49f539d6071cc72a01f38195e70981257015 100644 (file)
@@ -87,8 +87,6 @@ define i32 @test5(float %X) {  ;; should turn into bitcast.
 }
 
 
-;; should not turn into <1 x i64> - It is a banned MMX datatype.
-;; rdar://8380055
 define i64 @test6(<2 x float> %X) {
        %X_addr = alloca <2 x float>
         store <2 x float> %X, <2 x float>* %X_addr
@@ -96,7 +94,7 @@ define i64 @test6(<2 x float> %X) {
        %tmp = load i64* %P
        ret i64 %tmp
 ; CHECK: @test6
-; CHECK-NEXT: bitcast <2 x float> %X to i64
-; CHECK-NEXT: ret i64
+; CHECK: bitcast <2 x float> %X to <1 x i64>
+; CHECK: ret i64
 }