test for the high version of a number of instructions
This commit is contained in:
@@ -51,7 +51,7 @@ pub fn __crc32d(crc: u32, data: u64) -> u32 {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal))]
|
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal2))]
|
||||||
pub fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8_t {
|
pub fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let d: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
|
let d: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
|
||||||
@@ -66,7 +66,7 @@ pub fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal))]
|
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal2))]
|
||||||
pub fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x4_t {
|
pub fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x4_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let d: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
|
let d: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
|
||||||
@@ -81,7 +81,7 @@ pub fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x4_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal))]
|
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal2))]
|
||||||
pub fn vabal_high_s32(a: int64x2_t, b: int32x4_t, c: int32x4_t) -> int64x2_t {
|
pub fn vabal_high_s32(a: int64x2_t, b: int32x4_t, c: int32x4_t) -> int64x2_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let d: int32x2_t = simd_shuffle!(b, b, [2, 3]);
|
let d: int32x2_t = simd_shuffle!(b, b, [2, 3]);
|
||||||
@@ -96,7 +96,7 @@ pub fn vabal_high_s32(a: int64x2_t, b: int32x4_t, c: int32x4_t) -> int64x2_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal))]
|
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal2))]
|
||||||
pub fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint16x8_t {
|
pub fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint16x8_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let d: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
|
let d: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
|
||||||
@@ -110,7 +110,7 @@ pub fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint16x8_t
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal))]
|
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal2))]
|
||||||
pub fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uint32x4_t {
|
pub fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uint32x4_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let d: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
|
let d: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
|
||||||
@@ -124,7 +124,7 @@ pub fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uint32x4_t
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal))]
|
#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal2))]
|
||||||
pub fn vabal_high_u32(a: uint64x2_t, b: uint32x4_t, c: uint32x4_t) -> uint64x2_t {
|
pub fn vabal_high_u32(a: uint64x2_t, b: uint32x4_t, c: uint32x4_t) -> uint64x2_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let d: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
|
let d: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
|
||||||
@@ -197,7 +197,7 @@ pub fn vabdh_f16(a: f16, b: f16) -> f16 {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(sabdl))]
|
#[cfg_attr(test, assert_instr(sabdl2))]
|
||||||
pub fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
|
pub fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
|
let c: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
|
||||||
@@ -211,7 +211,7 @@ pub fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(sabdl))]
|
#[cfg_attr(test, assert_instr(sabdl2))]
|
||||||
pub fn vabdl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
|
pub fn vabdl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: int32x2_t = simd_shuffle!(a, a, [2, 3]);
|
let c: int32x2_t = simd_shuffle!(a, a, [2, 3]);
|
||||||
@@ -225,7 +225,7 @@ pub fn vabdl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(sabdl))]
|
#[cfg_attr(test, assert_instr(sabdl2))]
|
||||||
pub fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
|
pub fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
|
let c: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
|
||||||
@@ -238,7 +238,7 @@ pub fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
|
|||||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u8)"]
|
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u8)"]
|
||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[cfg_attr(test, assert_instr(uabdl))]
|
#[cfg_attr(test, assert_instr(uabdl2))]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
|
pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
@@ -251,7 +251,7 @@ pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
|
|||||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u16)"]
|
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u16)"]
|
||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[cfg_attr(test, assert_instr(uabdl))]
|
#[cfg_attr(test, assert_instr(uabdl2))]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
pub fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
|
pub fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
@@ -264,7 +264,7 @@ pub fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
|
|||||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u32)"]
|
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u32)"]
|
||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[cfg_attr(test, assert_instr(uabdl))]
|
#[cfg_attr(test, assert_instr(uabdl2))]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
pub fn vabdl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
|
pub fn vabdl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
@@ -7177,7 +7177,7 @@ pub fn vcvt_high_f32_f16(a: float16x8_t) -> float32x4_t {
|
|||||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_high_f32_f64)"]
|
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_high_f32_f64)"]
|
||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[cfg_attr(test, assert_instr(fcvtn))]
|
#[cfg_attr(test, assert_instr(fcvtn2))]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
pub fn vcvt_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
|
pub fn vcvt_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
|
||||||
unsafe { simd_shuffle!(a, simd_cast(b), [0, 1, 2, 3]) }
|
unsafe { simd_shuffle!(a, simd_cast(b), [0, 1, 2, 3]) }
|
||||||
@@ -7186,7 +7186,7 @@ pub fn vcvt_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
|
|||||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_high_f64_f32)"]
|
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_high_f64_f32)"]
|
||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[cfg_attr(test, assert_instr(fcvtl))]
|
#[cfg_attr(test, assert_instr(fcvtl2))]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
pub fn vcvt_high_f64_f32(a: float32x4_t) -> float64x2_t {
|
pub fn vcvt_high_f64_f32(a: float32x4_t) -> float64x2_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
@@ -9286,7 +9286,7 @@ pub fn vcvtx_f32_f64(a: float64x2_t) -> float32x2_t {
|
|||||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtx_high_f32_f64)"]
|
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtx_high_f32_f64)"]
|
||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[cfg_attr(test, assert_instr(fcvtxn))]
|
#[cfg_attr(test, assert_instr(fcvtxn2))]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
pub fn vcvtx_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
|
pub fn vcvtx_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
|
||||||
unsafe { simd_shuffle!(a, vcvtx_f32_f64(b), [0, 1, 2, 3]) }
|
unsafe { simd_shuffle!(a, vcvtx_f32_f64(b), [0, 1, 2, 3]) }
|
||||||
@@ -14893,7 +14893,7 @@ pub fn vmull_high_n_u32(a: uint32x4_t, b: u32) -> uint64x2_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon,aes")]
|
#[target_feature(enable = "neon,aes")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(pmull))]
|
#[cfg_attr(test, assert_instr(pmull2))]
|
||||||
pub fn vmull_high_p64(a: poly64x2_t, b: poly64x2_t) -> p128 {
|
pub fn vmull_high_p64(a: poly64x2_t, b: poly64x2_t) -> p128 {
|
||||||
unsafe { vmull_p64(simd_extract!(a, 1), simd_extract!(b, 1)) }
|
unsafe { vmull_p64(simd_extract!(a, 1), simd_extract!(b, 1)) }
|
||||||
}
|
}
|
||||||
@@ -14902,7 +14902,7 @@ pub fn vmull_high_p64(a: poly64x2_t, b: poly64x2_t) -> p128 {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(pmull))]
|
#[cfg_attr(test, assert_instr(pmull2))]
|
||||||
pub fn vmull_high_p8(a: poly8x16_t, b: poly8x16_t) -> poly16x8_t {
|
pub fn vmull_high_p8(a: poly8x16_t, b: poly8x16_t) -> poly16x8_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let a: poly8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
|
let a: poly8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
|
||||||
@@ -26497,7 +26497,7 @@ pub fn vsubh_f16(a: f16, b: f16) -> f16 {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(ssubl))]
|
#[cfg_attr(test, assert_instr(ssubl2))]
|
||||||
pub fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
|
pub fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
|
let c: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
|
||||||
@@ -26512,7 +26512,7 @@ pub fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(ssubl))]
|
#[cfg_attr(test, assert_instr(ssubl2))]
|
||||||
pub fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
|
pub fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
|
let c: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
|
||||||
@@ -26527,7 +26527,7 @@ pub fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(ssubl))]
|
#[cfg_attr(test, assert_instr(ssubl2))]
|
||||||
pub fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
|
pub fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: int32x2_t = simd_shuffle!(a, a, [2, 3]);
|
let c: int32x2_t = simd_shuffle!(a, a, [2, 3]);
|
||||||
@@ -26542,7 +26542,7 @@ pub fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(usubl))]
|
#[cfg_attr(test, assert_instr(usubl2))]
|
||||||
pub fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
|
pub fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: uint8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
|
let c: uint8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
|
||||||
@@ -26557,7 +26557,7 @@ pub fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(usubl))]
|
#[cfg_attr(test, assert_instr(usubl2))]
|
||||||
pub fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
|
pub fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: uint16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
|
let c: uint16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
|
||||||
@@ -26572,7 +26572,7 @@ pub fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(usubl))]
|
#[cfg_attr(test, assert_instr(usubl2))]
|
||||||
pub fn vsubl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
|
pub fn vsubl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: uint32x2_t = simd_shuffle!(a, a, [2, 3]);
|
let c: uint32x2_t = simd_shuffle!(a, a, [2, 3]);
|
||||||
@@ -26587,7 +26587,7 @@ pub fn vsubl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(ssubw))]
|
#[cfg_attr(test, assert_instr(ssubw2))]
|
||||||
pub fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
|
pub fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
|
let c: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
|
||||||
@@ -26599,7 +26599,7 @@ pub fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(ssubw))]
|
#[cfg_attr(test, assert_instr(ssubw2))]
|
||||||
pub fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
|
pub fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
|
let c: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
|
||||||
@@ -26611,7 +26611,7 @@ pub fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(ssubw))]
|
#[cfg_attr(test, assert_instr(ssubw2))]
|
||||||
pub fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
|
pub fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: int32x2_t = simd_shuffle!(b, b, [2, 3]);
|
let c: int32x2_t = simd_shuffle!(b, b, [2, 3]);
|
||||||
@@ -26623,7 +26623,7 @@ pub fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(usubw))]
|
#[cfg_attr(test, assert_instr(usubw2))]
|
||||||
pub fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
|
pub fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
|
let c: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
|
||||||
@@ -26635,7 +26635,7 @@ pub fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(usubw))]
|
#[cfg_attr(test, assert_instr(usubw2))]
|
||||||
pub fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
|
pub fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
|
let c: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
|
||||||
@@ -26647,7 +26647,7 @@ pub fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
|
|||||||
#[inline]
|
#[inline]
|
||||||
#[target_feature(enable = "neon")]
|
#[target_feature(enable = "neon")]
|
||||||
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
|
||||||
#[cfg_attr(test, assert_instr(usubw))]
|
#[cfg_attr(test, assert_instr(usubw2))]
|
||||||
pub fn vsubw_high_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
|
pub fn vsubw_high_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
|
||||||
unsafe {
|
unsafe {
|
||||||
let c: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
|
let c: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ intrinsics:
|
|||||||
arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
|
arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
|
||||||
return_type: "{neon_type[1]}"
|
return_type: "{neon_type[1]}"
|
||||||
attr: [*neon-stable]
|
attr: [*neon-stable]
|
||||||
assert_instr: [sabdl]
|
assert_instr: [sabdl2]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
- [int8x16_t, int16x8_t, int8x8_t, uint8x8_t]
|
- [int8x16_t, int16x8_t, int8x8_t, uint8x8_t]
|
||||||
@@ -230,7 +230,7 @@ intrinsics:
|
|||||||
- stable
|
- stable
|
||||||
- - 'feature = "neon_intrinsics"'
|
- - 'feature = "neon_intrinsics"'
|
||||||
- 'since = "1.59.0"'
|
- 'since = "1.59.0"'
|
||||||
assert_instr: [sabdl]
|
assert_instr: [sabdl2]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
- [int16x8_t, int32x4_t, int16x4_t, uint16x4_t]
|
- [int16x8_t, int32x4_t, int16x4_t, uint16x4_t]
|
||||||
@@ -273,7 +273,7 @@ intrinsics:
|
|||||||
- stable
|
- stable
|
||||||
- - 'feature = "neon_intrinsics"'
|
- - 'feature = "neon_intrinsics"'
|
||||||
- 'since = "1.59.0"'
|
- 'since = "1.59.0"'
|
||||||
assert_instr: [sabdl]
|
assert_instr: [sabdl2]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
- [int32x4_t, int64x2_t, int32x2_t, uint32x2_t]
|
- [int32x4_t, int64x2_t, int32x2_t, uint32x2_t]
|
||||||
@@ -1462,7 +1462,7 @@ intrinsics:
|
|||||||
arguments: ["a: {neon_type[0]}"]
|
arguments: ["a: {neon_type[0]}"]
|
||||||
return_type: "{neon_type[1]}"
|
return_type: "{neon_type[1]}"
|
||||||
attr:
|
attr:
|
||||||
- FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtl]]}]]
|
- FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtl2]]}]]
|
||||||
- FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
|
- FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
@@ -1530,7 +1530,7 @@ intrinsics:
|
|||||||
arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
|
arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
|
||||||
return_type: "{neon_type[2]}"
|
return_type: "{neon_type[2]}"
|
||||||
attr:
|
attr:
|
||||||
- FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtn]]}]]
|
- FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtn2]]}]]
|
||||||
- FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
|
- FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
@@ -1582,7 +1582,7 @@ intrinsics:
|
|||||||
arguments: ["a: {type[0]}", "b: {neon_type[1]}"]
|
arguments: ["a: {type[0]}", "b: {neon_type[1]}"]
|
||||||
return_type: "{type[2]}"
|
return_type: "{type[2]}"
|
||||||
attr:
|
attr:
|
||||||
- FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtxn]]}]]
|
- FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtxn2]]}]]
|
||||||
- FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
|
- FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
@@ -5147,7 +5147,7 @@ intrinsics:
|
|||||||
attr:
|
attr:
|
||||||
- *neon-stable
|
- *neon-stable
|
||||||
safety: safe
|
safety: safe
|
||||||
assert_instr: [pmull]
|
assert_instr: [pmull2]
|
||||||
types:
|
types:
|
||||||
- [poly8x16_t, poly8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', poly16x8_t]
|
- [poly8x16_t, poly8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', poly16x8_t]
|
||||||
compose:
|
compose:
|
||||||
@@ -5169,7 +5169,7 @@ intrinsics:
|
|||||||
- *neon-aes
|
- *neon-aes
|
||||||
- *neon-stable
|
- *neon-stable
|
||||||
safety: safe
|
safety: safe
|
||||||
assert_instr: [pmull]
|
assert_instr: [pmull2]
|
||||||
types:
|
types:
|
||||||
- [poly64x2_t, "p128"]
|
- [poly64x2_t, "p128"]
|
||||||
compose:
|
compose:
|
||||||
@@ -5741,7 +5741,7 @@ intrinsics:
|
|||||||
arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
|
arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
|
||||||
return_type: "{neon_type[0]}"
|
return_type: "{neon_type[0]}"
|
||||||
attr: [*neon-stable]
|
attr: [*neon-stable]
|
||||||
assert_instr: [ssubw]
|
assert_instr: [ssubw2]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
- [int16x8_t, int8x16_t, int8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]']
|
- [int16x8_t, int8x16_t, int8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]']
|
||||||
@@ -5762,7 +5762,7 @@ intrinsics:
|
|||||||
arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
|
arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
|
||||||
return_type: "{neon_type[0]}"
|
return_type: "{neon_type[0]}"
|
||||||
attr: [*neon-stable]
|
attr: [*neon-stable]
|
||||||
assert_instr: [usubw]
|
assert_instr: [usubw2]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
- [uint16x8_t, uint8x16_t, uint8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]']
|
- [uint16x8_t, uint8x16_t, uint8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]']
|
||||||
@@ -5783,7 +5783,7 @@ intrinsics:
|
|||||||
arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
|
arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
|
||||||
return_type: "{neon_type[1]}"
|
return_type: "{neon_type[1]}"
|
||||||
attr: [*neon-stable]
|
attr: [*neon-stable]
|
||||||
assert_instr: [ssubl]
|
assert_instr: [ssubl2]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
- [int8x16_t, int16x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', int8x8_t]
|
- [int8x16_t, int16x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', int8x8_t]
|
||||||
@@ -5813,7 +5813,7 @@ intrinsics:
|
|||||||
arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
|
arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
|
||||||
return_type: "{neon_type[1]}"
|
return_type: "{neon_type[1]}"
|
||||||
attr: [*neon-stable]
|
attr: [*neon-stable]
|
||||||
assert_instr: [usubl]
|
assert_instr: [usubl2]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
- [uint8x16_t, uint16x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', uint8x8_t]
|
- [uint8x16_t, uint16x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', uint8x8_t]
|
||||||
@@ -9909,7 +9909,7 @@ intrinsics:
|
|||||||
return_type: "{neon_type[0]}"
|
return_type: "{neon_type[0]}"
|
||||||
attr:
|
attr:
|
||||||
- FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
|
- FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
|
||||||
- FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [uabal]]}]]
|
- FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [uabal2]]}]]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
- [uint16x8_t, uint8x16_t, uint8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', '[8, 9, 10, 11, 12, 13, 14, 15]']
|
- [uint16x8_t, uint8x16_t, uint8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', '[8, 9, 10, 11, 12, 13, 14, 15]']
|
||||||
@@ -9936,7 +9936,7 @@ intrinsics:
|
|||||||
return_type: "{neon_type[0]}"
|
return_type: "{neon_type[0]}"
|
||||||
attr:
|
attr:
|
||||||
- *neon-stable
|
- *neon-stable
|
||||||
- FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [sabal]]}]]
|
- FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [sabal2]]}]]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
- [int16x8_t, int8x16_t, int8x16_t, '[8, 9, 10, 11, 12, 13, 14, 15]', int8x8_t, uint8x8_t]
|
- [int16x8_t, int8x16_t, int8x16_t, '[8, 9, 10, 11, 12, 13, 14, 15]', int8x8_t, uint8x8_t]
|
||||||
@@ -11345,7 +11345,7 @@ intrinsics:
|
|||||||
arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
|
arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
|
||||||
return_type: "{neon_type[1]}"
|
return_type: "{neon_type[1]}"
|
||||||
attr:
|
attr:
|
||||||
- FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [uabdl]]}]]
|
- FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [uabdl2]]}]]
|
||||||
- FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
|
- FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
|
||||||
safety: safe
|
safety: safe
|
||||||
types:
|
types:
|
||||||
|
|||||||
Reference in New Issue
Block a user