Fix the result of the call to use a correct vbitconvert. There is no need to
authorChris Lattner <sabre@nondot.org>
Wed, 17 May 2006 20:49:36 +0000 (20:49 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 17 May 2006 20:49:36 +0000 (20:49 +0000)
use getPackedTypeBreakdown at all here.

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

lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

index 517b760854dd38ac2421475b4a65431efe5ef343..e88b371bafafb979b66d45fbf79516000f17e79f 100644 (file)
@@ -2455,25 +2455,15 @@ TargetLowering::LowerArguments(Function &F, SelectionDAG &DAG) {
 
         // Figure out if there is a Packed type corresponding to this Vector
         // type.  If so, convert to the packed type.
-        bool Supported = false;
         MVT::ValueType TVT = MVT::getVectorType(getValueType(EltTy), NumElems);
-        if (TVT != MVT::Other) {
+        if (TVT != MVT::Other && isTypeLegal(TVT)) {
           SDOperand N = SDOperand(Result, i++);
           // Handle copies from generic vectors to registers.
-          MVT::ValueType PTyElementVT, PTyLegalElementVT;
-          unsigned NE = getPackedTypeBreakdown(PTy, PTyElementVT,
-                                               PTyLegalElementVT);
-          // FIXME: handle NE > 1 cases.
-          if (NE == 1) {
-            N = DAG.getNode(ISD::VBIT_CONVERT, MVT::Vector, N,
-                            DAG.getConstant(NumElems, MVT::i32), 
-                            DAG.getValueType(getValueType(EltTy)));
-            Ops.push_back(N);
-            Supported = true;
-          }
-        }
-
-        if (!Supported) {
+          N = DAG.getNode(ISD::VBIT_CONVERT, MVT::Vector, N,
+                          DAG.getConstant(NumElems, MVT::i32), 
+                          DAG.getValueType(getValueType(EltTy)));
+          Ops.push_back(N);
+        } else {
           assert(0 && "Don't support illegal by-val vector arguments yet!");
           abort();
         }
@@ -2633,16 +2623,11 @@ TargetLowering::LowerCallTo(SDOperand Chain, const Type *RetTy, bool isVarArg,
           // type.  If so, convert to the packed type.
           MVT::ValueType TVT = MVT::getVectorType(getValueType(EltTy), NumElems);
           if (TVT != MVT::Other && isTypeLegal(TVT)) {
-            // Handle copies from generic vectors to registers.
-            MVT::ValueType PTyElementVT, PTyLegalElementVT;
-            unsigned NE = getPackedTypeBreakdown(cast<PackedType>(RetTy),
-                                                 PTyElementVT,
-                                                 PTyLegalElementVT);
             // Insert a VBIT_CONVERT of the FORMAL_ARGUMENTS to a
             // "N x PTyElementVT" MVT::Vector type.
             ResVal = DAG.getNode(ISD::VBIT_CONVERT, MVT::Vector, ResVal,
-                                 DAG.getConstant(NE, MVT::i32), 
-                                 DAG.getValueType(PTyElementVT));
+                                 DAG.getConstant(NumElems, MVT::i32), 
+                                 DAG.getValueType(getValueType(EltTy)));
           } else {
             abort();
           }