use simd_saturating_{add, sub} on neon
This commit is contained in:
parent
0b0c42478f
commit
98bd1d7445
2 changed files with 48 additions and 316 deletions
|
|
@ -36978,15 +36978,7 @@ pub fn vqabsq_s32(a: int32x4_t) -> int32x4_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqadd.v8i8"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.sadd.sat.v8i8")]
|
||||
fn _vqadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
|
||||
}
|
||||
unsafe { _vqadd_s8(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s8)"]
|
||||
|
|
@ -37007,15 +36999,7 @@ pub fn vqadd_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqadd.v16i8"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.sadd.sat.v16i8")]
|
||||
fn _vqaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
|
||||
}
|
||||
unsafe { _vqaddq_s8(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s16)"]
|
||||
|
|
@ -37036,15 +37020,7 @@ pub fn vqaddq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqadd.v4i16"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.sadd.sat.v4i16")]
|
||||
fn _vqadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
|
||||
}
|
||||
unsafe { _vqadd_s16(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s16)"]
|
||||
|
|
@ -37065,15 +37041,7 @@ pub fn vqadd_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqadd.v8i16"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.sadd.sat.v8i16")]
|
||||
fn _vqaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
|
||||
}
|
||||
unsafe { _vqaddq_s16(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s32)"]
|
||||
|
|
@ -37094,15 +37062,7 @@ pub fn vqaddq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqadd.v2i32"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.sadd.sat.v2i32")]
|
||||
fn _vqadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
|
||||
}
|
||||
unsafe { _vqadd_s32(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s32)"]
|
||||
|
|
@ -37123,15 +37083,7 @@ pub fn vqadd_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqadd.v4i32"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.sadd.sat.v4i32")]
|
||||
fn _vqaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
|
||||
}
|
||||
unsafe { _vqaddq_s32(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_s64)"]
|
||||
|
|
@ -37152,15 +37104,7 @@ pub fn vqaddq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqadd_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqadd.v1i64"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.sadd.sat.v1i64")]
|
||||
fn _vqadd_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
|
||||
}
|
||||
unsafe { _vqadd_s64(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_s64)"]
|
||||
|
|
@ -37181,15 +37125,7 @@ pub fn vqadd_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqaddq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqadd.v2i64"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.sadd.sat.v2i64")]
|
||||
fn _vqaddq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
|
||||
}
|
||||
unsafe { _vqaddq_s64(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u8)"]
|
||||
|
|
@ -37210,15 +37146,7 @@ pub fn vqaddq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqadd.v8i8"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.uadd.sat.v8i8")]
|
||||
fn _vqadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
|
||||
}
|
||||
unsafe { _vqadd_u8(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u8)"]
|
||||
|
|
@ -37239,15 +37167,7 @@ pub fn vqadd_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqadd.v16i8"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.uadd.sat.v16i8")]
|
||||
fn _vqaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
|
||||
}
|
||||
unsafe { _vqaddq_u8(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u16)"]
|
||||
|
|
@ -37268,15 +37188,7 @@ pub fn vqaddq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqadd.v4i16"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.uadd.sat.v4i16")]
|
||||
fn _vqadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
|
||||
}
|
||||
unsafe { _vqadd_u16(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u16)"]
|
||||
|
|
@ -37297,15 +37209,7 @@ pub fn vqadd_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqadd.v8i16"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.uadd.sat.v8i16")]
|
||||
fn _vqaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
|
||||
}
|
||||
unsafe { _vqaddq_u16(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u32)"]
|
||||
|
|
@ -37326,15 +37230,7 @@ pub fn vqaddq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqadd.v2i32"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.uadd.sat.v2i32")]
|
||||
fn _vqadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
|
||||
}
|
||||
unsafe { _vqadd_u32(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u32)"]
|
||||
|
|
@ -37355,15 +37251,7 @@ pub fn vqadd_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqadd.v4i32"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.uadd.sat.v4i32")]
|
||||
fn _vqaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
|
||||
}
|
||||
unsafe { _vqaddq_u32(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqadd_u64)"]
|
||||
|
|
@ -37384,15 +37272,7 @@ pub fn vqaddq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqadd_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqadd.v1i64"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.uadd.sat.v1i64")]
|
||||
fn _vqadd_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t;
|
||||
}
|
||||
unsafe { _vqadd_u64(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Saturating add"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqaddq_u64)"]
|
||||
|
|
@ -37413,15 +37293,7 @@ pub fn vqadd_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqaddq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqadd.v2i64"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.uadd.sat.v2i64")]
|
||||
fn _vqaddq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t;
|
||||
}
|
||||
unsafe { _vqaddq_u64(a, b) }
|
||||
unsafe { simd_saturating_add(a, b) }
|
||||
}
|
||||
#[doc = "Vector widening saturating doubling multiply accumulate with scalar"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqdmlal_lane_s16)"]
|
||||
|
|
@ -41259,15 +41131,7 @@ pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqsub.v8i8"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.ssub.sat.v8i8")]
|
||||
fn _vqsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
|
||||
}
|
||||
unsafe { _vqsub_s8(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s8)"]
|
||||
|
|
@ -41288,15 +41152,7 @@ pub fn vqsub_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqsub.v16i8"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.ssub.sat.v16i8")]
|
||||
fn _vqsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
|
||||
}
|
||||
unsafe { _vqsubq_s8(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s16)"]
|
||||
|
|
@ -41317,15 +41173,7 @@ pub fn vqsubq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqsub.v4i16"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.ssub.sat.v4i16")]
|
||||
fn _vqsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
|
||||
}
|
||||
unsafe { _vqsub_s16(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s16)"]
|
||||
|
|
@ -41346,15 +41194,7 @@ pub fn vqsub_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqsub.v8i16"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.ssub.sat.v8i16")]
|
||||
fn _vqsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
|
||||
}
|
||||
unsafe { _vqsubq_s16(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s32)"]
|
||||
|
|
@ -41375,15 +41215,7 @@ pub fn vqsubq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqsub.v2i32"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.ssub.sat.v2i32")]
|
||||
fn _vqsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
|
||||
}
|
||||
unsafe { _vqsub_s32(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s32)"]
|
||||
|
|
@ -41404,15 +41236,7 @@ pub fn vqsub_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqsub.v4i32"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.ssub.sat.v4i32")]
|
||||
fn _vqsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
|
||||
}
|
||||
unsafe { _vqsubq_s32(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_s64)"]
|
||||
|
|
@ -41433,15 +41257,7 @@ pub fn vqsubq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqsub.v1i64"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.ssub.sat.v1i64")]
|
||||
fn _vqsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t;
|
||||
}
|
||||
unsafe { _vqsub_s64(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_s64)"]
|
||||
|
|
@ -41462,15 +41278,7 @@ pub fn vqsub_s64(a: int64x1_t, b: int64x1_t) -> int64x1_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.sqsub.v2i64"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.ssub.sat.v2i64")]
|
||||
fn _vqsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t;
|
||||
}
|
||||
unsafe { _vqsubq_s64(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u8)"]
|
||||
|
|
@ -41491,15 +41299,7 @@ pub fn vqsubq_s64(a: int64x2_t, b: int64x2_t) -> int64x2_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqsub.v8i8"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.usub.sat.v8i8")]
|
||||
fn _vqsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
|
||||
}
|
||||
unsafe { _vqsub_u8(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u8)"]
|
||||
|
|
@ -41520,15 +41320,7 @@ pub fn vqsub_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqsub.v16i8"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.usub.sat.v16i8")]
|
||||
fn _vqsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
|
||||
}
|
||||
unsafe { _vqsubq_u8(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u16)"]
|
||||
|
|
@ -41549,15 +41341,7 @@ pub fn vqsubq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqsub.v4i16"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.usub.sat.v4i16")]
|
||||
fn _vqsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
|
||||
}
|
||||
unsafe { _vqsub_u16(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u16)"]
|
||||
|
|
@ -41578,15 +41362,7 @@ pub fn vqsub_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqsub.v8i16"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.usub.sat.v8i16")]
|
||||
fn _vqsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
|
||||
}
|
||||
unsafe { _vqsubq_u16(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u32)"]
|
||||
|
|
@ -41607,15 +41383,7 @@ pub fn vqsubq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqsub.v2i32"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.usub.sat.v2i32")]
|
||||
fn _vqsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
|
||||
}
|
||||
unsafe { _vqsub_u32(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u32)"]
|
||||
|
|
@ -41636,15 +41404,7 @@ pub fn vqsub_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqsub.v4i32"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.usub.sat.v4i32")]
|
||||
fn _vqsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
|
||||
}
|
||||
unsafe { _vqsubq_u32(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsub_u64)"]
|
||||
|
|
@ -41665,15 +41425,7 @@ pub fn vqsubq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqsub.v1i64"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.usub.sat.v1i64")]
|
||||
fn _vqsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t;
|
||||
}
|
||||
unsafe { _vqsub_u64(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Saturating subtract"]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqsubq_u64)"]
|
||||
|
|
@ -41694,15 +41446,7 @@ pub fn vqsub_u64(a: uint64x1_t, b: uint64x1_t) -> uint64x1_t {
|
|||
unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
|
||||
)]
|
||||
pub fn vqsubq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t {
|
||||
unsafe extern "unadjusted" {
|
||||
#[cfg_attr(
|
||||
any(target_arch = "aarch64", target_arch = "arm64ec"),
|
||||
link_name = "llvm.aarch64.neon.uqsub.v2i64"
|
||||
)]
|
||||
#[cfg_attr(target_arch = "arm", link_name = "llvm.usub.sat.v2i64")]
|
||||
fn _vqsubq_u64(a: uint64x2_t, b: uint64x2_t) -> uint64x2_t;
|
||||
}
|
||||
unsafe { _vqsubq_u64(a, b) }
|
||||
unsafe { simd_saturating_sub(a, b) }
|
||||
}
|
||||
#[doc = "Rounding Add returning High Narrow (high half)."]
|
||||
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vraddhn_high_s16)"]
|
||||
|
|
|
|||
|
|
@ -2290,13 +2290,10 @@ intrinsics:
|
|||
- [uint64x1_t, u64, i64]
|
||||
- [uint64x2_t, u64, i64]
|
||||
compose:
|
||||
- LLVMLink:
|
||||
name: "uqsub.{neon_type[0]}"
|
||||
links:
|
||||
- link: "llvm.aarch64.neon.uqsub.v{neon_type[0].lane}{type[2]}"
|
||||
arch: aarch64,arm64ec
|
||||
- link: "llvm.usub.sat.v{neon_type[0].lane}{type[2]}"
|
||||
arch: arm
|
||||
- FnCall:
|
||||
- simd_saturating_sub
|
||||
- - a
|
||||
- b
|
||||
|
||||
- name: "vqsub{neon_type[0].no}"
|
||||
doc: Saturating subtract
|
||||
|
|
@ -2319,13 +2316,10 @@ intrinsics:
|
|||
- [int64x1_t, s64, i64]
|
||||
- [int64x2_t, s64, i64]
|
||||
compose:
|
||||
- LLVMLink:
|
||||
name: "sqsub.{neon_type[0]}"
|
||||
links:
|
||||
- link: "llvm.aarch64.neon.sqsub.v{neon_type[0].lane}{type[2]}"
|
||||
arch: aarch64,arm64ec
|
||||
- link: "llvm.ssub.sat.v{neon_type[0].lane}{type[2]}"
|
||||
arch: arm
|
||||
- FnCall:
|
||||
- simd_saturating_sub
|
||||
- - a
|
||||
- b
|
||||
|
||||
- name: "vhadd{neon_type.no}"
|
||||
doc: Halving add
|
||||
|
|
@ -2541,13 +2535,10 @@ intrinsics:
|
|||
- uint64x1_t
|
||||
- uint64x2_t
|
||||
compose:
|
||||
- LLVMLink:
|
||||
name: "uqadd.{neon_type}"
|
||||
links:
|
||||
- link: "llvm.aarch64.neon.uqadd.{neon_type}"
|
||||
arch: aarch64,arm64ec
|
||||
- link: "llvm.uadd.sat.{neon_type}"
|
||||
arch: arm
|
||||
- FnCall:
|
||||
- simd_saturating_add
|
||||
- - a
|
||||
- b
|
||||
|
||||
- name: "vqadd{neon_type.no}"
|
||||
doc: Saturating add
|
||||
|
|
@ -2570,13 +2561,10 @@ intrinsics:
|
|||
- int64x1_t
|
||||
- int64x2_t
|
||||
compose:
|
||||
- LLVMLink:
|
||||
name: "sqadd.{neon_type}"
|
||||
links:
|
||||
- link: "llvm.aarch64.neon.sqadd.{neon_type}"
|
||||
arch: aarch64,arm64ec
|
||||
- link: "llvm.sadd.sat.{neon_type}"
|
||||
arch: arm
|
||||
- FnCall:
|
||||
- simd_saturating_add
|
||||
- - a
|
||||
- b
|
||||
|
||||
- name: "vld1{neon_type[1].no}"
|
||||
doc: "Load multiple single-element structures to one, two, three, or four registers"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue