From 68d9bf26c88ae8ab702e68dded98d8fddbbc83bb Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Fri, 24 Mar 2006 18:45:20 +0000 Subject: [PATCH] Only to vector shuffle for {x,x,y,y} cases when SCALAR_TO_VECTOR is free. llvm-svn: 27071 --- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index dfafb70585f2..6acadc1349d8 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -3209,7 +3209,8 @@ SDOperand SelectionDAGLegalize::ExpandBUILD_VECTOR(SDNode *Node) { SDOperand ShuffleMask = DAG.getNode(ISD::BUILD_VECTOR, MaskVT, MaskVec); // If the target supports VECTOR_SHUFFLE and this shuffle mask, use it. - if (TLI.isShuffleLegal(Node->getValueType(0), ShuffleMask)) { + if (TLI.isShuffleLegal(Node->getValueType(0), ShuffleMask) && + TLI.isOperationLegal(ISD::SCALAR_TO_VECTOR, Node->getValueType(0))) { std::vector Ops; for(std::map >::iterator I=Values.begin(), E = Values.end(); I != E; ++I) {