@@ -556,6 +556,7 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
556556 setOperationAction (ISD::FCEIL, VT, Legal);
557557 setOperationAction (ISD::FTRUNC, VT, Legal);
558558 setOperationAction (ISD::FROUND, VT, Legal);
559+ setOperationAction (ISD::FROUNDEVEN, VT, Legal);
559560 }
560561
561562 // No special instructions for these.
@@ -582,8 +583,9 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
582583 setOperationAction (ISD::STRICT_FNEARBYINT, VT, Legal);
583584 setOperationAction (ISD::STRICT_FFLOOR, VT, Legal);
584585 setOperationAction (ISD::STRICT_FCEIL, VT, Legal);
585- setOperationAction (ISD::STRICT_FROUND, VT, Legal);
586586 setOperationAction (ISD::STRICT_FTRUNC, VT, Legal);
587+ setOperationAction (ISD::STRICT_FROUND, VT, Legal);
588+ setOperationAction (ISD::STRICT_FROUNDEVEN, VT, Legal);
587589 }
588590 }
589591 }
@@ -616,6 +618,7 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
616618 setOperationAction (ISD::FCEIL, MVT::v2f64, Legal);
617619 setOperationAction (ISD::FTRUNC, MVT::v2f64, Legal);
618620 setOperationAction (ISD::FROUND, MVT::v2f64, Legal);
621+ setOperationAction (ISD::FROUNDEVEN, MVT::v2f64, Legal);
619622
620623 // Handle constrained floating-point operations.
621624 setOperationAction (ISD::STRICT_FADD, MVT::v2f64, Legal);
@@ -630,6 +633,7 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
630633 setOperationAction (ISD::STRICT_FCEIL, MVT::v2f64, Legal);
631634 setOperationAction (ISD::STRICT_FTRUNC, MVT::v2f64, Legal);
632635 setOperationAction (ISD::STRICT_FROUND, MVT::v2f64, Legal);
636+ setOperationAction (ISD::STRICT_FROUNDEVEN, MVT::v2f64, Legal);
633637
634638 setOperationAction (ISD::SETCC, MVT::v2f64, Custom);
635639 setOperationAction (ISD::SETCC, MVT::v4f32, Custom);
@@ -657,6 +661,7 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
657661 setOperationAction (ISD::FCEIL, MVT::v4f32, Legal);
658662 setOperationAction (ISD::FTRUNC, MVT::v4f32, Legal);
659663 setOperationAction (ISD::FROUND, MVT::v4f32, Legal);
664+ setOperationAction (ISD::FROUNDEVEN, MVT::v4f32, Legal);
660665
661666 setOperationAction (ISD::FMAXNUM, MVT::f64 , Legal);
662667 setOperationAction (ISD::FMAXIMUM, MVT::f64 , Legal);
@@ -694,8 +699,9 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
694699 setOperationAction (ISD::STRICT_FNEARBYINT, MVT::v4f32, Legal);
695700 setOperationAction (ISD::STRICT_FFLOOR, MVT::v4f32, Legal);
696701 setOperationAction (ISD::STRICT_FCEIL, MVT::v4f32, Legal);
697- setOperationAction (ISD::STRICT_FROUND, MVT::v4f32, Legal);
698702 setOperationAction (ISD::STRICT_FTRUNC, MVT::v4f32, Legal);
703+ setOperationAction (ISD::STRICT_FROUND, MVT::v4f32, Legal);
704+ setOperationAction (ISD::STRICT_FROUNDEVEN, MVT::v4f32, Legal);
699705 for (auto VT : { MVT::f32 , MVT::f64 , MVT::f128 ,
700706 MVT::v4f32, MVT::v2f64 }) {
701707 setOperationAction (ISD::STRICT_FMAXNUM, VT, Legal);
0 commit comments