diff options
author | Duncan Sands <baldrick@free.fr> | 2009-03-29 13:51:06 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2009-03-29 13:51:06 +0000 |
commit | 004e27cc1bba070f013589cc8e434b03589c3c22 (patch) | |
tree | 1504dace492e590c57213bdbb1c65d7a83bbe235 /lib/CodeGen/SelectionDAG/LegalizeTypes.cpp | |
parent | 54e01d06db7c04208a684e34cb82b0847a077261 (diff) |
Fix PR3899: add support for extracting floats from vectors
when using -soft-float.
Based on a patch by Jakob Stoklund Olesen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67996 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG/LegalizeTypes.cpp')
-rw-r--r-- | lib/CodeGen/SelectionDAG/LegalizeTypes.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp b/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp index 28f7a4db9c..985d345956 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp @@ -858,6 +858,17 @@ SDValue DAGTypeLegalizer::BitConvertToInteger(SDValue Op) { MVT::getIntegerVT(BitWidth), Op); } +/// BitConvertVectorToIntegerVector - Convert to a vector of integers of the +/// same size. +SDValue DAGTypeLegalizer::BitConvertVectorToIntegerVector(SDValue Op) { + assert(Op.getValueType().isVector() && "Only applies to vectors!"); + unsigned EltWidth = Op.getValueType().getVectorElementType().getSizeInBits(); + MVT EltNVT = MVT::getIntegerVT(EltWidth); + unsigned NumElts = Op.getValueType().getVectorNumElements(); + return DAG.getNode(ISD::BIT_CONVERT, Op.getDebugLoc(), + MVT::getVectorVT(EltNVT, NumElts), Op); +} + SDValue DAGTypeLegalizer::CreateStackStoreLoad(SDValue Op, MVT DestVT) { DebugLoc dl = Op.getDebugLoc(); |