Skip to content

Commit 82f8b65

Browse files
committed
sve.rs中新增了除法函数
1 parent f8de7cd commit 82f8b65

File tree

1 file changed

+64
-0
lines changed
  • library/stdarch/crates/core_arch/src/aarch64/sve

1 file changed

+64
-0
lines changed

library/stdarch/crates/core_arch/src/aarch64/sve/sve.rs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3105,6 +3105,70 @@ pub fn svmul_s32_z(pg: svbool_t, op1: svint32_t, op2: svint32_t) -> svint32_t {
31053105
pub fn svmul_n_s32_z(pg: svbool_t, op1: svint32_t, op2: i32) -> svint32_t {
31063106
svmul_s32_z(pg, op1, svdup_n_s32(op2))
31073107
}
3108+
#[doc = "Divide"]
3109+
#[doc = ""]
3110+
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svdiv[_s32]_m)"]
3111+
#[inline]
3112+
#[target_feature(enable = "sve")]
3113+
#[unstable(feature = "stdarch_aarch64_sve", issue = "none")]
3114+
#[cfg_attr(test, assert_instr(sdiv))]
3115+
pub fn svdiv_s32_m(pg: svbool_t, op1: svint32_t, op2: svint32_t) -> svint32_t {
3116+
unsafe extern "C" {
3117+
#[cfg_attr(target_arch = "aarch64", link_name = "llvm.aarch64.sve.sdiv.nxv4i32")]
3118+
fn _svdiv_s32_m(pg: svbool4_t, op1: svint32_t, op2: svint32_t) -> svint32_t;
3119+
}
3120+
unsafe { _svdiv_s32_m(simd_cast(pg), op1, op2) }
3121+
}
3122+
#[doc = "Divide"]
3123+
#[doc = ""]
3124+
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svdiv[_n_s32]_m)"]
3125+
#[inline]
3126+
#[target_feature(enable = "sve")]
3127+
#[unstable(feature = "stdarch_aarch64_sve", issue = "none")]
3128+
#[cfg_attr(test, assert_instr(sdiv))]
3129+
pub fn svdiv_n_s32_m(pg: svbool_t, op1: svint32_t, op2: i32) -> svint32_t {
3130+
svdiv_s32_m(pg, op1, svdup_n_s32(op2))
3131+
}
3132+
#[doc = "Divide"]
3133+
#[doc = ""]
3134+
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svdiv[_s32]_x)"]
3135+
#[inline]
3136+
#[target_feature(enable = "sve")]
3137+
#[unstable(feature = "stdarch_aarch64_sve", issue = "none")]
3138+
#[cfg_attr(test, assert_instr(sdiv))]
3139+
pub fn svdiv_s32_x(pg: svbool_t, op1: svint32_t, op2: svint32_t) -> svint32_t {
3140+
svdiv_s32_m(pg, op1, op2)
3141+
}
3142+
#[doc = "Divide"]
3143+
#[doc = ""]
3144+
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svdiv[_n_s32]_x)"]
3145+
#[inline]
3146+
#[target_feature(enable = "sve")]
3147+
#[unstable(feature = "stdarch_aarch64_sve", issue = "none")]
3148+
#[cfg_attr(test, assert_instr(sdiv))]
3149+
pub fn svdiv_n_s32_x(pg: svbool_t, op1: svint32_t, op2: i32) -> svint32_t {
3150+
svdiv_s32_x(pg, op1, svdup_n_s32(op2))
3151+
}
3152+
#[doc = "Divide"]
3153+
#[doc = ""]
3154+
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svdiv[_s32]_z)"]
3155+
#[inline]
3156+
#[target_feature(enable = "sve")]
3157+
#[unstable(feature = "stdarch_aarch64_sve", issue = "none")]
3158+
#[cfg_attr(test, assert_instr(sdiv))]
3159+
pub fn svdiv_s32_z(pg: svbool_t, op1: svint32_t, op2: svint32_t) -> svint32_t {
3160+
svdiv_s32_m(pg, svsel_s32(pg, op1, svdup_n_s32(0)), op2)
3161+
}
3162+
#[doc = "Divide"]
3163+
#[doc = ""]
3164+
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svdiv[_n_s32]_z)"]
3165+
#[inline]
3166+
#[target_feature(enable = "sve")]
3167+
#[unstable(feature = "stdarch_aarch64_sve", issue = "none")]
3168+
#[cfg_attr(test, assert_instr(sdiv))]
3169+
pub fn svdiv_n_s32_z(pg: svbool_t, op1: svint32_t, op2: i32) -> svint32_t {
3170+
svdiv_s32_z(pg, op1, svdup_n_s32(op2))
3171+
}
31083172
#[doc = "Multiply"]
31093173
#[doc = ""]
31103174
#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/svmul[_s64]_m)"]

0 commit comments

Comments
 (0)