mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 06:30:16 +00:00
Get this working with LegalizeTypes: (1) don't
assume that i64 has been turned into a BUILD_PAIR node (when called from LegalizeTypes this hasn't happened yet) and don't use a vector shuffle mask with an illegal element type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57972 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cc499a4002
commit
6b6aeb3806
@ -4760,15 +4760,19 @@ SDValue X86TargetLowering::LowerUINT_TO_FP(SDValue Op, SelectionDAG &DAG) {
|
||||
SDValue UnpcklMask = DAG.getNode(ISD::BUILD_VECTOR, MVT::v4i32, &MaskVec[0],
|
||||
MaskVec.size());
|
||||
SmallVector<SDValue, 4> MaskVec2;
|
||||
MaskVec2.push_back(DAG.getConstant(1, MVT::i64));
|
||||
MaskVec2.push_back(DAG.getConstant(0, MVT::i64));
|
||||
SDValue ShufMask = DAG.getNode(ISD::BUILD_VECTOR, MVT::v2i64, &MaskVec2[0],
|
||||
MaskVec2.push_back(DAG.getConstant(1, MVT::i32));
|
||||
MaskVec2.push_back(DAG.getConstant(0, MVT::i32));
|
||||
SDValue ShufMask = DAG.getNode(ISD::BUILD_VECTOR, MVT::v2i32, &MaskVec2[0],
|
||||
MaskVec2.size());
|
||||
|
||||
SDValue XR1 = DAG.getNode(ISD::SCALAR_TO_VECTOR, MVT::v4i32,
|
||||
Op.getOperand(0).getOperand(1));
|
||||
DAG.getNode(ISD::EXTRACT_ELEMENT, MVT::i32,
|
||||
Op.getOperand(0),
|
||||
DAG.getIntPtrConstant(1)));
|
||||
SDValue XR2 = DAG.getNode(ISD::SCALAR_TO_VECTOR, MVT::v4i32,
|
||||
Op.getOperand(0).getOperand(0));
|
||||
DAG.getNode(ISD::EXTRACT_ELEMENT, MVT::i32,
|
||||
Op.getOperand(0),
|
||||
DAG.getIntPtrConstant(0)));
|
||||
SDValue Unpck1 = DAG.getNode(ISD::VECTOR_SHUFFLE, MVT::v4i32,
|
||||
XR1, XR2, UnpcklMask);
|
||||
SDValue CLod0 = DAG.getLoad(MVT::v4i32, DAG.getEntryNode(), CPIdx0,
|
||||
|
Loading…
x
Reference in New Issue
Block a user