@@ -598,110 +598,6 @@ pub unsafe fn vtstd_u64(a: u64, b: u64) -> u64 {
598
598
transmute(vtst_u64(transmute(a), transmute(b)))
599
599
}
600
600
601
- /// Signed saturating accumulate of unsigned value
602
- #[inline]
603
- #[target_feature(enable = "neon")]
604
- #[cfg_attr(test, assert_instr(suqadd))]
605
- pub unsafe fn vuqadd_s8(a: int8x8_t, b: uint8x8_t) -> int8x8_t {
606
- #[allow(improper_ctypes)]
607
- extern "unadjusted" {
608
- #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.suqadd.v8i8")]
609
- fn vuqadd_s8_(a: int8x8_t, b: uint8x8_t) -> int8x8_t;
610
- }
611
- vuqadd_s8_(a, b)
612
- }
613
-
614
- /// Signed saturating accumulate of unsigned value
615
- #[inline]
616
- #[target_feature(enable = "neon")]
617
- #[cfg_attr(test, assert_instr(suqadd))]
618
- pub unsafe fn vuqadd_s16(a: int16x4_t, b: uint16x4_t) -> int16x4_t {
619
- #[allow(improper_ctypes)]
620
- extern "unadjusted" {
621
- #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.suqadd.v4i16")]
622
- fn vuqadd_s16_(a: int16x4_t, b: uint16x4_t) -> int16x4_t;
623
- }
624
- vuqadd_s16_(a, b)
625
- }
626
-
627
- /// Signed saturating accumulate of unsigned value
628
- #[inline]
629
- #[target_feature(enable = "neon")]
630
- #[cfg_attr(test, assert_instr(suqadd))]
631
- pub unsafe fn vuqadd_s32(a: int32x2_t, b: uint32x2_t) -> int32x2_t {
632
- #[allow(improper_ctypes)]
633
- extern "unadjusted" {
634
- #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.suqadd.v2i32")]
635
- fn vuqadd_s32_(a: int32x2_t, b: uint32x2_t) -> int32x2_t;
636
- }
637
- vuqadd_s32_(a, b)
638
- }
639
-
640
- /// Signed saturating accumulate of unsigned value
641
- #[inline]
642
- #[target_feature(enable = "neon")]
643
- #[cfg_attr(test, assert_instr(suqadd))]
644
- pub unsafe fn vuqadd_s64(a: int64x1_t, b: uint64x1_t) -> int64x1_t {
645
- #[allow(improper_ctypes)]
646
- extern "unadjusted" {
647
- #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.suqadd.v1i64")]
648
- fn vuqadd_s64_(a: int64x1_t, b: uint64x1_t) -> int64x1_t;
649
- }
650
- vuqadd_s64_(a, b)
651
- }
652
-
653
- /// Signed saturating accumulate of unsigned value
654
- #[inline]
655
- #[target_feature(enable = "neon")]
656
- #[cfg_attr(test, assert_instr(suqadd))]
657
- pub unsafe fn vuqaddq_s8(a: int8x16_t, b: uint8x16_t) -> int8x16_t {
658
- #[allow(improper_ctypes)]
659
- extern "unadjusted" {
660
- #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.suqadd.v16i8")]
661
- fn vuqaddq_s8_(a: int8x16_t, b: uint8x16_t) -> int8x16_t;
662
- }
663
- vuqaddq_s8_(a, b)
664
- }
665
-
666
- /// Signed saturating accumulate of unsigned value
667
- #[inline]
668
- #[target_feature(enable = "neon")]
669
- #[cfg_attr(test, assert_instr(suqadd))]
670
- pub unsafe fn vuqaddq_s16(a: int16x8_t, b: uint16x8_t) -> int16x8_t {
671
- #[allow(improper_ctypes)]
672
- extern "unadjusted" {
673
- #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.suqadd.v8i16")]
674
- fn vuqaddq_s16_(a: int16x8_t, b: uint16x8_t) -> int16x8_t;
675
- }
676
- vuqaddq_s16_(a, b)
677
- }
678
-
679
- /// Signed saturating accumulate of unsigned value
680
- #[inline]
681
- #[target_feature(enable = "neon")]
682
- #[cfg_attr(test, assert_instr(suqadd))]
683
- pub unsafe fn vuqaddq_s32(a: int32x4_t, b: uint32x4_t) -> int32x4_t {
684
- #[allow(improper_ctypes)]
685
- extern "unadjusted" {
686
- #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.suqadd.v4i32")]
687
- fn vuqaddq_s32_(a: int32x4_t, b: uint32x4_t) -> int32x4_t;
688
- }
689
- vuqaddq_s32_(a, b)
690
- }
691
-
692
- /// Signed saturating accumulate of unsigned value
693
- #[inline]
694
- #[target_feature(enable = "neon")]
695
- #[cfg_attr(test, assert_instr(suqadd))]
696
- pub unsafe fn vuqaddq_s64(a: int64x2_t, b: uint64x2_t) -> int64x2_t {
697
- #[allow(improper_ctypes)]
698
- extern "unadjusted" {
699
- #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.suqadd.v2i64")]
700
- fn vuqaddq_s64_(a: int64x2_t, b: uint64x2_t) -> int64x2_t;
701
- }
702
- vuqaddq_s64_(a, b)
703
- }
704
-
705
601
/// Signed saturating accumulate of unsigned value
706
602
#[inline]
707
603
#[target_feature(enable = "neon")]
@@ -4688,60 +4584,6 @@ pub unsafe fn vqsubd_s64(a: i64, b: i64) -> i64 {
4688
4584
vqsubd_s64_(a, b)
4689
4585
}
4690
4586
4691
- /// Rounding add returning high narrow
4692
- #[inline]
4693
- #[target_feature(enable = "neon")]
4694
- #[cfg_attr(test, assert_instr(raddhn2))]
4695
- pub unsafe fn vraddhn_high_s16(a: int8x8_t, b: int16x8_t, c: int16x8_t) -> int8x16_t {
4696
- let x: int8x8_t = vraddhn_s16(b, c);
4697
- simd_shuffle16!(a, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
4698
- }
4699
-
4700
- /// Rounding add returning high narrow
4701
- #[inline]
4702
- #[target_feature(enable = "neon")]
4703
- #[cfg_attr(test, assert_instr(raddhn2))]
4704
- pub unsafe fn vraddhn_high_s32(a: int16x4_t, b: int32x4_t, c: int32x4_t) -> int16x8_t {
4705
- let x: int16x4_t = vraddhn_s32(b, c);
4706
- simd_shuffle8!(a, x, [0, 1, 2, 3, 4, 5, 6, 7])
4707
- }
4708
-
4709
- /// Rounding add returning high narrow
4710
- #[inline]
4711
- #[target_feature(enable = "neon")]
4712
- #[cfg_attr(test, assert_instr(raddhn2))]
4713
- pub unsafe fn vraddhn_high_s64(a: int32x2_t, b: int64x2_t, c: int64x2_t) -> int32x4_t {
4714
- let x: int32x2_t = vraddhn_s64(b, c);
4715
- simd_shuffle4!(a, x, [0, 1, 2, 3])
4716
- }
4717
-
4718
- /// Rounding add returning high narrow
4719
- #[inline]
4720
- #[target_feature(enable = "neon")]
4721
- #[cfg_attr(test, assert_instr(raddhn2))]
4722
- pub unsafe fn vraddhn_high_u16(a: uint8x8_t, b: uint16x8_t, c: uint16x8_t) -> uint8x16_t {
4723
- let x: uint8x8_t = vraddhn_u16(b, c);
4724
- simd_shuffle16!(a, x, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
4725
- }
4726
-
4727
- /// Rounding add returning high narrow
4728
- #[inline]
4729
- #[target_feature(enable = "neon")]
4730
- #[cfg_attr(test, assert_instr(raddhn2))]
4731
- pub unsafe fn vraddhn_high_u32(a: uint16x4_t, b: uint32x4_t, c: uint32x4_t) -> uint16x8_t {
4732
- let x: uint16x4_t = vraddhn_u32(b, c);
4733
- simd_shuffle8!(a, x, [0, 1, 2, 3, 4, 5, 6, 7])
4734
- }
4735
-
4736
- /// Rounding add returning high narrow
4737
- #[inline]
4738
- #[target_feature(enable = "neon")]
4739
- #[cfg_attr(test, assert_instr(raddhn2))]
4740
- pub unsafe fn vraddhn_high_u64(a: uint32x2_t, b: uint64x2_t, c: uint64x2_t) -> uint32x4_t {
4741
- let x: uint32x2_t = vraddhn_u64(b, c);
4742
- simd_shuffle4!(a, x, [0, 1, 2, 3])
4743
- }
4744
-
4745
4587
/// Reverse bit order
4746
4588
#[inline]
4747
4589
#[target_feature(enable = "neon")]
@@ -13736,78 +13578,6 @@ mod test {
13736
13578
assert_eq!(r, e);
13737
13579
}
13738
13580
13739
- #[simd_test(enable = "neon")]
13740
- unsafe fn test_vuqadd_s8() {
13741
- let a: i8x8 = i8x8::new(1, 2, 3, 4, 1, 2, 3, 4);
13742
- let b: u8x8 = u8x8::new(1, 2, 3, 4, 1, 2, 3, 4);
13743
- let e: i8x8 = i8x8::new(2, 4, 6, 8, 2, 4, 6, 8);
13744
- let r: i8x8 = transmute(vuqadd_s8(transmute(a), transmute(b)));
13745
- assert_eq!(r, e);
13746
- }
13747
-
13748
- #[simd_test(enable = "neon")]
13749
- unsafe fn test_vuqadd_s16() {
13750
- let a: i16x4 = i16x4::new(1, 2, 3, 4);
13751
- let b: u16x4 = u16x4::new(1, 2, 3, 4);
13752
- let e: i16x4 = i16x4::new(2, 4, 6, 8);
13753
- let r: i16x4 = transmute(vuqadd_s16(transmute(a), transmute(b)));
13754
- assert_eq!(r, e);
13755
- }
13756
-
13757
- #[simd_test(enable = "neon")]
13758
- unsafe fn test_vuqadd_s32() {
13759
- let a: i32x2 = i32x2::new(1, 2);
13760
- let b: u32x2 = u32x2::new(1, 2);
13761
- let e: i32x2 = i32x2::new(2, 4);
13762
- let r: i32x2 = transmute(vuqadd_s32(transmute(a), transmute(b)));
13763
- assert_eq!(r, e);
13764
- }
13765
-
13766
- #[simd_test(enable = "neon")]
13767
- unsafe fn test_vuqadd_s64() {
13768
- let a: i64x1 = i64x1::new(1);
13769
- let b: u64x1 = u64x1::new(1);
13770
- let e: i64x1 = i64x1::new(2);
13771
- let r: i64x1 = transmute(vuqadd_s64(transmute(a), transmute(b)));
13772
- assert_eq!(r, e);
13773
- }
13774
-
13775
- #[simd_test(enable = "neon")]
13776
- unsafe fn test_vuqaddq_s8() {
13777
- let a: i8x16 = i8x16::new(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4);
13778
- let b: u8x16 = u8x16::new(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4);
13779
- let e: i8x16 = i8x16::new(2, 4, 6, 8, 2, 4, 6, 8, 2, 4, 6, 8, 2, 4, 6, 8);
13780
- let r: i8x16 = transmute(vuqaddq_s8(transmute(a), transmute(b)));
13781
- assert_eq!(r, e);
13782
- }
13783
-
13784
- #[simd_test(enable = "neon")]
13785
- unsafe fn test_vuqaddq_s16() {
13786
- let a: i16x8 = i16x8::new(1, 2, 3, 4, 1, 2, 3, 4);
13787
- let b: u16x8 = u16x8::new(1, 2, 3, 4, 1, 2, 3, 4);
13788
- let e: i16x8 = i16x8::new(2, 4, 6, 8, 2, 4, 6, 8);
13789
- let r: i16x8 = transmute(vuqaddq_s16(transmute(a), transmute(b)));
13790
- assert_eq!(r, e);
13791
- }
13792
-
13793
- #[simd_test(enable = "neon")]
13794
- unsafe fn test_vuqaddq_s32() {
13795
- let a: i32x4 = i32x4::new(1, 2, 3, 4);
13796
- let b: u32x4 = u32x4::new(1, 2, 3, 4);
13797
- let e: i32x4 = i32x4::new(2, 4, 6, 8);
13798
- let r: i32x4 = transmute(vuqaddq_s32(transmute(a), transmute(b)));
13799
- assert_eq!(r, e);
13800
- }
13801
-
13802
- #[simd_test(enable = "neon")]
13803
- unsafe fn test_vuqaddq_s64() {
13804
- let a: i64x2 = i64x2::new(1, 2);
13805
- let b: u64x2 = u64x2::new(1, 2);
13806
- let e: i64x2 = i64x2::new(2, 4);
13807
- let r: i64x2 = transmute(vuqaddq_s64(transmute(a), transmute(b)));
13808
- assert_eq!(r, e);
13809
- }
13810
-
13811
13581
#[simd_test(enable = "neon")]
13812
13582
unsafe fn test_vuqadds_s32() {
13813
13583
let a: i32 = 1;
@@ -16834,66 +16604,6 @@ mod test {
16834
16604
assert_eq!(r, e);
16835
16605
}
16836
16606
16837
- #[simd_test(enable = "neon")]
16838
- unsafe fn test_vraddhn_high_s16() {
16839
- let a: i8x8 = i8x8::new(1, 2, 0, 0, 0, 0, 0, 0);
16840
- let b: i16x8 = i16x8::new(1, 2, 3, 4, 5, 6, 7, 8);
16841
- let c: i16x8 = i16x8::new(1, 2, 3, 4, 5, 6, 7, 8);
16842
- let e: i8x16 = i8x16::new(1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
16843
- let r: i8x16 = transmute(vraddhn_high_s16(transmute(a), transmute(b), transmute(c)));
16844
- assert_eq!(r, e);
16845
- }
16846
-
16847
- #[simd_test(enable = "neon")]
16848
- unsafe fn test_vraddhn_high_s32() {
16849
- let a: i16x4 = i16x4::new(1, 2, 0, 0);
16850
- let b: i32x4 = i32x4::new(1, 2, 3, 4);
16851
- let c: i32x4 = i32x4::new(1, 2, 3, 4);
16852
- let e: i16x8 = i16x8::new(1, 2, 0, 0, 0, 0, 0, 0);
16853
- let r: i16x8 = transmute(vraddhn_high_s32(transmute(a), transmute(b), transmute(c)));
16854
- assert_eq!(r, e);
16855
- }
16856
-
16857
- #[simd_test(enable = "neon")]
16858
- unsafe fn test_vraddhn_high_s64() {
16859
- let a: i32x2 = i32x2::new(1, 2);
16860
- let b: i64x2 = i64x2::new(1, 2);
16861
- let c: i64x2 = i64x2::new(1, 2);
16862
- let e: i32x4 = i32x4::new(1, 2, 0, 0);
16863
- let r: i32x4 = transmute(vraddhn_high_s64(transmute(a), transmute(b), transmute(c)));
16864
- assert_eq!(r, e);
16865
- }
16866
-
16867
- #[simd_test(enable = "neon")]
16868
- unsafe fn test_vraddhn_high_u16() {
16869
- let a: u8x8 = u8x8::new(1, 2, 0, 0, 0, 0, 0, 0);
16870
- let b: u16x8 = u16x8::new(1, 2, 3, 4, 5, 6, 7, 8);
16871
- let c: u16x8 = u16x8::new(1, 2, 3, 4, 5, 6, 7, 8);
16872
- let e: u8x16 = u8x16::new(1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
16873
- let r: u8x16 = transmute(vraddhn_high_u16(transmute(a), transmute(b), transmute(c)));
16874
- assert_eq!(r, e);
16875
- }
16876
-
16877
- #[simd_test(enable = "neon")]
16878
- unsafe fn test_vraddhn_high_u32() {
16879
- let a: u16x4 = u16x4::new(1, 2, 0, 0);
16880
- let b: u32x4 = u32x4::new(1, 2, 3, 4);
16881
- let c: u32x4 = u32x4::new(1, 2, 3, 4);
16882
- let e: u16x8 = u16x8::new(1, 2, 0, 0, 0, 0, 0, 0);
16883
- let r: u16x8 = transmute(vraddhn_high_u32(transmute(a), transmute(b), transmute(c)));
16884
- assert_eq!(r, e);
16885
- }
16886
-
16887
- #[simd_test(enable = "neon")]
16888
- unsafe fn test_vraddhn_high_u64() {
16889
- let a: u32x2 = u32x2::new(1, 2);
16890
- let b: u64x2 = u64x2::new(1, 2);
16891
- let c: u64x2 = u64x2::new(1, 2);
16892
- let e: u32x4 = u32x4::new(1, 2, 0, 0);
16893
- let r: u32x4 = transmute(vraddhn_high_u64(transmute(a), transmute(b), transmute(c)));
16894
- assert_eq!(r, e);
16895
- }
16896
-
16897
16607
#[simd_test(enable = "neon")]
16898
16608
unsafe fn test_vrbit_s8() {
16899
16609
let a: i8x8 = i8x8::new(0, 2, 4, 6, 8, 10, 12, 14);
0 commit comments