@@ -969,6 +969,8 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
969969 static const unsigned ZvfhminZvfbfminPromoteOps[] = {
970970 ISD::FMINNUM,
971971 ISD::FMAXNUM,
972+ ISD::FMINIMUMNUM,
973+ ISD::FMAXIMUMNUM,
972974 ISD::FADD,
973975 ISD::FSUB,
974976 ISD::FMUL,
@@ -1037,7 +1039,9 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
10371039 // Expand various condition codes (explained above).
10381040 setCondCodeAction(VFPCCToExpand, VT, Expand);
10391041
1040- setOperationAction({ISD::FMINNUM, ISD::FMAXNUM}, VT, Legal);
1042+ setOperationAction(
1043+ {ISD::FMINNUM, ISD::FMAXNUM, ISD::FMAXIMUMNUM, ISD::FMINIMUMNUM}, VT,
1044+ Legal);
10411045 setOperationAction({ISD::FMAXIMUM, ISD::FMINIMUM}, VT, Custom);
10421046
10431047 setOperationAction({ISD::FTRUNC, ISD::FCEIL, ISD::FFLOOR, ISD::FROUND,
@@ -1455,7 +1459,8 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
14551459 setOperationAction({ISD::FADD, ISD::FSUB, ISD::FMUL, ISD::FDIV,
14561460 ISD::FNEG, ISD::FABS, ISD::FCOPYSIGN, ISD::FSQRT,
14571461 ISD::FMA, ISD::FMINNUM, ISD::FMAXNUM,
1458- ISD::IS_FPCLASS, ISD::FMAXIMUM, ISD::FMINIMUM},
1462+ ISD::FMINIMUMNUM, ISD::FMAXIMUMNUM, ISD::IS_FPCLASS,
1463+ ISD::FMAXIMUM, ISD::FMINIMUM},
14591464 VT, Custom);
14601465
14611466 setOperationAction({ISD::FTRUNC, ISD::FCEIL, ISD::FFLOOR, ISD::FROUND,
@@ -6898,9 +6903,11 @@ static unsigned getRISCVVLOp(SDValue Op) {
68986903 case ISD::VP_FP_TO_UINT:
68996904 return RISCVISD::VFCVT_RTZ_XU_F_VL;
69006905 case ISD::FMINNUM:
6906+ case ISD::FMINIMUMNUM:
69016907 case ISD::VP_FMINNUM:
69026908 return RISCVISD::VFMIN_VL;
69036909 case ISD::FMAXNUM:
6910+ case ISD::FMAXIMUMNUM:
69046911 case ISD::VP_FMAXNUM:
69056912 return RISCVISD::VFMAX_VL;
69066913 case ISD::LRINT:
@@ -7936,6 +7943,8 @@ SDValue RISCVTargetLowering::LowerOperation(SDValue Op,
79367943 case ISD::FMA:
79377944 case ISD::FMINNUM:
79387945 case ISD::FMAXNUM:
7946+ case ISD::FMINIMUMNUM:
7947+ case ISD::FMAXIMUMNUM:
79397948 if (isPromotedOpNeedingSplit(Op, Subtarget))
79407949 return SplitVectorOp(Op, DAG);
79417950 [[fallthrough]];
0 commit comments