@@ -556,6 +556,7 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
556
556
setOperationAction (ISD::FCEIL, VT, Legal);
557
557
setOperationAction (ISD::FTRUNC, VT, Legal);
558
558
setOperationAction (ISD::FROUND, VT, Legal);
559
+ setOperationAction (ISD::FROUNDEVEN, VT, Legal);
559
560
}
560
561
561
562
// No special instructions for these.
@@ -582,8 +583,9 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
582
583
setOperationAction (ISD::STRICT_FNEARBYINT, VT, Legal);
583
584
setOperationAction (ISD::STRICT_FFLOOR, VT, Legal);
584
585
setOperationAction (ISD::STRICT_FCEIL, VT, Legal);
585
- setOperationAction (ISD::STRICT_FROUND, VT, Legal);
586
586
setOperationAction (ISD::STRICT_FTRUNC, VT, Legal);
587
+ setOperationAction (ISD::STRICT_FROUND, VT, Legal);
588
+ setOperationAction (ISD::STRICT_FROUNDEVEN, VT, Legal);
587
589
}
588
590
}
589
591
}
@@ -616,6 +618,7 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
616
618
setOperationAction (ISD::FCEIL, MVT::v2f64, Legal);
617
619
setOperationAction (ISD::FTRUNC, MVT::v2f64, Legal);
618
620
setOperationAction (ISD::FROUND, MVT::v2f64, Legal);
621
+ setOperationAction (ISD::FROUNDEVEN, MVT::v2f64, Legal);
619
622
620
623
// Handle constrained floating-point operations.
621
624
setOperationAction (ISD::STRICT_FADD, MVT::v2f64, Legal);
@@ -630,6 +633,7 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
630
633
setOperationAction (ISD::STRICT_FCEIL, MVT::v2f64, Legal);
631
634
setOperationAction (ISD::STRICT_FTRUNC, MVT::v2f64, Legal);
632
635
setOperationAction (ISD::STRICT_FROUND, MVT::v2f64, Legal);
636
+ setOperationAction (ISD::STRICT_FROUNDEVEN, MVT::v2f64, Legal);
633
637
634
638
setOperationAction (ISD::SETCC, MVT::v2f64, Custom);
635
639
setOperationAction (ISD::SETCC, MVT::v4f32, Custom);
@@ -657,6 +661,7 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
657
661
setOperationAction (ISD::FCEIL, MVT::v4f32, Legal);
658
662
setOperationAction (ISD::FTRUNC, MVT::v4f32, Legal);
659
663
setOperationAction (ISD::FROUND, MVT::v4f32, Legal);
664
+ setOperationAction (ISD::FROUNDEVEN, MVT::v4f32, Legal);
660
665
661
666
setOperationAction (ISD::FMAXNUM, MVT::f64, Legal);
662
667
setOperationAction (ISD::FMAXIMUM, MVT::f64, Legal);
@@ -694,8 +699,9 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
694
699
setOperationAction (ISD::STRICT_FNEARBYINT, MVT::v4f32, Legal);
695
700
setOperationAction (ISD::STRICT_FFLOOR, MVT::v4f32, Legal);
696
701
setOperationAction (ISD::STRICT_FCEIL, MVT::v4f32, Legal);
697
- setOperationAction (ISD::STRICT_FROUND, MVT::v4f32, Legal);
698
702
setOperationAction (ISD::STRICT_FTRUNC, MVT::v4f32, Legal);
703
+ setOperationAction (ISD::STRICT_FROUND, MVT::v4f32, Legal);
704
+ setOperationAction (ISD::STRICT_FROUNDEVEN, MVT::v4f32, Legal);
699
705
for (auto VT : { MVT::f32, MVT::f64, MVT::f128,
700
706
MVT::v4f32, MVT::v2f64 }) {
701
707
setOperationAction (ISD::STRICT_FMAXNUM, VT, Legal);
0 commit comments