@@ -604,14 +604,7 @@ pub fn vaddvq_f64(a: float64x2_t) -> f64 {
604
604
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
605
605
#[cfg_attr(test, assert_instr(addp))]
606
606
pub fn vaddv_s32(a: int32x2_t) -> i32 {
607
- unsafe extern "unadjusted" {
608
- #[cfg_attr(
609
- any(target_arch = "aarch64", target_arch = "arm64ec"),
610
- link_name = "llvm.aarch64.neon.saddv.i32.v2i32"
611
- )]
612
- fn _vaddv_s32(a: int32x2_t) -> i32;
613
- }
614
- unsafe { _vaddv_s32(a) }
607
+ unsafe { simd_reduce_add_unordered(a) }
615
608
}
616
609
#[doc = "Add across vector"]
617
610
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_s8)"]
@@ -620,14 +613,7 @@ pub fn vaddv_s32(a: int32x2_t) -> i32 {
620
613
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
621
614
#[cfg_attr(test, assert_instr(addv))]
622
615
pub fn vaddv_s8(a: int8x8_t) -> i8 {
623
- unsafe extern "unadjusted" {
624
- #[cfg_attr(
625
- any(target_arch = "aarch64", target_arch = "arm64ec"),
626
- link_name = "llvm.aarch64.neon.saddv.i8.v8i8"
627
- )]
628
- fn _vaddv_s8(a: int8x8_t) -> i8;
629
- }
630
- unsafe { _vaddv_s8(a) }
616
+ unsafe { simd_reduce_add_unordered(a) }
631
617
}
632
618
#[doc = "Add across vector"]
633
619
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s8)"]
@@ -636,14 +622,7 @@ pub fn vaddv_s8(a: int8x8_t) -> i8 {
636
622
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
637
623
#[cfg_attr(test, assert_instr(addv))]
638
624
pub fn vaddvq_s8(a: int8x16_t) -> i8 {
639
- unsafe extern "unadjusted" {
640
- #[cfg_attr(
641
- any(target_arch = "aarch64", target_arch = "arm64ec"),
642
- link_name = "llvm.aarch64.neon.saddv.i8.v16i8"
643
- )]
644
- fn _vaddvq_s8(a: int8x16_t) -> i8;
645
- }
646
- unsafe { _vaddvq_s8(a) }
625
+ unsafe { simd_reduce_add_unordered(a) }
647
626
}
648
627
#[doc = "Add across vector"]
649
628
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_s16)"]
@@ -652,14 +631,7 @@ pub fn vaddvq_s8(a: int8x16_t) -> i8 {
652
631
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
653
632
#[cfg_attr(test, assert_instr(addv))]
654
633
pub fn vaddv_s16(a: int16x4_t) -> i16 {
655
- unsafe extern "unadjusted" {
656
- #[cfg_attr(
657
- any(target_arch = "aarch64", target_arch = "arm64ec"),
658
- link_name = "llvm.aarch64.neon.saddv.i16.v4i16"
659
- )]
660
- fn _vaddv_s16(a: int16x4_t) -> i16;
661
- }
662
- unsafe { _vaddv_s16(a) }
634
+ unsafe { simd_reduce_add_unordered(a) }
663
635
}
664
636
#[doc = "Add across vector"]
665
637
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s16)"]
@@ -668,14 +640,7 @@ pub fn vaddv_s16(a: int16x4_t) -> i16 {
668
640
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
669
641
#[cfg_attr(test, assert_instr(addv))]
670
642
pub fn vaddvq_s16(a: int16x8_t) -> i16 {
671
- unsafe extern "unadjusted" {
672
- #[cfg_attr(
673
- any(target_arch = "aarch64", target_arch = "arm64ec"),
674
- link_name = "llvm.aarch64.neon.saddv.i16.v8i16"
675
- )]
676
- fn _vaddvq_s16(a: int16x8_t) -> i16;
677
- }
678
- unsafe { _vaddvq_s16(a) }
643
+ unsafe { simd_reduce_add_unordered(a) }
679
644
}
680
645
#[doc = "Add across vector"]
681
646
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s32)"]
@@ -684,14 +649,7 @@ pub fn vaddvq_s16(a: int16x8_t) -> i16 {
684
649
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
685
650
#[cfg_attr(test, assert_instr(addv))]
686
651
pub fn vaddvq_s32(a: int32x4_t) -> i32 {
687
- unsafe extern "unadjusted" {
688
- #[cfg_attr(
689
- any(target_arch = "aarch64", target_arch = "arm64ec"),
690
- link_name = "llvm.aarch64.neon.saddv.i32.v4i32"
691
- )]
692
- fn _vaddvq_s32(a: int32x4_t) -> i32;
693
- }
694
- unsafe { _vaddvq_s32(a) }
652
+ unsafe { simd_reduce_add_unordered(a) }
695
653
}
696
654
#[doc = "Add across vector"]
697
655
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u32)"]
@@ -700,14 +658,7 @@ pub fn vaddvq_s32(a: int32x4_t) -> i32 {
700
658
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
701
659
#[cfg_attr(test, assert_instr(addp))]
702
660
pub fn vaddv_u32(a: uint32x2_t) -> u32 {
703
- unsafe extern "unadjusted" {
704
- #[cfg_attr(
705
- any(target_arch = "aarch64", target_arch = "arm64ec"),
706
- link_name = "llvm.aarch64.neon.uaddv.i32.v2i32"
707
- )]
708
- fn _vaddv_u32(a: uint32x2_t) -> u32;
709
- }
710
- unsafe { _vaddv_u32(a) }
661
+ unsafe { simd_reduce_add_unordered(a) }
711
662
}
712
663
#[doc = "Add across vector"]
713
664
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u8)"]
@@ -716,14 +667,7 @@ pub fn vaddv_u32(a: uint32x2_t) -> u32 {
716
667
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
717
668
#[cfg_attr(test, assert_instr(addv))]
718
669
pub fn vaddv_u8(a: uint8x8_t) -> u8 {
719
- unsafe extern "unadjusted" {
720
- #[cfg_attr(
721
- any(target_arch = "aarch64", target_arch = "arm64ec"),
722
- link_name = "llvm.aarch64.neon.uaddv.i8.v8i8"
723
- )]
724
- fn _vaddv_u8(a: uint8x8_t) -> u8;
725
- }
726
- unsafe { _vaddv_u8(a) }
670
+ unsafe { simd_reduce_add_unordered(a) }
727
671
}
728
672
#[doc = "Add across vector"]
729
673
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u8)"]
@@ -732,14 +676,7 @@ pub fn vaddv_u8(a: uint8x8_t) -> u8 {
732
676
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
733
677
#[cfg_attr(test, assert_instr(addv))]
734
678
pub fn vaddvq_u8(a: uint8x16_t) -> u8 {
735
- unsafe extern "unadjusted" {
736
- #[cfg_attr(
737
- any(target_arch = "aarch64", target_arch = "arm64ec"),
738
- link_name = "llvm.aarch64.neon.uaddv.i8.v16i8"
739
- )]
740
- fn _vaddvq_u8(a: uint8x16_t) -> u8;
741
- }
742
- unsafe { _vaddvq_u8(a) }
679
+ unsafe { simd_reduce_add_unordered(a) }
743
680
}
744
681
#[doc = "Add across vector"]
745
682
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u16)"]
@@ -748,14 +685,7 @@ pub fn vaddvq_u8(a: uint8x16_t) -> u8 {
748
685
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
749
686
#[cfg_attr(test, assert_instr(addv))]
750
687
pub fn vaddv_u16(a: uint16x4_t) -> u16 {
751
- unsafe extern "unadjusted" {
752
- #[cfg_attr(
753
- any(target_arch = "aarch64", target_arch = "arm64ec"),
754
- link_name = "llvm.aarch64.neon.uaddv.i16.v4i16"
755
- )]
756
- fn _vaddv_u16(a: uint16x4_t) -> u16;
757
- }
758
- unsafe { _vaddv_u16(a) }
688
+ unsafe { simd_reduce_add_unordered(a) }
759
689
}
760
690
#[doc = "Add across vector"]
761
691
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u16)"]
@@ -764,14 +694,7 @@ pub fn vaddv_u16(a: uint16x4_t) -> u16 {
764
694
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
765
695
#[cfg_attr(test, assert_instr(addv))]
766
696
pub fn vaddvq_u16(a: uint16x8_t) -> u16 {
767
- unsafe extern "unadjusted" {
768
- #[cfg_attr(
769
- any(target_arch = "aarch64", target_arch = "arm64ec"),
770
- link_name = "llvm.aarch64.neon.uaddv.i16.v8i16"
771
- )]
772
- fn _vaddvq_u16(a: uint16x8_t) -> u16;
773
- }
774
- unsafe { _vaddvq_u16(a) }
697
+ unsafe { simd_reduce_add_unordered(a) }
775
698
}
776
699
#[doc = "Add across vector"]
777
700
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u32)"]
@@ -780,14 +703,7 @@ pub fn vaddvq_u16(a: uint16x8_t) -> u16 {
780
703
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
781
704
#[cfg_attr(test, assert_instr(addv))]
782
705
pub fn vaddvq_u32(a: uint32x4_t) -> u32 {
783
- unsafe extern "unadjusted" {
784
- #[cfg_attr(
785
- any(target_arch = "aarch64", target_arch = "arm64ec"),
786
- link_name = "llvm.aarch64.neon.uaddv.i32.v4i32"
787
- )]
788
- fn _vaddvq_u32(a: uint32x4_t) -> u32;
789
- }
790
- unsafe { _vaddvq_u32(a) }
706
+ unsafe { simd_reduce_add_unordered(a) }
791
707
}
792
708
#[doc = "Add across vector"]
793
709
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s64)"]
@@ -796,14 +712,7 @@ pub fn vaddvq_u32(a: uint32x4_t) -> u32 {
796
712
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
797
713
#[cfg_attr(test, assert_instr(addp))]
798
714
pub fn vaddvq_s64(a: int64x2_t) -> i64 {
799
- unsafe extern "unadjusted" {
800
- #[cfg_attr(
801
- any(target_arch = "aarch64", target_arch = "arm64ec"),
802
- link_name = "llvm.aarch64.neon.saddv.i64.v2i64"
803
- )]
804
- fn _vaddvq_s64(a: int64x2_t) -> i64;
805
- }
806
- unsafe { _vaddvq_s64(a) }
715
+ unsafe { simd_reduce_add_unordered(a) }
807
716
}
808
717
#[doc = "Add across vector"]
809
718
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u64)"]
@@ -812,14 +721,7 @@ pub fn vaddvq_s64(a: int64x2_t) -> i64 {
812
721
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
813
722
#[cfg_attr(test, assert_instr(addp))]
814
723
pub fn vaddvq_u64(a: uint64x2_t) -> u64 {
815
- unsafe extern "unadjusted" {
816
- #[cfg_attr(
817
- any(target_arch = "aarch64", target_arch = "arm64ec"),
818
- link_name = "llvm.aarch64.neon.uaddv.i64.v2i64"
819
- )]
820
- fn _vaddvq_u64(a: uint64x2_t) -> u64;
821
- }
822
- unsafe { _vaddvq_u64(a) }
724
+ unsafe { simd_reduce_add_unordered(a) }
823
725
}
824
726
#[doc = "Multi-vector floating-point absolute maximum"]
825
727
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vamax_f32)"]
@@ -15951,23 +15853,11 @@ pub fn vpadds_f32(a: float32x2_t) -> f32 {
15951
15853
#[doc = "Add pairwise"]
15952
15854
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_s64)"]
15953
15855
#[inline]
15954
- #[cfg(target_endian = "little")]
15955
- #[target_feature(enable = "neon")]
15956
- #[stable(feature = "neon_intrinsics", since = "1.59.0")]
15957
- #[cfg_attr(test, assert_instr(addp))]
15958
- pub fn vpaddd_s64(a: int64x2_t) -> i64 {
15959
- unsafe { transmute(vaddvq_u64(transmute(a))) }
15960
- }
15961
- #[doc = "Add pairwise"]
15962
- #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_s64)"]
15963
- #[inline]
15964
- #[cfg(target_endian = "big")]
15965
15856
#[target_feature(enable = "neon")]
15966
15857
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
15967
15858
#[cfg_attr(test, assert_instr(addp))]
15968
15859
pub fn vpaddd_s64(a: int64x2_t) -> i64 {
15969
- let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
15970
- unsafe { transmute(vaddvq_u64(transmute(a))) }
15860
+ unsafe { simd_reduce_add_unordered(a) }
15971
15861
}
15972
15862
#[doc = "Add pairwise"]
15973
15863
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_u64)"]
@@ -15976,7 +15866,7 @@ pub fn vpaddd_s64(a: int64x2_t) -> i64 {
15976
15866
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
15977
15867
#[cfg_attr(test, assert_instr(addp))]
15978
15868
pub fn vpaddd_u64(a: uint64x2_t) -> u64 {
15979
- vaddvq_u64 (a)
15869
+ unsafe { simd_reduce_add_unordered (a) }
15980
15870
}
15981
15871
#[doc = "Floating-point add pairwise"]
15982
15872
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddq_f16)"]
0 commit comments