diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-03-24 18:45:20 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-03-24 18:45:20 +0000 |
commit | 73d7b6029ac8b52a90f302d06831abcc04c77077 (patch) | |
tree | 2babc3e986d43fd9cb7cb8f7019ddf5624699533 /lib/CodeGen | |
parent | da91bdcfb01435d982e3270eb309480d91fbb9c9 (diff) |
Only to vector shuffle for {x,x,y,y} cases when SCALAR_TO_VECTOR is free.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27071 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r-- | lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index dfafb70585..6acadc1349 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/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<SDOperand> Ops; for(std::map<SDOperand,std::vector<unsigned> >::iterator I=Values.begin(), E = Values.end(); I != E; ++I) { |