@@ -541,18 +541,15 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
541
541
setOperationAction(ISD::STRICT_UINT_TO_FP, MVT::i32, Custom);
542
542
setOperationAction(ISD::STRICT_UINT_TO_FP, MVT::i64, Custom);
543
543
setOperationAction(ISD::STRICT_UINT_TO_FP, MVT::i128, Custom);
544
+ if (Subtarget->hasFPARMv8())
545
+ setOperationAction(ISD::FP_ROUND, MVT::f16, Custom);
544
546
setOperationAction(ISD::FP_ROUND, MVT::f32, Custom);
545
547
setOperationAction(ISD::FP_ROUND, MVT::f64, Custom);
546
- setOperationAction(ISD::STRICT_FP_ROUND, MVT::f16, Custom);
548
+ if (Subtarget->hasFPARMv8())
549
+ setOperationAction(ISD::STRICT_FP_ROUND, MVT::f16, Custom);
547
550
setOperationAction(ISD::STRICT_FP_ROUND, MVT::f32, Custom);
548
551
setOperationAction(ISD::STRICT_FP_ROUND, MVT::f64, Custom);
549
552
550
- if (Subtarget->hasFPARMv8()) {
551
- setOperationAction(ISD::BITCAST, MVT::i16, Custom);
552
- setOperationAction(ISD::BITCAST, MVT::f16, Custom);
553
- setOperationAction(ISD::BITCAST, MVT::bf16, Custom);
554
- }
555
-
556
553
setOperationAction(ISD::FP_TO_UINT_SAT, MVT::i32, Custom);
557
554
setOperationAction(ISD::FP_TO_UINT_SAT, MVT::i64, Custom);
558
555
setOperationAction(ISD::FP_TO_SINT_SAT, MVT::i32, Custom);
@@ -952,9 +949,11 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
952
949
setTruncStoreAction(MVT::f128, MVT::f32, Expand);
953
950
setTruncStoreAction(MVT::f128, MVT::f16, Expand);
954
951
955
- setOperationAction(ISD::BITCAST, MVT::i16, Custom);
956
- setOperationAction(ISD::BITCAST, MVT::f16, Custom);
957
- setOperationAction(ISD::BITCAST, MVT::bf16, Custom);
952
+ if (Subtarget->hasFPARMv8()) {
953
+ setOperationAction(ISD::BITCAST, MVT::i16, Custom);
954
+ setOperationAction(ISD::BITCAST, MVT::f16, Custom);
955
+ setOperationAction(ISD::BITCAST, MVT::bf16, Custom);
956
+ }
958
957
959
958
// Indexed loads and stores are supported.
960
959
for (unsigned im = (unsigned)ISD::PRE_INC;
@@ -24620,10 +24619,6 @@ void AArch64TargetLowering::ReplaceBITCASTResults(
24620
24619
EVT VT = N->getValueType(0);
24621
24620
EVT SrcVT = Op.getValueType();
24622
24621
24623
- if (!Subtarget->hasFPARMv8() &&
24624
- (SrcVT == MVT::f16 || SrcVT == MVT::i16 || SrcVT == MVT::bf16))
24625
- return;
24626
-
24627
24622
if (VT == MVT::v2i16 && SrcVT == MVT::i32) {
24628
24623
CustomNonLegalBITCASTResults(N, Results, DAG, MVT::v2i32, MVT::v4i16);
24629
24624
return;
0 commit comments