[X86] Replace custom lowering of vXi1 SINT_TO_FP/UINT_TO_FP with promotion.
The custom lowering was just doing the same thing promotion would do. llvm-svn: 321630
This commit is contained in:
parent
a4f9997675
commit
e5943bb337
|
|
@ -1151,12 +1151,12 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
|
||||||
setOperationAction(ISD::EXTRACT_VECTOR_ELT, MVT::v1i1, Custom);
|
setOperationAction(ISD::EXTRACT_VECTOR_ELT, MVT::v1i1, Custom);
|
||||||
setOperationAction(ISD::BUILD_VECTOR, MVT::v1i1, Custom);
|
setOperationAction(ISD::BUILD_VECTOR, MVT::v1i1, Custom);
|
||||||
|
|
||||||
setOperationAction(ISD::SINT_TO_FP, MVT::v16i1, Custom);
|
setOperationPromotedToType(ISD::SINT_TO_FP, MVT::v16i1, MVT::v16i32);
|
||||||
setOperationAction(ISD::UINT_TO_FP, MVT::v16i1, Custom);
|
setOperationPromotedToType(ISD::UINT_TO_FP, MVT::v16i1, MVT::v16i32);
|
||||||
setOperationAction(ISD::SINT_TO_FP, MVT::v8i1, Custom);
|
setOperationPromotedToType(ISD::SINT_TO_FP, MVT::v8i1, MVT::v8i32);
|
||||||
setOperationAction(ISD::UINT_TO_FP, MVT::v8i1, Custom);
|
setOperationPromotedToType(ISD::UINT_TO_FP, MVT::v8i1, MVT::v8i32);
|
||||||
setOperationAction(ISD::SINT_TO_FP, MVT::v4i1, Custom);
|
setOperationPromotedToType(ISD::SINT_TO_FP, MVT::v4i1, MVT::v4i32);
|
||||||
setOperationAction(ISD::UINT_TO_FP, MVT::v4i1, Custom);
|
setOperationPromotedToType(ISD::UINT_TO_FP, MVT::v4i1, MVT::v4i32);
|
||||||
setOperationAction(ISD::SINT_TO_FP, MVT::v2i1, Custom);
|
setOperationAction(ISD::SINT_TO_FP, MVT::v2i1, Custom);
|
||||||
setOperationAction(ISD::UINT_TO_FP, MVT::v2i1, Custom);
|
setOperationAction(ISD::UINT_TO_FP, MVT::v2i1, Custom);
|
||||||
|
|
||||||
|
|
@ -15650,7 +15650,6 @@ SDValue X86TargetLowering::LowerSINT_TO_FP(SDValue Op,
|
||||||
DAG.getNode(ISD::CONCAT_VECTORS, dl, MVT::v4i32, Src,
|
DAG.getNode(ISD::CONCAT_VECTORS, dl, MVT::v4i32, Src,
|
||||||
DAG.getUNDEF(SrcVT)));
|
DAG.getUNDEF(SrcVT)));
|
||||||
}
|
}
|
||||||
if (SrcVT.getVectorElementType() == MVT::i1) {
|
|
||||||
if (SrcVT == MVT::v2i1) {
|
if (SrcVT == MVT::v2i1) {
|
||||||
// For v2i1, we need to widen to v4i1 first.
|
// For v2i1, we need to widen to v4i1 first.
|
||||||
assert(VT == MVT::v2f64 && "Unexpected type");
|
assert(VT == MVT::v2f64 && "Unexpected type");
|
||||||
|
|
@ -15659,11 +15658,6 @@ SDValue X86TargetLowering::LowerSINT_TO_FP(SDValue Op,
|
||||||
return DAG.getNode(X86ISD::CVTSI2P, dl, Op.getValueType(),
|
return DAG.getNode(X86ISD::CVTSI2P, dl, Op.getValueType(),
|
||||||
DAG.getNode(ISD::SIGN_EXTEND, dl, MVT::v4i32, Src));
|
DAG.getNode(ISD::SIGN_EXTEND, dl, MVT::v4i32, Src));
|
||||||
}
|
}
|
||||||
|
|
||||||
MVT IntegerVT = MVT::getVectorVT(MVT::i32, SrcVT.getVectorNumElements());
|
|
||||||
return DAG.getNode(ISD::SINT_TO_FP, dl, Op.getValueType(),
|
|
||||||
DAG.getNode(ISD::SIGN_EXTEND, dl, IntegerVT, Src));
|
|
||||||
}
|
|
||||||
return SDValue();
|
return SDValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -15999,7 +15993,6 @@ static SDValue lowerUINT_TO_FP_vec(SDValue Op, SelectionDAG &DAG,
|
||||||
MVT SrcVT = N0.getSimpleValueType();
|
MVT SrcVT = N0.getSimpleValueType();
|
||||||
SDLoc dl(Op);
|
SDLoc dl(Op);
|
||||||
|
|
||||||
if (SrcVT.getVectorElementType() == MVT::i1) {
|
|
||||||
if (SrcVT == MVT::v2i1) {
|
if (SrcVT == MVT::v2i1) {
|
||||||
// For v2i1, we need to widen to v4i1 first.
|
// For v2i1, we need to widen to v4i1 first.
|
||||||
assert(Op.getValueType() == MVT::v2f64 && "Unexpected type");
|
assert(Op.getValueType() == MVT::v2f64 && "Unexpected type");
|
||||||
|
|
@ -16009,11 +16002,6 @@ static SDValue lowerUINT_TO_FP_vec(SDValue Op, SelectionDAG &DAG,
|
||||||
DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::v4i32, N0));
|
DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::v4i32, N0));
|
||||||
}
|
}
|
||||||
|
|
||||||
MVT IntegerVT = MVT::getVectorVT(MVT::i32, SrcVT.getVectorNumElements());
|
|
||||||
return DAG.getNode(ISD::UINT_TO_FP, dl, Op.getValueType(),
|
|
||||||
DAG.getNode(ISD::ZERO_EXTEND, dl, IntegerVT, N0));
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (SrcVT.SimpleTy) {
|
switch (SrcVT.SimpleTy) {
|
||||||
default:
|
default:
|
||||||
llvm_unreachable("Custom UINT_TO_FP is not supported!");
|
llvm_unreachable("Custom UINT_TO_FP is not supported!");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue