@@ -10734,64 +10734,204 @@ pub unsafe fn vqrdmlahs_laneq_s32<const LANE: i32>(a: i32, b: i32, c: int32x4_t)
10734
10734
10735
10735
/// Signed saturating rounding doubling multiply subtract returning high half
10736
10736
#[inline]
10737
- #[target_feature(enable = "neon")]
10738
- #[cfg_attr(test, assert_instr(sqrdmulh))]
10739
- #[stable(feature = "neon_intrinsics", since = "1.59.0")]
10737
+ #[target_feature(enable = "rdm")]
10738
+ #[cfg_attr(test, assert_instr(sqrdmlsh))]
10739
+ pub unsafe fn vqrdmlsh_s16(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
10740
+ #[allow(improper_ctypes)]
10741
+ extern "unadjusted" {
10742
+ #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.sqrdmlsh.v4i16")]
10743
+ fn vqrdmlsh_s16_(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t;
10744
+ }
10745
+ vqrdmlsh_s16_(a, b, c)
10746
+ }
10747
+
10748
+ /// Signed saturating rounding doubling multiply subtract returning high half
10749
+ #[inline]
10750
+ #[target_feature(enable = "rdm")]
10751
+ #[cfg_attr(test, assert_instr(sqrdmlsh))]
10752
+ pub unsafe fn vqrdmlshq_s16(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
10753
+ #[allow(improper_ctypes)]
10754
+ extern "unadjusted" {
10755
+ #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.sqrdmlsh.v8i16")]
10756
+ fn vqrdmlshq_s16_(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t;
10757
+ }
10758
+ vqrdmlshq_s16_(a, b, c)
10759
+ }
10760
+
10761
+ /// Signed saturating rounding doubling multiply subtract returning high half
10762
+ #[inline]
10763
+ #[target_feature(enable = "rdm")]
10764
+ #[cfg_attr(test, assert_instr(sqrdmlsh))]
10765
+ pub unsafe fn vqrdmlsh_s32(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
10766
+ #[allow(improper_ctypes)]
10767
+ extern "unadjusted" {
10768
+ #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.sqrdmlsh.v2i32")]
10769
+ fn vqrdmlsh_s32_(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t;
10770
+ }
10771
+ vqrdmlsh_s32_(a, b, c)
10772
+ }
10773
+
10774
+ /// Signed saturating rounding doubling multiply subtract returning high half
10775
+ #[inline]
10776
+ #[target_feature(enable = "rdm")]
10777
+ #[cfg_attr(test, assert_instr(sqrdmlsh))]
10778
+ pub unsafe fn vqrdmlshq_s32(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
10779
+ #[allow(improper_ctypes)]
10780
+ extern "unadjusted" {
10781
+ #[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.neon.sqrdmlsh.v4i32")]
10782
+ fn vqrdmlshq_s32_(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t;
10783
+ }
10784
+ vqrdmlshq_s32_(a, b, c)
10785
+ }
10786
+
10787
+ /// Signed saturating rounding doubling multiply subtract returning high half
10788
+ #[inline]
10789
+ #[target_feature(enable = "rdm")]
10790
+ #[cfg_attr(test, assert_instr(sqrdmlsh))]
10740
10791
pub unsafe fn vqrdmlshh_s16(a: i16, b: i16, c: i16) -> i16 {
10741
- vqsubh_s16(a, vqrdmulhh_s16(b, c))
10792
+ let a: int16x4_t = vdup_n_s16(a);
10793
+ let b: int16x4_t = vdup_n_s16(b);
10794
+ let c: int16x4_t = vdup_n_s16(c);
10795
+ simd_extract(vqrdmlsh_s16(a, b, c), 0)
10742
10796
}
10743
10797
10744
10798
/// Signed saturating rounding doubling multiply subtract returning high half
10745
10799
#[inline]
10746
- #[target_feature(enable = "neon")]
10747
- #[cfg_attr(test, assert_instr(sqrdmulh))]
10748
- #[stable(feature = "neon_intrinsics", since = "1.59.0")]
10800
+ #[target_feature(enable = "rdm")]
10801
+ #[cfg_attr(test, assert_instr(sqrdmlsh))]
10749
10802
pub unsafe fn vqrdmlshs_s32(a: i32, b: i32, c: i32) -> i32 {
10750
- vqsubs_s32(a, vqrdmulhs_s32(b, c))
10803
+ let a: int32x2_t = vdup_n_s32(a);
10804
+ let b: int32x2_t = vdup_n_s32(b);
10805
+ let c: int32x2_t = vdup_n_s32(c);
10806
+ simd_extract(vqrdmlsh_s32(a, b, c), 0)
10751
10807
}
10752
10808
10753
10809
/// Signed saturating rounding doubling multiply subtract returning high half
10754
10810
#[inline]
10755
- #[target_feature(enable = "neon")]
10756
- #[cfg_attr(test, assert_instr(sqrdmulh, LANE = 1))]
10811
+ #[target_feature(enable = "rdm")]
10812
+ #[cfg_attr(test, assert_instr(sqrdmlsh, LANE = 1))]
10813
+ #[rustc_legacy_const_generics(3)]
10814
+ pub unsafe fn vqrdmlsh_lane_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x4_t) -> int16x4_t {
10815
+ static_assert_imm2!(LANE);
10816
+ let c: int16x4_t = simd_shuffle4!(c, c, <const LANE: i32> [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
10817
+ vqrdmlsh_s16(a, b, c)
10818
+ }
10819
+
10820
+ /// Signed saturating rounding doubling multiply subtract returning high half
10821
+ #[inline]
10822
+ #[target_feature(enable = "rdm")]
10823
+ #[cfg_attr(test, assert_instr(sqrdmlsh, LANE = 1))]
10824
+ #[rustc_legacy_const_generics(3)]
10825
+ pub unsafe fn vqrdmlsh_laneq_s16<const LANE: i32>(a: int16x4_t, b: int16x4_t, c: int16x8_t) -> int16x4_t {
10826
+ static_assert_imm3!(LANE);
10827
+ let c: int16x4_t = simd_shuffle4!(c, c, <const LANE: i32> [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
10828
+ vqrdmlsh_s16(a, b, c)
10829
+ }
10830
+
10831
+ /// Signed saturating rounding doubling multiply subtract returning high half
10832
+ #[inline]
10833
+ #[target_feature(enable = "rdm")]
10834
+ #[cfg_attr(test, assert_instr(sqrdmlsh, LANE = 1))]
10835
+ #[rustc_legacy_const_generics(3)]
10836
+ pub unsafe fn vqrdmlshq_lane_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x4_t) -> int16x8_t {
10837
+ static_assert_imm2!(LANE);
10838
+ let c: int16x8_t = simd_shuffle8!(c, c, <const LANE: i32> [LANE as u32, LANE as u32, LANE as u32, LANE as u32, LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
10839
+ vqrdmlshq_s16(a, b, c)
10840
+ }
10841
+
10842
+ /// Signed saturating rounding doubling multiply subtract returning high half
10843
+ #[inline]
10844
+ #[target_feature(enable = "rdm")]
10845
+ #[cfg_attr(test, assert_instr(sqrdmlsh, LANE = 1))]
10846
+ #[rustc_legacy_const_generics(3)]
10847
+ pub unsafe fn vqrdmlshq_laneq_s16<const LANE: i32>(a: int16x8_t, b: int16x8_t, c: int16x8_t) -> int16x8_t {
10848
+ static_assert_imm3!(LANE);
10849
+ let c: int16x8_t = simd_shuffle8!(c, c, <const LANE: i32> [LANE as u32, LANE as u32, LANE as u32, LANE as u32, LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
10850
+ vqrdmlshq_s16(a, b, c)
10851
+ }
10852
+
10853
+ /// Signed saturating rounding doubling multiply subtract returning high half
10854
+ #[inline]
10855
+ #[target_feature(enable = "rdm")]
10856
+ #[cfg_attr(test, assert_instr(sqrdmlsh, LANE = 1))]
10857
+ #[rustc_legacy_const_generics(3)]
10858
+ pub unsafe fn vqrdmlsh_lane_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x2_t) -> int32x2_t {
10859
+ static_assert_imm1!(LANE);
10860
+ let c: int32x2_t = simd_shuffle2!(c, c, <const LANE: i32> [LANE as u32, LANE as u32]);
10861
+ vqrdmlsh_s32(a, b, c)
10862
+ }
10863
+
10864
+ /// Signed saturating rounding doubling multiply subtract returning high half
10865
+ #[inline]
10866
+ #[target_feature(enable = "rdm")]
10867
+ #[cfg_attr(test, assert_instr(sqrdmlsh, LANE = 1))]
10868
+ #[rustc_legacy_const_generics(3)]
10869
+ pub unsafe fn vqrdmlsh_laneq_s32<const LANE: i32>(a: int32x2_t, b: int32x2_t, c: int32x4_t) -> int32x2_t {
10870
+ static_assert_imm2!(LANE);
10871
+ let c: int32x2_t = simd_shuffle2!(c, c, <const LANE: i32> [LANE as u32, LANE as u32]);
10872
+ vqrdmlsh_s32(a, b, c)
10873
+ }
10874
+
10875
+ /// Signed saturating rounding doubling multiply subtract returning high half
10876
+ #[inline]
10877
+ #[target_feature(enable = "rdm")]
10878
+ #[cfg_attr(test, assert_instr(sqrdmlsh, LANE = 1))]
10879
+ #[rustc_legacy_const_generics(3)]
10880
+ pub unsafe fn vqrdmlshq_lane_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x2_t) -> int32x4_t {
10881
+ static_assert_imm1!(LANE);
10882
+ let c: int32x4_t = simd_shuffle4!(c, c, <const LANE: i32> [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
10883
+ vqrdmlshq_s32(a, b, c)
10884
+ }
10885
+
10886
+ /// Signed saturating rounding doubling multiply subtract returning high half
10887
+ #[inline]
10888
+ #[target_feature(enable = "rdm")]
10889
+ #[cfg_attr(test, assert_instr(sqrdmlsh, LANE = 1))]
10890
+ #[rustc_legacy_const_generics(3)]
10891
+ pub unsafe fn vqrdmlshq_laneq_s32<const LANE: i32>(a: int32x4_t, b: int32x4_t, c: int32x4_t) -> int32x4_t {
10892
+ static_assert_imm2!(LANE);
10893
+ let c: int32x4_t = simd_shuffle4!(c, c, <const LANE: i32> [LANE as u32, LANE as u32, LANE as u32, LANE as u32]);
10894
+ vqrdmlshq_s32(a, b, c)
10895
+ }
10896
+
10897
+ /// Signed saturating rounding doubling multiply subtract returning high half
10898
+ #[inline]
10899
+ #[target_feature(enable = "rdm")]
10900
+ #[cfg_attr(test, assert_instr(sqrdmlsh, LANE = 1))]
10757
10901
#[rustc_legacy_const_generics(3)]
10758
- #[stable(feature = "neon_intrinsics", since = "1.59.0")]
10759
10902
pub unsafe fn vqrdmlshh_lane_s16<const LANE: i32>(a: i16, b: i16, c: int16x4_t) -> i16 {
10760
10903
static_assert_imm2!(LANE);
10761
- vqsubh_s16 (a, vqrdmulhh_lane_s16::<LANE>( b, c ))
10904
+ vqrdmlshh_s16 (a, b, simd_extract(c, LANE as u32 ))
10762
10905
}
10763
10906
10764
10907
/// Signed saturating rounding doubling multiply subtract returning high half
10765
10908
#[inline]
10766
- #[target_feature(enable = "neon ")]
10767
- #[cfg_attr(test, assert_instr(sqrdmulh , LANE = 1))]
10909
+ #[target_feature(enable = "rdm ")]
10910
+ #[cfg_attr(test, assert_instr(sqrdmlsh , LANE = 1))]
10768
10911
#[rustc_legacy_const_generics(3)]
10769
- #[stable(feature = "neon_intrinsics", since = "1.59.0")]
10770
10912
pub unsafe fn vqrdmlshh_laneq_s16<const LANE: i32>(a: i16, b: i16, c: int16x8_t) -> i16 {
10771
10913
static_assert_imm3!(LANE);
10772
- vqsubh_s16 (a, vqrdmulhh_laneq_s16::<LANE>( b, c ))
10914
+ vqrdmlshh_s16 (a, b, simd_extract(c, LANE as u32 ))
10773
10915
}
10774
10916
10775
10917
/// Signed saturating rounding doubling multiply subtract returning high half
10776
10918
#[inline]
10777
- #[target_feature(enable = "neon ")]
10778
- #[cfg_attr(test, assert_instr(sqrdmulh , LANE = 1))]
10919
+ #[target_feature(enable = "rdm ")]
10920
+ #[cfg_attr(test, assert_instr(sqrdmlsh , LANE = 1))]
10779
10921
#[rustc_legacy_const_generics(3)]
10780
- #[stable(feature = "neon_intrinsics", since = "1.59.0")]
10781
10922
pub unsafe fn vqrdmlshs_lane_s32<const LANE: i32>(a: i32, b: i32, c: int32x2_t) -> i32 {
10782
10923
static_assert_imm1!(LANE);
10783
- vqsubs_s32 (a, vqrdmulhs_lane_s32::<LANE>( b, c ))
10924
+ vqrdmlshs_s32 (a, b, simd_extract(c, LANE as u32 ))
10784
10925
}
10785
10926
10786
10927
/// Signed saturating rounding doubling multiply subtract returning high half
10787
10928
#[inline]
10788
- #[target_feature(enable = "neon ")]
10789
- #[cfg_attr(test, assert_instr(sqrdmulh , LANE = 1))]
10929
+ #[target_feature(enable = "rdm ")]
10930
+ #[cfg_attr(test, assert_instr(sqrdmlsh , LANE = 1))]
10790
10931
#[rustc_legacy_const_generics(3)]
10791
- #[stable(feature = "neon_intrinsics", since = "1.59.0")]
10792
10932
pub unsafe fn vqrdmlshs_laneq_s32<const LANE: i32>(a: i32, b: i32, c: int32x4_t) -> i32 {
10793
10933
static_assert_imm2!(LANE);
10794
- vqsubs_s32 (a, vqrdmulhs_laneq_s32::<LANE>( b, c ))
10934
+ vqrdmlshs_s32 (a, b, simd_extract(c, LANE as u32 ))
10795
10935
}
10796
10936
10797
10937
/// Signed saturating rounding shift left
@@ -22342,6 +22482,46 @@ mod test {
22342
22482
assert_eq!(r, e);
22343
22483
}
22344
22484
22485
+ #[simd_test(enable = "neon")]
22486
+ unsafe fn test_vqrdmlsh_s16() {
22487
+ let a: i16x4 = i16x4::new(1, 1, 1, 1);
22488
+ let b: i16x4 = i16x4::new(0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF);
22489
+ let c: i16x4 = i16x4::new(2, 2, 2, 2);
22490
+ let e: i16x4 = i16x4::new(-1, -1, -1, -1);
22491
+ let r: i16x4 = transmute(vqrdmlsh_s16(transmute(a), transmute(b), transmute(c)));
22492
+ assert_eq!(r, e);
22493
+ }
22494
+
22495
+ #[simd_test(enable = "neon")]
22496
+ unsafe fn test_vqrdmlshq_s16() {
22497
+ let a: i16x8 = i16x8::new(1, 1, 1, 1, 1, 1, 1, 1);
22498
+ let b: i16x8 = i16x8::new(0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF);
22499
+ let c: i16x8 = i16x8::new(2, 2, 2, 2, 2, 2, 2, 2);
22500
+ let e: i16x8 = i16x8::new(-1, -1, -1, -1, -1, -1, -1, -1);
22501
+ let r: i16x8 = transmute(vqrdmlshq_s16(transmute(a), transmute(b), transmute(c)));
22502
+ assert_eq!(r, e);
22503
+ }
22504
+
22505
+ #[simd_test(enable = "neon")]
22506
+ unsafe fn test_vqrdmlsh_s32() {
22507
+ let a: i32x2 = i32x2::new(1, 1);
22508
+ let b: i32x2 = i32x2::new(0x7F_FF_FF_FF, 0x7F_FF_FF_FF);
22509
+ let c: i32x2 = i32x2::new(2, 2);
22510
+ let e: i32x2 = i32x2::new(-1, -1);
22511
+ let r: i32x2 = transmute(vqrdmlsh_s32(transmute(a), transmute(b), transmute(c)));
22512
+ assert_eq!(r, e);
22513
+ }
22514
+
22515
+ #[simd_test(enable = "neon")]
22516
+ unsafe fn test_vqrdmlshq_s32() {
22517
+ let a: i32x4 = i32x4::new(1, 1, 1, 1);
22518
+ let b: i32x4 = i32x4::new(0x7F_FF_FF_FF, 0x7F_FF_FF_FF, 0x7F_FF_FF_FF, 0x7F_FF_FF_FF);
22519
+ let c: i32x4 = i32x4::new(2, 2, 2, 2);
22520
+ let e: i32x4 = i32x4::new(-1, -1, -1, -1);
22521
+ let r: i32x4 = transmute(vqrdmlshq_s32(transmute(a), transmute(b), transmute(c)));
22522
+ assert_eq!(r, e);
22523
+ }
22524
+
22345
22525
#[simd_test(enable = "neon")]
22346
22526
unsafe fn test_vqrdmlshh_s16() {
22347
22527
let a: i16 = 1;
@@ -22362,6 +22542,86 @@ mod test {
22362
22542
assert_eq!(r, e);
22363
22543
}
22364
22544
22545
+ #[simd_test(enable = "neon")]
22546
+ unsafe fn test_vqrdmlsh_lane_s16() {
22547
+ let a: i16x4 = i16x4::new(1, 1, 1, 1);
22548
+ let b: i16x4 = i16x4::new(0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF);
22549
+ let c: i16x4 = i16x4::new(0, 2, 0, 0);
22550
+ let e: i16x4 = i16x4::new(-1, -1, -1, -1);
22551
+ let r: i16x4 = transmute(vqrdmlsh_lane_s16::<1>(transmute(a), transmute(b), transmute(c)));
22552
+ assert_eq!(r, e);
22553
+ }
22554
+
22555
+ #[simd_test(enable = "neon")]
22556
+ unsafe fn test_vqrdmlsh_laneq_s16() {
22557
+ let a: i16x4 = i16x4::new(1, 1, 1, 1);
22558
+ let b: i16x4 = i16x4::new(0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF);
22559
+ let c: i16x8 = i16x8::new(0, 2, 0, 0, 0, 0, 0, 0);
22560
+ let e: i16x4 = i16x4::new(-1, -1, -1, -1);
22561
+ let r: i16x4 = transmute(vqrdmlsh_laneq_s16::<1>(transmute(a), transmute(b), transmute(c)));
22562
+ assert_eq!(r, e);
22563
+ }
22564
+
22565
+ #[simd_test(enable = "neon")]
22566
+ unsafe fn test_vqrdmlshq_lane_s16() {
22567
+ let a: i16x8 = i16x8::new(1, 1, 1, 1, 1, 1, 1, 1);
22568
+ let b: i16x8 = i16x8::new(0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF);
22569
+ let c: i16x4 = i16x4::new(0, 2, 0, 0);
22570
+ let e: i16x8 = i16x8::new(-1, -1, -1, -1, -1, -1, -1, -1);
22571
+ let r: i16x8 = transmute(vqrdmlshq_lane_s16::<1>(transmute(a), transmute(b), transmute(c)));
22572
+ assert_eq!(r, e);
22573
+ }
22574
+
22575
+ #[simd_test(enable = "neon")]
22576
+ unsafe fn test_vqrdmlshq_laneq_s16() {
22577
+ let a: i16x8 = i16x8::new(1, 1, 1, 1, 1, 1, 1, 1);
22578
+ let b: i16x8 = i16x8::new(0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF, 0x7F_FF);
22579
+ let c: i16x8 = i16x8::new(0, 2, 0, 0, 0, 0, 0, 0);
22580
+ let e: i16x8 = i16x8::new(-1, -1, -1, -1, -1, -1, -1, -1);
22581
+ let r: i16x8 = transmute(vqrdmlshq_laneq_s16::<1>(transmute(a), transmute(b), transmute(c)));
22582
+ assert_eq!(r, e);
22583
+ }
22584
+
22585
+ #[simd_test(enable = "neon")]
22586
+ unsafe fn test_vqrdmlsh_lane_s32() {
22587
+ let a: i32x2 = i32x2::new(1, 1);
22588
+ let b: i32x2 = i32x2::new(0x7F_FF_FF_FF, 0x7F_FF_FF_FF);
22589
+ let c: i32x2 = i32x2::new(0, 2);
22590
+ let e: i32x2 = i32x2::new(-1, -1);
22591
+ let r: i32x2 = transmute(vqrdmlsh_lane_s32::<1>(transmute(a), transmute(b), transmute(c)));
22592
+ assert_eq!(r, e);
22593
+ }
22594
+
22595
+ #[simd_test(enable = "neon")]
22596
+ unsafe fn test_vqrdmlsh_laneq_s32() {
22597
+ let a: i32x2 = i32x2::new(1, 1);
22598
+ let b: i32x2 = i32x2::new(0x7F_FF_FF_FF, 0x7F_FF_FF_FF);
22599
+ let c: i32x4 = i32x4::new(0, 2, 0, 0);
22600
+ let e: i32x2 = i32x2::new(-1, -1);
22601
+ let r: i32x2 = transmute(vqrdmlsh_laneq_s32::<1>(transmute(a), transmute(b), transmute(c)));
22602
+ assert_eq!(r, e);
22603
+ }
22604
+
22605
+ #[simd_test(enable = "neon")]
22606
+ unsafe fn test_vqrdmlshq_lane_s32() {
22607
+ let a: i32x4 = i32x4::new(1, 1, 1, 1);
22608
+ let b: i32x4 = i32x4::new(0x7F_FF_FF_FF, 0x7F_FF_FF_FF, 0x7F_FF_FF_FF, 0x7F_FF_FF_FF);
22609
+ let c: i32x2 = i32x2::new(0, 2);
22610
+ let e: i32x4 = i32x4::new(-1, -1, -1, -1);
22611
+ let r: i32x4 = transmute(vqrdmlshq_lane_s32::<1>(transmute(a), transmute(b), transmute(c)));
22612
+ assert_eq!(r, e);
22613
+ }
22614
+
22615
+ #[simd_test(enable = "neon")]
22616
+ unsafe fn test_vqrdmlshq_laneq_s32() {
22617
+ let a: i32x4 = i32x4::new(1, 1, 1, 1);
22618
+ let b: i32x4 = i32x4::new(0x7F_FF_FF_FF, 0x7F_FF_FF_FF, 0x7F_FF_FF_FF, 0x7F_FF_FF_FF);
22619
+ let c: i32x4 = i32x4::new(0, 2, 0, 0);
22620
+ let e: i32x4 = i32x4::new(-1, -1, -1, -1);
22621
+ let r: i32x4 = transmute(vqrdmlshq_laneq_s32::<1>(transmute(a), transmute(b), transmute(c)));
22622
+ assert_eq!(r, e);
22623
+ }
22624
+
22365
22625
#[simd_test(enable = "neon")]
22366
22626
unsafe fn test_vqrdmlshh_lane_s16() {
22367
22627
let a: i16 = 1;
0 commit comments