1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00

[X86] Mark vector STRICT_FP_ROUND as Legal instead of Custom.

The Custom handler doesn't do anything for these nodes anyway.

SelectionDAGISel won't mutate them if they are Legal or Custom.
X86 has custom code for mutating them due to missing isel patterns.
When the isel patterns are added Legal will be the right answer.
So go ahead a change it now since that's where we'll end up.
This commit is contained in:
Craig Topper 2019-11-20 13:01:29 -08:00
parent 75e10dcf71
commit 079091fb71

View File

@ -814,7 +814,9 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
setOperationAction(ISD::LOAD, MVT::v2f32, Custom);
setOperationAction(ISD::STORE, MVT::v2f32, Custom);
setOperationAction(ISD::STRICT_FP_ROUND, MVT::v4f32, Custom);
// FIXME: Currently mutated to non-strict form in X86ISelDAGToDAG::Select,
// but its sufficient to pretend their Legal since they will be someday.
setOperationAction(ISD::STRICT_FP_ROUND, MVT::v4f32, Legal);
}
if (!Subtarget.useSoftFloat() && Subtarget.hasSSE2()) {
@ -1104,7 +1106,9 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
setOperationAction(ISD::SINT_TO_FP, MVT::v8i32, Legal);
setOperationAction(ISD::STRICT_FP_ROUND, MVT::v8f32, Custom);
// FIXME: Currently mutated to non-strict form in X86ISelDAGToDAG::Select,
// but its sufficient to pretend their Legal since they will be someday.
setOperationAction(ISD::STRICT_FP_ROUND, MVT::v8f32, Legal);
if (!Subtarget.hasAVX512())
setOperationAction(ISD::BITCAST, MVT::v32i1, Custom);
@ -1367,7 +1371,9 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
setOperationAction(ISD::SINT_TO_FP, MVT::v16i32, Legal);
setOperationAction(ISD::UINT_TO_FP, MVT::v16i32, Legal);
setOperationAction(ISD::STRICT_FP_ROUND, MVT::v16f32, Custom);
// FIXME: Currently mutated to non-strict form in X86ISelDAGToDAG::Select,
// but its sufficient to pretend their Legal since they will be someday.
setOperationAction(ISD::STRICT_FP_ROUND, MVT::v16f32, Legal);
setTruncStoreAction(MVT::v8i64, MVT::v8i8, Legal);
setTruncStoreAction(MVT::v8i64, MVT::v8i16, Legal);