@@ -700,6 +700,47 @@ mod sealed {
700
700
}
701
701
}
702
702
703
+ #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
704
+ pub trait VectorNmadd {
705
+ unsafe fn vec_nmadd ( self , b : Self , c : Self ) -> Self ;
706
+ }
707
+
708
+ #[ inline]
709
+ #[ target_feature( enable = "vector" ) ]
710
+ #[ cfg_attr(
711
+ all( test, target_feature = "vector-enhancements-2" ) ,
712
+ assert_instr( vfnmasb)
713
+ ) ]
714
+ unsafe fn vec_nmadd_f32 ( a : vector_float , b : vector_float , c : vector_float ) -> vector_float {
715
+ simd_neg ( simd_fma ( a, b, c) )
716
+ }
717
+
718
+ #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
719
+ impl VectorNmadd for vector_float {
720
+ #[ target_feature( enable = "vector" ) ]
721
+ unsafe fn vec_nmadd ( self , b : Self , c : Self ) -> Self {
722
+ vec_nmadd_f32 ( self , b, c)
723
+ }
724
+ }
725
+
726
+ #[ inline]
727
+ #[ target_feature( enable = "vector" ) ]
728
+ #[ cfg_attr(
729
+ all( test, target_feature = "vector-enhancements-2" ) ,
730
+ assert_instr( vfnmadb)
731
+ ) ]
732
+ unsafe fn vec_nmadd_f64 ( a : vector_double , b : vector_double , c : vector_double ) -> vector_double {
733
+ simd_neg ( simd_fma ( a, b, c) )
734
+ }
735
+
736
+ #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
737
+ impl VectorNmadd for vector_double {
738
+ #[ target_feature( enable = "vector" ) ]
739
+ unsafe fn vec_nmadd ( self , b : Self , c : Self ) -> Self {
740
+ vec_nmadd_f64 ( self , b, c)
741
+ }
742
+ }
743
+
703
744
#[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
704
745
pub trait VectorSplat {
705
746
unsafe fn vec_splat < const IMM : u32 > ( self ) -> Self ;
@@ -2678,6 +2719,14 @@ pub unsafe fn vec_nabs<T: sealed::VectorNabs>(a: T) -> T {
2678
2719
a. vec_nabs ( )
2679
2720
}
2680
2721
2722
+ /// Vector Negative Multiply Add
2723
+ #[ inline]
2724
+ #[ target_feature( enable = "vector" ) ]
2725
+ #[ unstable( feature = "stdarch_s390x" , issue = "135681" ) ]
2726
+ pub unsafe fn vec_nmadd < T : sealed:: VectorNmadd > ( a : T , b : T , c : T ) -> T {
2727
+ a. vec_nmadd ( b, c)
2728
+ }
2729
+
2681
2730
/// Vector Negative Multiply Subtract
2682
2731
#[ inline]
2683
2732
#[ target_feature( enable = "vector" ) ]
0 commit comments