Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4928400

Browse files
committedMar 29, 2022
Add the rdm target feature to the sqrdmlsh intrinsic.
1 parent 1080254 commit 4928400

File tree

3 files changed

+300
-302
lines changed

3 files changed

+300
-302
lines changed
 

‎crates/core_arch/src/aarch64/neon/generated.rs

+284-24
Original file line numberDiff line numberDiff line change
@@ -10734,64 +10734,204 @@ pub unsafe fn vqrdmlahs_laneq_s32<const LANE: i32>(a: i32, b: i32, c: int32x4_t)
1073410734

1073510735
/// Signed saturating rounding doubling multiply subtract returning high half
1073610736
#[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))]
1074010791
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)
1074210796
}
1074310797

1074410798
/// Signed saturating rounding doubling multiply subtract returning high half
1074510799
#[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))]
1074910802
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)
1075110807
}
1075210808

1075310809
/// Signed saturating rounding doubling multiply subtract returning high half
1075410810
#[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))]
1075710901
#[rustc_legacy_const_generics(3)]
10758-
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
1075910902
pub unsafe fn vqrdmlshh_lane_s16<const LANE: i32>(a: i16, b: i16, c: int16x4_t) -> i16 {
1076010903
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))
1076210905
}
1076310906

1076410907
/// Signed saturating rounding doubling multiply subtract returning high half
1076510908
#[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))]
1076810911
#[rustc_legacy_const_generics(3)]
10769-
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
1077010912
pub unsafe fn vqrdmlshh_laneq_s16<const LANE: i32>(a: i16, b: i16, c: int16x8_t) -> i16 {
1077110913
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))
1077310915
}
1077410916

1077510917
/// Signed saturating rounding doubling multiply subtract returning high half
1077610918
#[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))]
1077910921
#[rustc_legacy_const_generics(3)]
10780-
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
1078110922
pub unsafe fn vqrdmlshs_lane_s32<const LANE: i32>(a: i32, b: i32, c: int32x2_t) -> i32 {
1078210923
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))
1078410925
}
1078510926

1078610927
/// Signed saturating rounding doubling multiply subtract returning high half
1078710928
#[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))]
1079010931
#[rustc_legacy_const_generics(3)]
10791-
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
1079210932
pub unsafe fn vqrdmlshs_laneq_s32<const LANE: i32>(a: i32, b: i32, c: int32x4_t) -> i32 {
1079310933
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))
1079510935
}
1079610936

1079710937
/// Signed saturating rounding shift left
@@ -22342,6 +22482,46 @@ mod test {
2234222482
assert_eq!(r, e);
2234322483
}
2234422484

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+
2234522525
#[simd_test(enable = "neon")]
2234622526
unsafe fn test_vqrdmlshh_s16() {
2234722527
let a: i16 = 1;
@@ -22362,6 +22542,86 @@ mod test {
2236222542
assert_eq!(r, e);
2236322543
}
2236422544

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+
2236522625
#[simd_test(enable = "neon")]
2236622626
unsafe fn test_vqrdmlshh_lane_s16() {
2236722627
let a: i16 = 1;

0 commit comments

Comments
 (0)
Please sign in to comment.