You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 KiB
184 KiB
uid |
---|
neon-intrinsics |
Burst Arm Neon intrinsics reference
This page contains an ordered reference for the APIs in Unity.Burst.Intrinsics.Arm.Neon. For information on how to use these, see the documentation on Processor specific SIMD extensions.
Intrinsics type creation and conversion
Operation | Description | APIs |
---|---|---|
vcreate | Create vector | Click here to expand the API listvcreate_f16vcreate_f32 vcreate_f64 vcreate_s16 vcreate_s32 vcreate_s64 vcreate_s8 vcreate_u16 vcreate_u32 vcreate_u64 vcreate_u8 |
vdup_n | Duplicate (splat) value | Click here to expand the API listvdup_n_f32vdup_n_f64 vdup_n_s16 vdup_n_s32 vdup_n_s64 vdup_n_s8 vdup_n_u16 vdup_n_u32 vdup_n_u64 vdup_n_u8 vdupq_n_f32 vdupq_n_f64 vdupq_n_s16 vdupq_n_s32 vdupq_n_s64 vdupq_n_s8 vdupq_n_u16 vdupq_n_u32 vdupq_n_u64 vdupq_n_u8 |
vdup_lane | Duplicate (splat) vector element | Click here to expand the API listvdup_lane_f32vdup_lane_f64 vdup_lane_s16 vdup_lane_s32 vdup_lane_s64 vdup_lane_s8 vdup_lane_u16 vdup_lane_u32 vdup_lane_u64 vdup_lane_u8 vdup_laneq_f32 vdup_laneq_f64 vdup_laneq_s16 vdup_laneq_s32 vdup_laneq_s64 vdup_laneq_s8 vdup_laneq_u16 vdup_laneq_u32 vdup_laneq_u64 vdup_laneq_u8 vdupq_lane_f32 vdupq_lane_f64 vdupq_lane_s16 vdupq_lane_s32 vdupq_lane_s64 vdupq_lane_s8 vdupq_lane_u16 vdupq_lane_u32 vdupq_lane_u64 vdupq_lane_u8 vdupq_laneq_f32 vdupq_laneq_f64 vdupq_laneq_s16 vdupq_laneq_s32 vdupq_laneq_s64 vdupq_laneq_s8 vdupq_laneq_u16 vdupq_laneq_u32 vdupq_laneq_u64 vdupq_laneq_u8 vdups_lane_f32 vdups_lane_s32 vdups_lane_u32 vdups_laneq_f32 vdups_laneq_s32 vdups_laneq_u32 vdupb_lane_s8 vdupb_lane_u8 vdupb_laneq_s8 vdupb_laneq_u8 vdupd_lane_f64 vdupd_lane_s64 vdupd_lane_u64 vdupd_laneq_f64 vdupd_laneq_s64 vdupd_laneq_u64 vduph_lane_s16 vduph_lane_u16 vduph_laneq_s16 vduph_laneq_u16 |
vmov_n | Duplicate (splat) value | Click here to expand the API listvmov_n_f32vmov_n_f64 vmov_n_s16 vmov_n_s32 vmov_n_s64 vmov_n_s8 vmov_n_u16 vmov_n_u32 vmov_n_u64 vmov_n_u8 vmovq_n_f32 vmovq_n_f64 vmovq_n_s16 vmovq_n_s32 vmovq_n_s64 vmovq_n_s8 vmovq_n_u16 vmovq_n_u32 vmovq_n_u64 vmovq_n_u8 |
vcopy_lane | Insert vector element from another vector element | Click here to expand the API listvcopy_lane_f32vcopy_lane_f64 vcopy_lane_s16 vcopy_lane_s32 vcopy_lane_s64 vcopy_lane_s8 vcopy_lane_u16 vcopy_lane_u32 vcopy_lane_u64 vcopy_lane_u8 vcopy_laneq_f32 vcopy_laneq_f64 vcopy_laneq_s16 vcopy_laneq_s32 vcopy_laneq_s64 vcopy_laneq_s8 vcopy_laneq_u16 vcopy_laneq_u32 vcopy_laneq_u64 vcopy_laneq_u8 vcopyq_lane_f32 vcopyq_lane_f64 vcopyq_lane_s16 vcopyq_lane_s32 vcopyq_lane_s64 vcopyq_lane_s8 vcopyq_lane_u16 vcopyq_lane_u32 vcopyq_lane_u64 vcopyq_lane_u8 vcopyq_laneq_f32 vcopyq_laneq_f64 vcopyq_laneq_s16 vcopyq_laneq_s32 vcopyq_laneq_s64 vcopyq_laneq_s8 vcopyq_laneq_u16 vcopyq_laneq_u32 vcopyq_laneq_u64 vcopyq_laneq_u8 |
vcombine | Join two vectors into a larger vector | Click here to expand the API listvcombine_f16vcombine_f32 vcombine_f64 vcombine_s16 vcombine_s32 vcombine_s64 vcombine_s8 vcombine_u16 vcombine_u32 vcombine_u64 vcombine_u8 |
vget_high | Get the higher half of the vector | Click here to expand the API listvget_high_f32vget_high_f64 vget_high_s16 vget_high_s32 vget_high_s64 vget_high_s8 vget_high_u16 vget_high_u32 vget_high_u64 vget_high_u8 |
vget_low | Get the lower half of the vector | Click here to expand the API listvget_low_f32vget_low_f64 vget_low_s16 vget_low_s32 vget_low_s64 vget_low_s8 vget_low_u16 vget_low_u32 vget_low_u64 vget_low_u8 |
Arithmetic
Operation | Description | APIs |
---|---|---|
vadd | Add | Click here to expand the API listvadd_f32vadd_f64 vadd_s16 vadd_s32 vadd_s64 vadd_s8 vadd_u16 vadd_u32 vadd_u64 vadd_u8 vaddq_f32 vaddq_f64 vaddq_s16 vaddq_s32 vaddq_s64 vaddq_s8 vaddq_u16 vaddq_u32 vaddq_u64 vaddq_u8 vaddd_s64 vaddd_u64 |
vaddv | Add across vector | Click here to expand the API listvaddv_f32vaddv_s16 vaddv_s32 vaddv_s8 vaddv_u16 vaddv_u32 vaddv_u8 vaddvq_f32 vaddvq_f64 vaddvq_s16 vaddvq_s32 vaddvq_s64 vaddvq_s8 vaddvq_u16 vaddvq_u32 vaddvq_u64 vaddvq_u8 |
vaddl | Add long | Click here to expand the API listvaddl_s16vaddl_s32 vaddl_s8 vaddl_u16 vaddl_u32 vaddl_u8 vaddl_high_s16 vaddl_high_s32 vaddl_high_s8 vaddl_high_u16 vaddl_high_u32 vaddl_high_u8 |
vaddlv | Add long across Vector | Click here to expand the API listvaddlv_s16vaddlv_s32 vaddlv_s8 vaddlv_u16 vaddlv_u32 vaddlv_u8 vaddlvq_s16 vaddlvq_s32 vaddlvq_s8 vaddlvq_u16 vaddlvq_u32 vaddlvq_u8 |
vaddw | Add wide | Click here to expand the API listvaddw_s16vaddw_s32 vaddw_s8 vaddw_u16 vaddw_u32 vaddw_u8 vaddw_high_s16 vaddw_high_s32 vaddw_high_s8 vaddw_high_u16 vaddw_high_u32 vaddw_high_u8 |
vhadd | Halving add | Click here to expand the API listvhadd_s16vhadd_s32 vhadd_s8 vhadd_u16 vhadd_u32 vhadd_u8 vhaddq_s16 vhaddq_s32 vhaddq_s8 vhaddq_u16 vhaddq_u32 vhaddq_u8 |
vrhadd | Rounding halving add | Click here to expand the API listvrhadd_s16vrhadd_s32 vrhadd_s8 vrhadd_u16 vrhadd_u32 vrhadd_u8 vrhaddq_s16 vrhaddq_s32 vrhaddq_s8 vrhaddq_u16 vrhaddq_u32 vrhaddq_u8 |
vqadd | Saturating add | Click here to expand the API listvqadd_s16vqadd_s32 vqadd_s64 vqadd_s8 vqadd_u16 vqadd_u32 vqadd_u64 vqadd_u8 vqaddq_s16 vqaddq_s32 vqaddq_s64 vqaddq_s8 vqaddq_u16 vqaddq_u32 vqaddq_u64 vqaddq_u8 vqaddb_s8 vqaddb_u8 vqaddh_s16 vqaddh_u16 vqadds_s32 vqadds_u32 vqaddd_s64 vqaddd_u64 |
vsqadd | Unsigned saturating Accumulate of signed value | Click here to expand the API listvsqadd_u16vsqadd_u32 vsqadd_u64 vsqadd_u8 vsqaddq_u16 vsqaddq_u32 vsqaddq_u64 vsqaddq_u8 vsqaddb_u8 vsqaddh_u16 vsqadds_u32 vsqaddd_u64 |
vuqadd | Signed saturating Accumulate of unsigned value | Click here to expand the API listvuqadd_s16vuqadd_s32 vuqadd_s64 vuqadd_s8 vuqaddq_s16 vuqaddq_s32 vuqaddq_s64 vuqaddq_s8 vuqaddb_s8 vuqaddh_s16 vuqadds_s32 vuqaddd_s64 |
vaddhn | Add returning high narrow | Click here to expand the API listvaddhn_s16vaddhn_s32 vaddhn_s64 vaddhn_u16 vaddhn_u32 vaddhn_u64 vaddhn_high_s16 vaddhn_high_s32 vaddhn_high_s64 vaddhn_high_u16 vaddhn_high_u32 vaddhn_high_u64 |
vraddhn | Rounding add returning high narrow | Click here to expand the API listvraddhn_s16vraddhn_s32 vraddhn_s64 vraddhn_u16 vraddhn_u32 vraddhn_u64 vraddhn_high_s16 vraddhn_high_s32 vraddhn_high_s64 vraddhn_high_u16 vraddhn_high_u32 vraddhn_high_u64 |
vpadd | Add pairwise (vector) | Click here to expand the API listvpadd_f32vpadd_s16 vpadd_s32 vpadd_s8 vpadd_u16 vpadd_u32 vpadd_u8 vpaddq_f32 vpaddq_f64 vpaddq_s16 vpaddq_s32 vpaddq_s64 vpaddq_s8 vpaddq_u16 vpaddq_u32 vpaddq_u64 vpaddq_u8 vpadds_f32 vpaddd_f64 vpaddd_s64 vpaddd_u64 |
vpaddl | Signed add long pairwise | Click here to expand the API listvpaddl_s16vpaddl_s32 vpaddl_s8 vpaddl_u16 vpaddl_u32 vpaddl_u8 vpaddlq_s16 vpaddlq_s32 vpaddlq_s8 vpaddlq_u16 vpaddlq_u32 vpaddlq_u8 |
vpadal | Signed add and accumulate long pairwise | Click here to expand the API listvpadal_s16vpadal_s32 vpadal_s8 vpadal_u16 vpadal_u32 vpadal_u8 vpadalq_s16 vpadalq_s32 vpadalq_s8 vpadalq_u16 vpadalq_u32 vpadalq_u8 |
vsub | Subtract | Click here to expand the API listvsub_f32vsub_f64 vsub_s16 vsub_s32 vsub_s64 vsub_s8 vsub_u16 vsub_u32 vsub_u64 vsub_u8 vsubq_f32 vsubq_f64 vsubq_s16 vsubq_s32 vsubq_s64 vsubq_s8 vsubq_u16 vsubq_u32 vsubq_u64 vsubq_u8 vsubd_s64 vsubd_u64 |
vsubl | Subtract long | Click here to expand the API listvsubl_s16vsubl_s32 vsubl_s8 vsubl_u16 vsubl_u32 vsubl_u8 vsubl_high_s16 vsubl_high_s32 vsubl_high_s8 vsubl_high_u16 vsubl_high_u32 vsubl_high_u8 |
vsubw | Subtract wide | Click here to expand the API listvsubw_s16vsubw_s32 vsubw_s8 vsubw_u16 vsubw_u32 vsubw_u8 vsubw_high_s16 vsubw_high_s32 vsubw_high_s8 vsubw_high_u16 vsubw_high_u32 vsubw_high_u8 |
vhsub | Halving subtract | Click here to expand the API listvhsub_s16vhsub_s32 vhsub_s8 vhsub_u16 vhsub_u32 vhsub_u8 vhsubq_s16 vhsubq_s32 vhsubq_s8 vhsubq_u16 vhsubq_u32 vhsubq_u8 |
vqsub | Saturating subtract | Click here to expand the API listvqsub_s16vqsub_s32 vqsub_s64 vqsub_s8 vqsub_u16 vqsub_u32 vqsub_u64 vqsub_u8 vqsubq_s16 vqsubq_s32 vqsubq_s64 vqsubq_s8 vqsubq_u16 vqsubq_u32 vqsubq_u64 vqsubq_u8 vqsubb_s8 vqsubb_u8 vqsubh_s16 vqsubh_u16 vqsubs_s32 vqsubs_u32 vqsubd_s64 vqsubd_u64 |
vsubhn | Subtract returning high narrow | Click here to expand the API listvsubhn_s16vsubhn_s32 vsubhn_s64 vsubhn_u16 vsubhn_u32 vsubhn_u64 vsubhn_high_s16 vsubhn_high_s32 vsubhn_high_s64 vsubhn_high_u16 vsubhn_high_u32 vsubhn_high_u64 |
vrsubhn | Rounding subtract returning high narrow | Click here to expand the API listvrsubhn_s16vrsubhn_s32 vrsubhn_s64 vrsubhn_u16 vrsubhn_u32 vrsubhn_u64 vrsubhn_high_s16 vrsubhn_high_s32 vrsubhn_high_s64 vrsubhn_high_u16 vrsubhn_high_u32 vrsubhn_high_u64 |
Multiply
Operation | Description | APIs |
---|---|---|
vmul | Multiply (vector) | Click here to expand the API listvmul_f32vmul_f64 vmul_s16 vmul_s32 vmul_s8 vmul_u16 vmul_u32 vmul_u8 vmulq_f32 vmulq_f64 vmulq_s16 vmulq_s32 vmulq_s8 vmulq_u16 vmulq_u32 vmulq_u8 |
vmul_n | Vector multiply by scalar | Click here to expand the API listvmul_n_f32vmul_n_f64 vmul_n_s16 vmul_n_s32 vmul_n_u16 vmul_n_u32 vmulq_n_f32 vmulq_n_f64 vmulq_n_s16 vmulq_n_s32 vmulq_n_u16 vmulq_n_u32 |
vmul_lane | Multiply (vector) | Click here to expand the API listvmul_lane_f32vmul_lane_f64 vmul_lane_s16 vmul_lane_s32 vmul_lane_u16 vmul_lane_u32 vmul_laneq_f32 vmul_laneq_f64 vmul_laneq_s16 vmul_laneq_s32 vmul_laneq_u16 vmul_laneq_u32 vmulq_lane_f32 vmulq_lane_f64 vmulq_lane_s16 vmulq_lane_s32 vmulq_lane_u16 vmulq_lane_u32 vmulq_laneq_f32 vmulq_laneq_f64 vmulq_laneq_s16 vmulq_laneq_s32 vmulq_laneq_u16 vmulq_laneq_u32 vmuls_lane_f32 vmuls_laneq_f32 vmuld_lane_f64 vmuld_laneq_f64 |
vmull | Multiply long (vector) | Click here to expand the API listvmull_s16vmull_s32 vmull_s8 vmull_u16 vmull_u32 vmull_u8 vmull_high_s16 vmull_high_s32 vmull_high_s8 vmull_high_u16 vmull_high_u32 vmull_high_u8 |
vmull_n | Vector long multiply by scalar | Click here to expand the API listvmull_n_s16vmull_n_s32 vmull_n_u16 vmull_n_u32 vmull_high_n_s16 vmull_high_n_s32 vmull_high_n_u16 vmull_high_n_u32 |
vmull_lane | Multiply long (vector) | Click here to expand the API listvmull_lane_s16vmull_lane_s32 vmull_lane_u16 vmull_lane_u32 vmull_laneq_s16 vmull_laneq_s32 vmull_laneq_u16 vmull_laneq_u32 vmull_high_lane_s16 vmull_high_lane_s32 vmull_high_lane_u16 vmull_high_lane_u32 vmull_high_laneq_s16 vmull_high_laneq_s32 vmull_high_laneq_u16 vmull_high_laneq_u32 |
vmulx | Floating-point multiply extended | Click here to expand the API listvmulx_f32vmulx_f64 vmulx_lane_f32 vmulx_lane_f64 vmulx_laneq_f32 vmulx_laneq_f64 vmulxq_f32 vmulxq_f64 vmulxq_lane_f32 vmulxq_lane_f64 vmulxq_laneq_f32 vmulxq_laneq_f64 vmulxs_f32 vmulxs_lane_f32 vmulxs_laneq_f32 vmulxd_f64 vmulxd_lane_f64 vmulxd_laneq_f64 |
vmla | Multiply-add to accumulator (vector) | Click here to expand the API listvmla_f32vmla_f64 vmla_s16 vmla_s32 vmla_s8 vmla_u16 vmla_u32 vmla_u8 vmlaq_f32 vmlaq_f64 vmlaq_s16 vmlaq_s32 vmlaq_s8 vmlaq_u16 vmlaq_u32 vmlaq_u8 |
vmla_lane | Vector multiply accumulate with scalar | Click here to expand the API listvmla_lane_f32vmla_lane_s16 vmla_lane_s32 vmla_lane_u16 vmla_lane_u32 vmla_laneq_f32 vmla_laneq_s16 vmla_laneq_s32 vmla_laneq_u16 vmla_laneq_u32 vmlaq_lane_f32 vmlaq_lane_s16 vmlaq_lane_s32 vmlaq_lane_u16 vmlaq_lane_u32 vmlaq_laneq_f32 vmlaq_laneq_s16 vmlaq_laneq_s32 vmlaq_laneq_u16 vmlaq_laneq_u32 |
vmla_n | Vector multiply accumulate with scalar | Click here to expand the API listvmla_n_f32vmla_n_s16 vmla_n_s32 vmla_n_u16 vmla_n_u32 vmlaq_n_f32 vmlaq_n_s16 vmlaq_n_s32 vmlaq_n_u16 vmlaq_n_u32 |
vmlal | Multiply-accumulate long (vector) | Click here to expand the API listvmlal_s16vmlal_s32 vmlal_s8 vmlal_u16 vmlal_u32 vmlal_u8 vmlal_high_s16 vmlal_high_s32 vmlal_high_s8 vmlal_high_u16 vmlal_high_u32 vmlal_high_u8 |
vmlal_lane | Multiply-accumulate long with scalar | Click here to expand the API listvmlal_lane_s16vmlal_lane_s32 vmlal_lane_u16 vmlal_lane_u32 vmlal_laneq_s16 vmlal_laneq_s32 vmlal_laneq_u16 vmlal_laneq_u32 vmlal_high_lane_s16 vmlal_high_lane_s32 vmlal_high_lane_u16 vmlal_high_lane_u32 vmlal_high_laneq_s16 vmlal_high_laneq_s32 vmlal_high_laneq_u16 vmlal_high_laneq_u32 |
vmlal_n | Multiply-accumulate long with scalar | Click here to expand the API listvmlal_n_s16vmlal_n_s32 vmlal_n_u16 vmlal_n_u32 vmlal_high_n_s16 vmlal_high_n_s32 vmlal_high_n_u16 vmlal_high_n_u32 |
vmls | Multiply-subtract from accumulator (vector) | Click here to expand the API listvmls_f32vmls_f64 vmls_s16 vmls_s32 vmls_s8 vmls_u16 vmls_u32 vmls_u8 vmlsq_f32 vmlsq_f64 vmlsq_s16 vmlsq_s32 vmlsq_s8 vmlsq_u16 vmlsq_u32 vmlsq_u8 |
vmls_lane | Vector multiply subtract with scalar | Click here to expand the API listvmls_lane_f32vmls_lane_s16 vmls_lane_s32 vmls_lane_u16 vmls_lane_u32 vmls_laneq_f32 vmls_laneq_s16 vmls_laneq_s32 vmls_laneq_u16 vmls_laneq_u32 vmlsq_lane_f32 vmlsq_lane_s16 vmlsq_lane_s32 vmlsq_lane_u16 vmlsq_lane_u32 vmlsq_laneq_f32 vmlsq_laneq_s16 vmlsq_laneq_s32 vmlsq_laneq_u16 vmlsq_laneq_u32 |
vmls_n | Vector multiply subtract with scalar | Click here to expand the API listvmls_n_f32vmls_n_s16 vmls_n_s32 vmls_n_u16 vmls_n_u32 vmlsq_n_f32 vmlsq_n_s16 vmlsq_n_s32 vmlsq_n_u16 vmlsq_n_u32 |
vmlsl | Multiply-subtract long (vector) | Click here to expand the API listvmlsl_s16vmlsl_s32 vmlsl_s8 vmlsl_u16 vmlsl_u32 vmlsl_u8 vmlsl_high_s16 vmlsl_high_s32 vmlsl_high_s8 vmlsl_high_u16 vmlsl_high_u32 vmlsl_high_u8 |
vmlsl_lane | Vector multiply-subtract long with scalar | Click here to expand the API listvmlsl_lane_s16vmlsl_lane_s32 vmlsl_lane_u16 vmlsl_lane_u32 vmlsl_laneq_s16 vmlsl_laneq_s32 vmlsl_laneq_u16 vmlsl_laneq_u32 vmlsl_high_lane_s16 vmlsl_high_lane_s32 vmlsl_high_lane_u16 vmlsl_high_lane_u32 vmlsl_high_laneq_s16 vmlsl_high_laneq_s32 vmlsl_high_laneq_u16 vmlsl_high_laneq_u32 |
vmlsl_n | Vector multiply-subtract long with scalar | Click here to expand the API listvmlsl_n_s16vmlsl_n_s32 vmlsl_n_u16 vmlsl_n_u32 vmlsl_high_n_s16 vmlsl_high_n_s32 vmlsl_high_n_u16 vmlsl_high_n_u32 |
vqdmull | Signed saturating doubling multiply long | Click here to expand the API listvqdmull_s16vqdmull_s32 vqdmullh_s16 vqdmulls_s32 vqdmull_high_s16 vqdmull_high_s32 |
vqdmull_lane | Vector saturating doubling multiply long with scalar | Click here to expand the API listvqdmull_lane_s16vqdmull_lane_s32 vqdmull_laneq_s16 vqdmull_laneq_s32 vqdmullh_lane_s16 vqdmullh_laneq_s16 vqdmulls_lane_s32 vqdmulls_laneq_s32 vqdmull_high_lane_s16 vqdmull_high_lane_s32 vqdmull_high_laneq_s16 vqdmull_high_laneq_s32 |
vqdmull_n | Vector saturating doubling multiply long with scalar | Click here to expand the API listvqdmull_n_s16vqdmull_n_s32 vqdmull_high_n_s16 vqdmull_high_n_s32 |
vqdmulh | Saturating doubling multiply returning high half | Click here to expand the API listvqdmulh_s16vqdmulh_s32 vqdmulhq_s16 vqdmulhq_s32 vqdmulhh_s16 vqdmulhs_s32 |
vqdmulh_lane | Vector saturating doubling multiply high by scalar | Click here to expand the API listvqdmulh_lane_s16vqdmulh_lane_s32 vqdmulh_laneq_s16 vqdmulh_laneq_s32 vqdmulhq_lane_s16 vqdmulhq_lane_s32 vqdmulhq_laneq_s16 vqdmulhq_laneq_s32 vqdmulhh_lane_s16 vqdmulhh_laneq_s16 vqdmulhs_lane_s32 vqdmulhs_laneq_s32 |
vqdmulh_n | Vector saturating doubling multiply high by scalar | Click here to expand the API listvqdmulh_n_s16vqdmulh_n_s32 vqdmulhq_n_s16 vqdmulhq_n_s32 |
vqrdmulh | Saturating rounding doubling multiply returning high half | Click here to expand the API listvqrdmulh_s16vqrdmulh_s32 vqrdmulhq_s16 vqrdmulhq_s32 vqrdmulhh_s16 vqrdmulhs_s32 |
vqrdmulh_lane | Vector saturating rounding doubling multiply high with scalar | Click here to expand the API listvqrdmulh_lane_s16vqrdmulh_lane_s32 vqrdmulh_laneq_s16 vqrdmulh_laneq_s32 vqrdmulhq_lane_s16 vqrdmulhq_lane_s32 vqrdmulhq_laneq_s16 vqrdmulhq_laneq_s32 vqrdmulhh_lane_s16 vqrdmulhh_laneq_s16 vqrdmulhs_lane_s32 vqrdmulhs_laneq_s32 |
vqrdmulh_n | Vector saturating rounding doubling multiply high with scalar | Click here to expand the API listvqrdmulh_n_s16vqrdmulh_n_s32 vqrdmulhq_n_s16 vqrdmulhq_n_s32 |
vqdmlal | Saturating doubling multiply-add long | Click here to expand the API listvqdmlal_s16vqdmlal_s32 vqdmlalh_s16 vqdmlals_s32 vqdmlal_high_s16 vqdmlal_high_s32 |
vqdmlal_lane | Vector saturating doubling multiply-accumulate long with scalar |
Click here to expand the API listvqdmlal_lane_s16vqdmlal_lane_s32 vqdmlal_laneq_s16 vqdmlal_laneq_s32 vqdmlalh_lane_s16 vqdmlalh_laneq_s16 vqdmlals_lane_s32 vqdmlals_laneq_s32 vqdmlal_high_lane_s16 vqdmlal_high_lane_s32 vqdmlal_high_laneq_s16 vqdmlal_high_laneq_s32 |
vqdmlal_n | Vector saturating doubling multiply-accumulate long with scalar |
Click here to expand the API listvqdmlal_n_s16vqdmlal_n_s32 vqdmlal_high_n_s16 vqdmlal_high_n_s32 |
vqdmlsl | Signed saturating doubling multiply-subtract long | Click here to expand the API listvqdmlsl_s16vqdmlsl_s32 vqdmlslh_s16 vqdmlsls_s32 vqdmlsl_high_s16 vqdmlsl_high_s32 |
vqdmlsl_lane | Vector saturating doubling multiply-subtract long with scalar |
Click here to expand the API listvqdmlsl_lane_s16vqdmlsl_lane_s32 vqdmlsl_laneq_s16 vqdmlsl_laneq_s32 vqdmlslh_lane_s16 vqdmlslh_laneq_s16 vqdmlsls_lane_s32 vqdmlsls_laneq_s32 vqdmlsl_high_lane_s16 vqdmlsl_high_lane_s32 vqdmlsl_high_laneq_s16 vqdmlsl_high_laneq_s32 |
vqdmlsl_n | Vector saturating doubling multiply-subtract long with scalar |
Click here to expand the API listvqdmlsl_n_s16vqdmlsl_n_s32 vqdmlsl_high_n_s16 vqdmlsl_high_n_s32 |
vqrdmlah | Saturating rounding doubling multiply accumulate returning high half (vector) |
Click here to expand the API listvqrdmlah_s16vqrdmlah_s32 vqrdmlahq_s16 vqrdmlahq_s32 vqrdmlahh_s16 vqrdmlahs_s32 |
vqrdmlah_lane | Saturating rounding doubling multiply accumulate returning high half (vector) |
Click here to expand the API listvqrdmlah_lane_s16vqrdmlah_lane_s32 vqrdmlah_laneq_s16 vqrdmlah_laneq_s32 vqrdmlahq_lane_s16 vqrdmlahq_lane_s32 vqrdmlahq_laneq_s16 vqrdmlahq_laneq_s32 vqrdmlahh_lane_s16 vqrdmlahh_laneq_s16 vqrdmlahs_lane_s32 |
vqrdmlsh | Saturating rounding doubling multiply subtract returning high half (vector) |
Click here to expand the API listvqrdmlsh_s16vqrdmlsh_s32 vqrdmlshq_s16 vqrdmlshq_s32 vqrdmlshh_s16 vqrdmlshs_s32 |
vqrdmlsh_lane | Saturating rounding doubling multiply subtract returning high half (vector) |
Click here to expand the API listvqrdmlsh_lane_s16vqrdmlsh_lane_s32 vqrdmlsh_laneq_s16 vqrdmlsh_laneq_s32 vqrdmlshq_lane_s16 vqrdmlshq_lane_s32 vqrdmlshq_laneq_s16 vqrdmlshq_laneq_s32 vqrdmlshh_lane_s16 vqrdmlshh_laneq_s16 vqrdmlshs_lane_s32 |
vfma | Floating-point fused multiply-add to accumulator (vector) | Click here to expand the API listvfma_f32vfma_f64 vfmaq_f32 vfmaq_f64 |
vfma_n | Floating-point fused multiply-add to accumulator (vector) | Click here to expand the API listvfma_n_f32vfma_n_f64 vfmaq_n_f32 vfmaq_n_f64 |
vfma_lane | Floating-point fused multiply-add to accumulator (vector) | Click here to expand the API listvfma_lane_f32vfma_lane_f64 vfma_laneq_f32 vfma_laneq_f64 vfmaq_lane_f32 vfmaq_lane_f64 vfmaq_laneq_f32 vfmaq_laneq_f64 vfmas_lane_f32 vfmas_laneq_f32 vfmad_lane_f64 vfmad_laneq_f64 |
vfms | Floating-point fused multiply-subtract from accumulator (vector) |
Click here to expand the API listvfms_f32vfms_f64 vfmsq_f32 vfmsq_f64 |
vfms_n | Floating-point fused multiply-subtract from accumulator (vector) |
Click here to expand the API listvfms_n_f32vfms_n_f64 vfmsq_n_f32 vfmsq_n_f64 |
vfms_lane | Floating-point fused multiply-subtract from accumulator (vector) |
Click here to expand the API listvfms_lane_f32vfms_lane_f64 vfms_laneq_f32 vfms_laneq_f64 vfmsd_lane_f64 vfmsd_laneq_f64 vfmsq_lane_f32 vfmsq_lane_f64 vfmsq_laneq_f32 vfmsq_laneq_f64 vfmss_lane_f32 vfmss_laneq_f32 |
vdiv | Floating-point divide (vector) | Click here to expand the API listvdiv_f32vdiv_f64 vdivq_f32 vdivq_f64 |
Data processing
Operation | Description | APIs |
---|---|---|
vpmax | Maximum pairwise | Click here to expand the API listvpmax_f32vpmax_s16 vpmax_s32 vpmax_s8 vpmax_u16 vpmax_u32 vpmax_u8 vpmaxq_f32 vpmaxq_f64 vpmaxq_s16 vpmaxq_s32 vpmaxq_s8 vpmaxq_u16 vpmaxq_u32 vpmaxq_u8 vpmaxs_f32 vpmaxqd_f64 |
vpmaxnm | Floating-point maximum number pairwise (vector) | Click here to expand the API listvpmaxnm_f32vpmaxnmq_f32 vpmaxnmq_f64 vpmaxnms_f32 vpmaxnmqd_f64 |
vpmin | Minimum pairwise | Click here to expand the API listvpmin_f32vpmin_s16 vpmin_s32 vpmin_s8 vpmin_u16 vpmin_u32 vpmin_u8 vpminq_f32 vpminq_f64 vpminq_s16 vpminq_s32 vpminq_s8 vpminq_u16 vpminq_u32 vpminq_u8 vpmins_f32 vpminqd_f64 |
vpminnm | Floating-point minimum number pairwise (vector) | Click here to expand the API listvpminnm_f32vpminnmq_f32 vpminnmq_f64 vpminnms_f32 vpminnmqd_f64 |
vabd | Absolute difference | Click here to expand the API listvabd_f32vabd_f64 vabd_s16 vabd_s32 vabd_s8 vabd_u16 vabd_u32 vabd_u8 vabdq_f32 vabdq_f64 vabdq_s16 vabdq_s32 vabdq_s8 vabdq_u16 vabdq_u32 vabdq_u8 vabds_f32 vabdd_f64 |
vabdl | Absolute difference long | Click here to expand the API listvabdl_s16vabdl_s32 vabdl_s8 vabdl_u16 vabdl_u32 vabdl_u8 vabdl_high_s16 vabdl_high_s32 vabdl_high_s8 vabdl_high_u16 vabdl_high_u32 vabdl_high_u8 |
vaba | Absolute difference and accumulate | Click here to expand the API listvaba_s16vaba_s32 vaba_s8 vaba_u16 vaba_u32 vaba_u8 vabaq_s16 vabaq_s32 vabaq_s8 vabaq_u16 vabaq_u32 vabaq_u8 |
vabal | Absolute difference and accumulate long | Click here to expand the API listvabal_s16vabal_s32 vabal_s8 vabal_u16 vabal_u32 vabal_u8 vabal_high_s16 vabal_high_s32 vabal_high_s8 vabal_high_u16 vabal_high_u32 vabal_high_u8 |
vmax | Maximum | Click here to expand the API listvmax_f32vmax_f64 vmax_s16 vmax_s32 vmax_s8 vmax_u16 vmax_u32 vmax_u8 vmaxq_f32 vmaxq_f64 vmaxq_s16 vmaxq_s32 vmaxq_s8 vmaxq_u16 vmaxq_u32 vmaxq_u8 |
vmaxnm | Floating-point maximum number | Click here to expand the API listvmaxnm_f32vmaxnm_f64 vmaxnmq_f32 vmaxnmq_f64 vmaxnmv_f32 vmaxnmvq_f32 vmaxnmvq_f64 |
vmaxv | Maximum across vector | Click here to expand the API listvmaxv_f32vmaxv_s16 vmaxv_s32 vmaxv_s8 vmaxv_u16 vmaxv_u32 vmaxv_u8 vmaxvq_f32 vmaxvq_f64 vmaxvq_s16 vmaxvq_s32 vmaxvq_s8 vmaxvq_u16 vmaxvq_u32 vmaxvq_u8 |
vmin | Minimum | Click here to expand the API listvmin_f32vmin_f64 vmin_s16 vmin_s32 vmin_s8 vmin_u16 vmin_u32 vmin_u8 vminq_f32 vminq_f64 vminq_s16 vminq_s32 vminq_s8 vminq_u16 vminq_u32 vminq_u8 |
vminnm | Floating-point minimum number | Click here to expand the API listvminnm_f32vminnm_f64 vminnmq_f32 vminnmq_f64 vminnmv_f32 vminnmvq_f32 vminnmvq_f64 |
vminv | Minimum across vector | Click here to expand the API listvminv_f32vminv_s16 vminv_s32 vminv_s8 vminv_u16 vminv_u32 vminv_u8 vminvq_f32 vminvq_f64 vminvq_s16 vminvq_s32 vminvq_s8 vminvq_u16 vminvq_u32 vminvq_u8 |
vabs | Absolute value | Click here to expand the API listvabs_f32vabs_f64 vabs_s16 vabs_s32 vabs_s64 vabs_s8 vabsq_f32 vabsq_f64 vabsq_s16 vabsq_s32 vabsq_s64 vabsq_s8 vabsd_s64 |
vqabs | Saturating absolute value | Click here to expand the API listvqabs_s16vqabs_s32 vqabs_s64 vqabs_s8 vqabsq_s16 vqabsq_s32 vqabsq_s64 vqabsq_s8 vqabsb_s8 vqabsh_s16 vqabss_s32 vqabsd_s64 |
vneg | Negate | Click here to expand the API listvneg_f32vneg_f64 vneg_s16 vneg_s32 vneg_s64 vneg_s8 vnegd_s64 vnegq_f32 vnegq_f64 vnegq_s16 vnegq_s32 vnegq_s64 vnegq_s8 |
vqneg | Saturating negate | Click here to expand the API listvqneg_s16vqneg_s32 vqneg_s64 vqneg_s8 vqnegq_s16 vqnegq_s32 vqnegq_s64 vqnegq_s8 vqnegb_s8 vqnegh_s16 vqnegs_s32 vqnegd_s64 |
vcls | Count leading sign bits | Click here to expand the API listvcls_s16vcls_s32 vcls_s8 vclsq_s16 vclsq_s32 vclsq_s8 |
vclz | Count leading zero bits | Click here to expand the API listvclz_s16vclz_s32 vclz_s8 vclz_u16 vclz_u32 vclz_u8 vclzq_s16 vclzq_s32 vclzq_s8 vclzq_u16 vclzq_u32 vclzq_u8 |
vcnt | Population count per byte | Click here to expand the API listvcnt_s8vcnt_u8 vcntq_s8 vcntq_u8 |
vrecpe | Reciprocal estimate | Click here to expand the API listvrecpe_f32vrecpe_f64 vrecpe_u32 vrecpeq_f32 vrecpeq_f64 vrecpeq_u32 vrecpes_f32 vrecped_f64 |
vrecps | Reciprocal step | Click here to expand the API listvrecps_f32vrecps_f64 vrecpsq_f32 vrecpsq_f64 vrecpss_f32 vrecpsd_f64 |
vrecpx | Floating-point reciprocal exponent | Click here to expand the API listvrecpxd_f64vrecpxs_f32 |
vrsqrte | Reciprocal square root estimate | Click here to expand the API listvrsqrte_f32vrsqrte_f64 vrsqrte_u32 vrsqrteq_f32 vrsqrteq_f64 vrsqrteq_u32 vrsqrtes_f32 vrsqrted_f64 |
vrsqrts | Reciprocal square root step | Click here to expand the API listvrsqrts_f32vrsqrts_f64 vrsqrtsq_f32 vrsqrtsq_f64 vrsqrtss_f32 vrsqrtsd_f64 |
vmovn | Extract narrow | Click here to expand the API listvmovn_s16vmovn_s32 vmovn_s64 vmovn_u16 vmovn_u32 vmovn_u64 vmovn_high_s16 vmovn_high_s32 vmovn_high_s64 vmovn_high_u16 vmovn_high_u32 vmovn_high_u64 |
vmovl | Extract long | Click here to expand the API listvmovl_s16vmovl_s32 vmovl_s8 vmovl_u16 vmovl_u32 vmovl_u8 vmovl_high_s16 vmovl_high_s32 vmovl_high_s8 vmovl_high_u16 vmovl_high_u32 vmovl_high_u8 |
vqmovn | Saturating extract narrow | Click here to expand the API listvqmovn_s16vqmovn_s32 vqmovn_s64 vqmovn_u16 vqmovn_u32 vqmovn_u64 vqmovn_high_s16 vqmovn_high_s32 vqmovn_high_s64 vqmovn_high_u16 vqmovn_high_u32 vqmovn_high_u64 vqmovnh_s16 vqmovnh_u16 vqmovns_s32 vqmovns_u32 vqmovnd_s64 vqmovnd_u64 |
vqmovun | Signed saturating extract unsigned narrow | Click here to expand the API listvqmovun_s16vqmovun_s32 vqmovun_s64 vqmovun_high_s16 vqmovun_high_s32 vqmovun_high_s64 vqmovunh_s16 vqmovuns_s32 vqmovund_s64 |
Comparison
Operation | Description | APIs |
---|---|---|
vceq | Compare bitwise equal | Click here to expand the API listvceq_f32vceq_f64 vceq_s16 vceq_s32 vceq_s64 vceq_s8 vceq_u16 vceq_u32 vceq_u64 vceq_u8 vceqq_f32 vceqq_f64 vceqq_s16 vceqq_s32 vceqq_s64 vceqq_s8 vceqq_u16 vceqq_u32 vceqq_u64 vceqq_u8 vceqs_f32 vceqd_f64 vceqd_s64 vceqd_u64 |
vceqz | Compare bitwise equal to zero | Click here to expand the API listvceqz_f32vceqz_f64 vceqz_s16 vceqz_s32 vceqz_s64 vceqz_s8 vceqz_u16 vceqz_u32 vceqz_u64 vceqz_u8 vceqzq_f32 vceqzq_f64 vceqzq_s16 vceqzq_s32 vceqzq_s64 vceqzq_s8 vceqzq_u16 vceqzq_u32 vceqzq_u64 vceqzq_u8 vceqzs_f32 vceqzd_f64 vceqzd_s64 vceqzd_u64 |
vcge | Compare greater than or equal | Click here to expand the API listvcge_f32vcge_f64 vcge_s16 vcge_s32 vcge_s64 vcge_s8 vcge_u16 vcge_u32 vcge_u64 vcge_u8 vcgeq_f32 vcgeq_f64 vcgeq_s16 vcgeq_s32 vcgeq_s64 vcgeq_s8 vcgeq_u16 vcgeq_u32 vcgeq_u64 vcgeq_u8 vcges_f32 vcged_f64 vcged_s64 vcged_u64 |
vcgez | Compare greater than or equal to zero | Click here to expand the API listvcgez_f32vcgez_f64 vcgez_s16 vcgez_s32 vcgez_s64 vcgez_s8 vcgezq_f32 vcgezq_f64 vcgezq_s16 vcgezq_s32 vcgezq_s64 vcgezq_s8 vcgezs_f32 vcgezd_f64 vcgezd_s64 |
vcle | Compare less than or equal | Click here to expand the API listvcle_f32vcle_f64 vcle_s16 vcle_s32 vcle_s64 vcle_s8 vcle_u16 vcle_u32 vcle_u64 vcle_u8 vcleq_f32 vcleq_f64 vcleq_s16 vcleq_s32 vcleq_s64 vcleq_s8 vcleq_u16 vcleq_u32 vcleq_u64 vcleq_u8 vcles_f32 vcled_f64 vcled_s64 vcled_u64 |
vclez | Compare less than or equal to zero | Click here to expand the API listvclez_f32vclez_f64 vclez_s16 vclez_s32 vclez_s64 vclez_s8 vclezq_f32 vclezq_f64 vclezq_s16 vclezq_s32 vclezq_s64 vclezq_s8 vclezs_f32 vclezd_f64 vclezd_s64 |
vcgt | Compare greater than | Click here to expand the API listvcgt_f32vcgt_f64 vcgt_s16 vcgt_s32 vcgt_s64 vcgt_s8 vcgt_u16 vcgt_u32 vcgt_u64 vcgt_u8 vcgtq_f32 vcgtq_f64 vcgtq_s16 vcgtq_s32 vcgtq_s64 vcgtq_s8 vcgtq_u16 vcgtq_u32 vcgtq_u64 vcgtq_u8 vcgts_f32 vcgtd_f64 vcgtd_s64 vcgtd_u64 |
vcgtz | Compare greater than zero | Click here to expand the API listvcgtz_f32vcgtz_f64 vcgtz_s16 vcgtz_s32 vcgtz_s64 vcgtz_s8 vcgtzq_f32 vcgtzq_f64 vcgtzq_s16 vcgtzq_s32 vcgtzq_s64 vcgtzq_s8 vcgtzs_f32 vcgtzd_f64 vcgtzd_s64 |
vclt | Compare less than | Click here to expand the API listvclt_f32vclt_f64 vclt_s16 vclt_s32 vclt_s64 vclt_s8 vclt_u16 vclt_u32 vclt_u64 vclt_u8 vcltq_f32 vcltq_f64 vcltq_s16 vcltq_s32 vcltq_s64 vcltq_s8 vcltq_u16 vcltq_u32 vcltq_u64 vcltq_u8 vclts_f32 vcltd_f64 vcltd_s64 vcltd_u64 |
vcltz | Compare less than zero | Click here to expand the API listvcltz_f32vcltz_f64 vcltz_s16 vcltz_s32 vcltz_s64 vcltz_s8 vcltzq_f32 vcltzq_f64 vcltzq_s16 vcltzq_s32 vcltzq_s64 vcltzq_s8 vcltzs_f32 vcltzd_f64 vcltzd_s64 |
vcage | Floating-point absolute compare greater than or equal | Click here to expand the API listvcage_f32vcage_f64 vcageq_f32 vcageq_f64 vcages_f32 vcaged_f64 |
vcagt | Floating-point absolute compare greater than | Click here to expand the API listvcagt_f32vcagt_f64 vcagtq_f32 vcagtq_f64 vcagts_f32 vcagtd_f64 |
vcale | Floating-point absolute compare less than or equal | Click here to expand the API listvcale_f32vcale_f64 vcaleq_f32 vcaleq_f64 vcales_f32 vcaled_f64 |
vcalt | Floating-point absolute compare less than | Click here to expand the API listvcalt_f32vcalt_f64 vcaltq_f32 vcaltq_f64 vcalts_f32 vcaltd_f64 |
Bitwise
Operation | Description | APIs |
---|---|---|
vtst | Test bits nonzero | Click here to expand the API listvtst_s16vtst_s32 vtst_s64 vtst_s8 vtst_u16 vtst_u32 vtst_u64 vtst_u8 vtstd_s64 vtstd_u64 vtstq_s16 vtstq_s32 vtstq_s64 vtstq_s8 vtstq_u16 vtstq_u32 vtstq_u64 vtstq_u8 |
vmvn | Bitwise NOT | Click here to expand the API listvmvn_s16vmvn_s32 vmvn_s8 vmvn_u16 vmvn_u32 vmvn_u8 vmvnq_s16 vmvnq_s32 vmvnq_s8 vmvnq_u16 vmvnq_u32 vmvnq_u8 |
vand | Bitwise AND | Click here to expand the API listvand_s16vand_s32 vand_s64 vand_s8 vand_u16 vand_u32 vand_u64 vand_u8 vandq_s16 vandq_s32 vandq_s64 vandq_s8 vandq_u16 vandq_u32 vandq_u64 vandq_u8 |
vorr | Bitwise OR | Click here to expand the API listvorr_s16vorr_s32 vorr_s64 vorr_s8 vorr_u16 vorr_u32 vorr_u64 vorr_u8 vorrq_s16 vorrq_s32 vorrq_s64 vorrq_s8 vorrq_u16 vorrq_u32 vorrq_u64 vorrq_u8 |
vorn | Bitwise OR NOT | Click here to expand the API listvorn_s16vorn_s32 vorn_s64 vorn_s8 vorn_u16 vorn_u32 vorn_u64 vorn_u8 vornq_s16 vornq_s32 vornq_s64 vornq_s8 vornq_u16 vornq_u32 vornq_u64 vornq_u8 |
veor | Bitwise exclusive OR | Click here to expand the API listveor_s16veor_s32 veor_s64 veor_s8 veor_u16 veor_u32 veor_u64 veor_u8 veorq_s16 veorq_s32 veorq_s64 veorq_s8 veorq_u16 veorq_u32 veorq_u64 veorq_u8 |
vbic | Bitwise bit clear | Click here to expand the API listvbic_s16vbic_s32 vbic_s64 vbic_s8 vbic_u16 vbic_u32 vbic_u64 vbic_u8 vbicq_s16 vbicq_s32 vbicq_s64 vbicq_s8 vbicq_u16 vbicq_u32 vbicq_u64 vbicq_u8 |
vbsl | Bitwise select | Click here to expand the API listvbsl_f32vbsl_f64 vbsl_s16 vbsl_s32 vbsl_s64 vbsl_s8 vbsl_u16 vbsl_u32 vbsl_u64 vbsl_u8 vbslq_f32 vbslq_f64 vbslq_s16 vbslq_s32 vbslq_s64 vbslq_s8 vbslq_u16 vbslq_u32 vbslq_u64 vbslq_u8 |
Shift
Operation | Description | APIs |
---|---|---|
vshl | Shift left (register) | Click here to expand the API listvshl_s16vshl_s32 vshl_s64 vshl_s8 vshl_u16 vshl_u32 vshl_u64 vshl_u8 vshlq_s16 vshlq_s32 vshlq_s64 vshlq_s8 vshlq_u16 vshlq_u32 vshlq_u64 vshlq_u8 vshld_s64 vshld_u64 |
vqshl | Saturating shift left (register) | Click here to expand the API listvqshl_s16vqshl_s32 vqshl_s64 vqshl_s8 vqshl_u16 vqshl_u32 vqshl_u64 vqshl_u8 vqshlq_s16 vqshlq_s32 vqshlq_s64 vqshlq_s8 vqshlq_u16 vqshlq_u32 vqshlq_u64 vqshlq_u8 vqshlb_s8 vqshlb_u8 vqshlh_s16 vqshlh_u16 vqshls_s32 vqshls_u32 vqshld_s64 vqshld_u64 |
vqshl_n | Saturating shift left (immediate) | Click here to expand the API listvqshl_n_s16vqshl_n_s32 vqshl_n_s64 vqshl_n_s8 vqshl_n_u16 vqshl_n_u32 vqshl_n_u64 vqshl_n_u8 vqshlq_n_s16 vqshlq_n_s32 vqshlq_n_s64 vqshlq_n_s8 vqshlq_n_u16 vqshlq_n_u32 vqshlq_n_u64 vqshlq_n_u8 vqshlb_n_s8 vqshlb_n_u8 vqshlh_n_s16 vqshlh_n_u16 vqshls_n_s32 vqshls_n_u32 vqshld_n_s64 vqshld_n_u64 |
vqshlu_n | Saturating shift left unsigned (immediate) | Click here to expand the API listvqshlu_n_s16vqshlu_n_s32 vqshlu_n_s64 vqshlu_n_s8 vqshlub_n_s8 vqshlud_n_s64 vqshluh_n_s16 vqshluq_n_s16 vqshluq_n_s32 vqshluq_n_s64 vqshluq_n_s8 vqshlus_n_s32 |
vrshl | Rounding shift left (register) | Click here to expand the API listvrshl_s16vrshl_s32 vrshl_s64 vrshl_s8 vrshl_u16 vrshl_u32 vrshl_u64 vrshl_u8 vrshlq_s16 vrshlq_s32 vrshlq_s64 vrshlq_s8 vrshlq_u16 vrshlq_u32 vrshlq_u64 vrshlq_u8 vrshld_s64 vrshld_u64 |
vqrshl | Saturating rounding shift left (register) | Click here to expand the API listvqrshl_s16vqrshl_s32 vqrshl_s64 vqrshl_s8 vqrshl_u16 vqrshl_u32 vqrshl_u64 vqrshl_u8 vqrshlq_s16 vqrshlq_s32 vqrshlq_s64 vqrshlq_s8 vqrshlq_u16 vqrshlq_u32 vqrshlq_u64 vqrshlq_u8 vqrshlb_s8 vqrshlb_u8 vqrshlh_s16 vqrshlh_u16 vqrshls_s32 vqrshls_u32 vqrshld_s64 vqrshld_u64 |
vshl_n | Shift left (immediate) | Click here to expand the API listvshl_n_s16vshl_n_s32 vshl_n_s64 vshl_n_s8 vshl_n_u16 vshl_n_u32 vshl_n_u64 vshl_n_u8 vshlq_n_s16 vshlq_n_s32 vshlq_n_s64 vshlq_n_s8 vshlq_n_u16 vshlq_n_u32 vshlq_n_u64 vshlq_n_u8 vshld_n_s64 vshld_n_u64 |
vshll_n | Shift left long (immediate) | Click here to expand the API listvshll_n_s16vshll_n_s32 vshll_n_s8 vshll_n_u16 vshll_n_u32 vshll_n_u8 vshll_high_n_s16 vshll_high_n_s32 vshll_high_n_s8 vshll_high_n_u16 vshll_high_n_u32 vshll_high_n_u8 |
vshr_n | Shift right (immediate) | Click here to expand the API listvshr_n_s16vshr_n_s32 vshr_n_s64 vshr_n_s8 vshr_n_u16 vshr_n_u32 vshr_n_u64 vshr_n_u8 vshrq_n_s16 vshrq_n_s32 vshrq_n_s64 vshrq_n_s8 vshrq_n_u16 vshrq_n_u32 vshrq_n_u64 vshrq_n_u8 vshrd_n_s64 vshrd_n_u64 |
vrshr_n | Rounding right left (register) | Click here to expand the API listvrshr_n_s16vrshr_n_s32 vrshr_n_s64 vrshr_n_s8 vrshr_n_u16 vrshr_n_u32 vrshr_n_u64 vrshr_n_u8 vrshrq_n_s16 vrshrq_n_s32 vrshrq_n_s64 vrshrq_n_s8 vrshrq_n_u16 vrshrq_n_u32 vrshrq_n_u64 vrshrq_n_u8 vrshrd_n_s64 vrshrd_n_u64 |
vshrn_n | Shift right narrow (immediate) | Click here to expand the API listvshrn_n_s16vshrn_n_s32 vshrn_n_s64 vshrn_n_u16 vshrn_n_u32 vshrn_n_u64 vshrn_high_n_s16 vshrn_high_n_s32 vshrn_high_n_s64 vshrn_high_n_u16 vshrn_high_n_u32 vshrn_high_n_u64 |
vqshrun_n | Signed saturating shift right unsigned narrow (immediate) |
Click here to expand the API listvqshrun_n_s16vqshrun_n_s32 vqshrun_n_s64 vqshrunh_n_s16 vqshruns_n_s32 vqshrund_n_s64 vqshrun_high_n_s16 vqshrun_high_n_s32 vqshrun_high_n_s64 |
vqrshrun_n | Signed saturating rounded shift right unsigned narrow (immediate) |
Click here to expand the API listvqrshrun_n_s16vqrshrun_n_s32 vqrshrun_n_s64 vqrshrunh_n_s16 vqrshruns_n_s32 vqrshrund_n_s64 vqrshrun_high_n_s16 vqrshrun_high_n_s32 vqrshrun_high_n_s64 |
vqshrn_n | Signed saturating shift right narrow (immediate) | Click here to expand the API listvqshrn_n_s16vqshrn_n_s32 vqshrn_n_s64 vqshrn_n_u16 vqshrn_n_u32 vqshrn_n_u64 vqshrnh_n_s16 vqshrnh_n_u16 vqshrns_n_s32 vqshrns_n_u32 vqshrnd_n_s64 vqshrnd_n_u64 vqshrn_high_n_s16 vqshrn_high_n_s32 vqshrn_high_n_s64 vqshrn_high_n_u16 vqshrn_high_n_u32 vqshrn_high_n_u64 |
vrshrn_n | Rounding shift right narrow (immediate) | Click here to expand the API listvrshrn_n_s16vrshrn_n_s32 vrshrn_n_s64 vrshrn_n_u16 vrshrn_n_u32 vrshrn_n_u64 vrshrn_high_n_s16 vrshrn_high_n_s32 vrshrn_high_n_s64 vrshrn_high_n_u16 vrshrn_high_n_u32 vrshrn_high_n_u64 |
vqrshrn_n | Signed saturating rounded shift right narrow (immediate) | Click here to expand the API listvqrshrn_n_s16vqrshrn_n_s32 vqrshrn_n_s64 vqrshrn_n_u16 vqrshrn_n_u32 vqrshrn_n_u64 vqrshrnh_n_s16 vqrshrnh_n_u16 vqrshrns_n_s32 vqrshrns_n_u32 vqrshrnd_n_s64 vqrshrnd_n_u64 vqrshrn_high_n_s16 vqrshrn_high_n_s32 vqrshrn_high_n_s64 vqrshrn_high_n_u16 vqrshrn_high_n_u32 vqrshrn_high_n_u64 |
vsra_n | Signed shift right and accumulate (immediate) | Click here to expand the API listvsra_n_s16vsra_n_s32 vsra_n_s64 vsra_n_s8 vsra_n_u16 vsra_n_u32 vsra_n_u64 vsra_n_u8 vsraq_n_s16 vsraq_n_s32 vsraq_n_s64 vsraq_n_s8 vsraq_n_u16 vsraq_n_u32 vsraq_n_u64 vsraq_n_u8 vsrad_n_s64 vsrad_n_u64 |
vrsra_n | Signed rounding shift right and accumulate (immediate) | Click here to expand the API listvrsra_n_s16vrsra_n_s32 vrsra_n_s64 vrsra_n_s8 vrsra_n_u16 vrsra_n_u32 vrsra_n_u64 vrsra_n_u8 vrsraq_n_s16 vrsraq_n_s32 vrsraq_n_s64 vrsraq_n_s8 vrsraq_n_u16 vrsraq_n_u32 vrsraq_n_u64 vrsraq_n_u8 vrsrad_n_s64 vrsrad_n_u64 |
vsri_n | Shift right and insert (immediate) | Click here to expand the API listvsri_n_s16vsri_n_s32 vsri_n_s64 vsri_n_s8 vsri_n_u16 vsri_n_u32 vsri_n_u64 vsri_n_u8 vsriq_n_s16 vsriq_n_s32 vsriq_n_s64 vsriq_n_s8 vsriq_n_u16 vsriq_n_u32 vsriq_n_u64 vsriq_n_u8 vsrid_n_s64 vsrid_n_u64 |
vsli_n | Shift left and insert (immediate) | Click here to expand the API listvsli_n_s16vsli_n_s32 vsli_n_s64 vsli_n_s8 vsli_n_u16 vsli_n_u32 vsli_n_u64 vsli_n_u8 vsliq_n_s16 vsliq_n_s32 vsliq_n_s64 vsliq_n_s8 vsliq_n_u16 vsliq_n_u32 vsliq_n_u64 vsliq_n_u8 vslid_n_s64 vslid_n_u64 |
Floating-point
Operation | Description | APIs |
---|---|---|
vcvt | Convert to/from another precision or fixed point, rounding towards zero |
Click here to expand the API listvcvt_f32_f64vcvt_f32_s32 vcvt_f32_u32 vcvt_f64_f32 vcvt_f64_s64 vcvt_f64_u64 vcvt_s32_f32 vcvt_s64_f64 vcvt_u32_f32 vcvt_u64_f64 vcvtq_f32_s32 vcvtq_f32_u32 vcvtq_f64_s64 vcvtq_f64_u64 vcvtq_s32_f32 vcvtq_s64_f64 vcvtq_u32_f32 vcvtq_u64_f64 vcvts_f32_s32 vcvts_f32_u32 vcvts_s32_f32 vcvts_u32_f32 vcvtd_f64_s64 vcvtd_f64_u64 vcvtd_s64_f64 vcvtd_u64_f64 vcvt_high_f32_f64 vcvt_high_f64_f32 |
vcvta | Convert to integer, rounding to nearest with ties to away | Click here to expand the API listvcvta_s32_f32vcvta_s64_f64 vcvta_u32_f32 vcvta_u64_f64 vcvtad_s64_f64 vcvtad_u64_f64 vcvtaq_s32_f32 vcvtaq_s64_f64 vcvtaq_u32_f32 vcvtaq_u64_f64 vcvtas_s32_f32 vcvtas_u32_f32 |
vcvtm | Convert to integer, rounding towards minus infinity | Click here to expand the API listvcvtm_s32_f32vcvtm_s64_f64 vcvtm_u32_f32 vcvtm_u64_f64 vcvtmq_s32_f32 vcvtmq_s64_f64 vcvtmq_u32_f32 vcvtmq_u64_f64 vcvtms_s32_f32 vcvtms_u32_f32 vcvtmd_s64_f64 vcvtmd_u64_f64 |
vcvtn | Convert to integer, rounding to nearest with ties to even | Click here to expand the API listvcvtn_s32_f32vcvtn_s64_f64 vcvtn_u32_f32 vcvtn_u64_f64 vcvtnq_s32_f32 vcvtnq_s64_f64 vcvtnq_u32_f32 vcvtnq_u64_f64 vcvtns_s32_f32 vcvtns_u32_f32 vcvtnd_s64_f64 vcvtnd_u64_f64 |
vcvtp | Convert to integer, rounding towards plus infinity | Click here to expand the API listvcvtp_s32_f32vcvtp_s64_f64 vcvtp_u32_f32 vcvtp_u64_f64 vcvtpq_s32_f32 vcvtpq_s64_f64 vcvtpq_u32_f32 vcvtpq_u64_f64 vcvtps_s32_f32 vcvtps_u32_f32 vcvtpd_s64_f64 vcvtpd_u64_f64 |
vcvtx | Convert to lower precision, rounding to nearest with ties to odd |
Click here to expand the API listvcvtx_f32_f64vcvtx_high_f32_f64 vcvtxd_f32_f64 |
vcvt_n | Convert to/from fixed point, rounding towards zero | Click here to expand the API listvcvt_n_f32_s32vcvt_n_f32_u32 vcvt_n_f64_s64 vcvt_n_f64_u64 vcvt_n_s32_f32 vcvt_n_s64_f64 vcvt_n_u32_f32 vcvt_n_u64_f64 vcvtq_n_f32_s32 vcvtq_n_f32_u32 vcvtq_n_f64_s64 vcvtq_n_f64_u64 vcvtq_n_s32_f32 vcvtq_n_s64_f64 vcvtq_n_u32_f32 vcvtq_n_u64_f64 vcvts_n_f32_s32 vcvts_n_f32_u32 vcvts_n_s32_f32 vcvts_n_u32_f32 vcvtd_n_f64_s64 vcvtd_n_f64_u64 vcvtd_n_s64_f64 vcvtd_n_u64_f64 |
vrnd | Round to Integral, toward zero | Click here to expand the API listvrnd_f32vrnd_f64 vrndq_f32 vrndq_f64 |
vrnda | Round to Integral, with ties to away | Click here to expand the API listvrnda_f32vrnda_f64 vrndaq_f32 vrndaq_f64 |
vrndi | Round to Integral, using current rounding mode | Click here to expand the API listvrndi_f32vrndi_f64 vrndiq_f32 vrndiq_f64 |
vrndm | Round to Integral, towards minus infinity | Click here to expand the API listvrndm_f32vrndm_f64 vrndmq_f32 vrndmq_f64 |
vrndn | Round to Integral, with ties to even | Click here to expand the API listvrndn_f32vrndn_f64 vrndnq_f32 vrndnq_f64 vrndns_f32 |
vrndp | Round to Integral, towards plus infinity | Click here to expand the API listvrndp_f32vrndp_f64 vrndpq_f32 vrndpq_f64 |
vrndx | Round to Integral exact | Click here to expand the API listvrndx_f32vrndx_f64 vrndxq_f32 vrndxq_f64 |
Load and store
Operation | Description | APIs |
---|---|---|
vld1 | Load vector from memory | Click here to expand the API listvld1_f32vld1_f64 vld1_s16 vld1_s32 vld1_s64 vld1_s8 vld1_u16 vld1_u32 vld1_u64 vld1_u8 vld1q_f32 vld1q_f64 vld1q_s16 vld1q_s32 vld1q_s64 vld1q_s8 vld1q_u16 vld1q_u32 vld1q_u64 vld1q_u8 |
vst1 | Store vector to memory | Click here to expand the API listvst1_f32vst1_f64 vst1_s16 vst1_s32 vst1_s64 vst1_s8 vst1_u16 vst1_u32 vst1_u64 vst1_u8 vst1q_f32 vst1q_f64 vst1q_s16 vst1q_s32 vst1q_s64 vst1q_s8 vst1q_u16 vst1q_u32 vst1q_u64 vst1q_u8 |
vget_lane | Get vector element | Click here to expand the API listvget_lane_f32vget_lane_f64 vget_lane_s16 vget_lane_s32 vget_lane_s64 vget_lane_s8 vget_lane_u16 vget_lane_u32 vget_lane_u64 vget_lane_u8 vgetq_lane_f32 vgetq_lane_f64 vgetq_lane_s16 vgetq_lane_s32 vgetq_lane_s64 vgetq_lane_s8 vgetq_lane_u16 vgetq_lane_u32 vgetq_lane_u64 vgetq_lane_u8 |
vset_lane | Set vector element | Click here to expand the API listvset_lane_f32vset_lane_f64 vset_lane_s16 vset_lane_s32 vset_lane_s64 vset_lane_s8 vset_lane_u16 vset_lane_u32 vset_lane_u64 vset_lane_u8 vsetq_lane_f32 vsetq_lane_f64 vsetq_lane_s16 vsetq_lane_s32 vsetq_lane_s64 vsetq_lane_s8 vsetq_lane_u16 vsetq_lane_u32 vsetq_lane_u64 vsetq_lane_u8 |
Permutation
Operation | Description | APIs |
---|---|---|
vext | Extract vector from pair of vectors | Click here to expand the API listvext_f32vext_f64 vext_s16 vext_s32 vext_s64 vext_s8 vext_u16 vext_u32 vext_u64 vext_u8 vextq_f32 vextq_f64 vextq_s16 vextq_s32 vextq_s64 vextq_s8 vextq_u16 vextq_u32 vextq_u64 vextq_u8 |
vtbl1 | Table vector Lookup | Click here to expand the API listvtbl1_s8vtbl1_u8 |
vtbx1 | Table vector lookup extension | Click here to expand the API listvtbx1_s8vtbx1_u8 |
vqtbl1 | Table vector Lookup | Click here to expand the API listvqtbl1_s8vqtbl1_u8 vqtbl1q_s8 vqtbl1q_u8 |
vqtbx1 | Table vector lookup extension | Click here to expand the API listvqtbx1_s8vqtbx1_u8 vqtbx1q_s8 vqtbx1q_u8 |
vrbit | Reverse bit order | Click here to expand the API listvrbit_s8vrbit_u8 vrbitq_s8 vrbitq_u8 |
vrev16 | Reverse elements in 16-bit halfwords | Click here to expand the API listvrev16_s8vrev16_u8 vrev16q_s8 vrev16q_u8 |
vrev32 | Reverse elements in 32-bit words | Click here to expand the API listvrev32_s16vrev32_s8 vrev32_u16 vrev32_u8 vrev32q_s16 vrev32q_s8 vrev32q_u16 vrev32q_u8 |
vrev64 | Reverse elements in 64-bit doublewords | Click here to expand the API listvrev64_f32vrev64_s16 vrev64_s32 vrev64_s8 vrev64_u16 vrev64_u32 vrev64_u8 vrev64q_f32 vrev64q_s16 vrev64q_s32 vrev64q_s8 vrev64q_u16 vrev64q_u32 vrev64q_u8 |
vtrn1 | Transpose vectors (primary) | Click here to expand the API listvtrn1_f32vtrn1_s16 vtrn1_s32 vtrn1_s8 vtrn1_u16 vtrn1_u32 vtrn1_u8 vtrn1q_f32 vtrn1q_f64 vtrn1q_s16 vtrn1q_s32 vtrn1q_s64 vtrn1q_s8 vtrn1q_u16 vtrn1q_u32 vtrn1q_u64 vtrn1q_u8 |
vtrn2 | Transpose vectors (secondary) | Click here to expand the API listvtrn2_f32vtrn2_s16 vtrn2_s32 vtrn2_s8 vtrn2_u16 vtrn2_u32 vtrn2_u8 vtrn2q_f32 vtrn2q_f64 vtrn2q_s16 vtrn2q_s32 vtrn2q_s64 vtrn2q_s8 vtrn2q_u16 vtrn2q_u32 vtrn2q_u64 vtrn2q_u8 |
vzip1 | Zip vectors (primary) | Click here to expand the API listvzip1_f32vzip1_s16 vzip1_s32 vzip1_s8 vzip1_u16 vzip1_u32 vzip1_u8 vzip1q_f32 vzip1q_f64 vzip1q_s16 vzip1q_s32 vzip1q_s64 vzip1q_s8 vzip1q_u16 vzip1q_u32 vzip1q_u64 vzip1q_u8 |
vzip2 | Zip vectors (secondary) | Click here to expand the API listvzip2_f32vzip2_s16 vzip2_s32 vzip2_s8 vzip2_u16 vzip2_u32 vzip2_u8<br/vzip2q_f32 vzip2q_f64 vzip2q_s16 vzip2q_s32 vzip2q_s64 vzip2q_s8 vzip2q_u16 vzip2q_u32 vzip2q_u64 vzip2q_u8 |
vuzp1 | Unzip vectors (primary) | Click here to expand the API listvuzp1_f32vuzp1_s16 vuzp1_s32 vuzp1_s8 vuzp1_u16 vuzp1_u32 vuzp1_u8 vuzp1q_f32 vuzp1q_f64 vuzp1q_s16 vuzp1q_s32 vuzp1q_s64 vuzp1q_s8 vuzp1q_u16 vuzp1q_u32 vuzp1q_u64 vuzp1q_u8 |
vuzp2 | Unzip vectors (secondary) | Click here to expand the API listvuzp2_f32vuzp2_s16 vuzp2_s32 vuzp2_s8 vuzp2_u16 vuzp2_u32 vuzp2_u8 vuzp2q_f32 vuzp2q_f64 vuzp2q_s16 vuzp2q_s32 vuzp2q_s64 vuzp2q_s8 vuzp2q_u16 vuzp2q_u32 vuzp2q_u64 vuzp2q_u8 |
Cryptographic
Operation | APIs |
---|---|
CRC32 | Click here to expand the API list__crc32b__crc32cb __crc32cd __crc32ch __crc32cw __crc32d __crc32h __crc32w |
SHA1 | Click here to expand the API listvsha1cq_u32vsha1h_u32 vsha1mq_u32 vsha1pq_u32 vsha1su0q_u32 vsha1su1q_u32 |
SHA256 | Click here to expand the API listvsha256h2q_u32vsha256hq_u32 vsha256su0q_u32 vsha256su1q_u32 |
AES | Click here to expand the API listvaesdq_u8vaeseq_u8 vaesimcq_u8 vaesmcq_u8 |
Miscellaneous
Operation | Description | APIs |
---|---|---|
vsqrt | Square root | Click here to expand the API listvsqrt_f32vsqrt_f64 vsqrtq_f32 vsqrtq_f64 |
vdot | Dot product | Click here to expand the API listvdot_s32vdot_u32 vdotq_s32 vdotq_u32 |
vdot_lane | Dot product | Click here to expand the API listvdot_lane_s32vdot_lane_u32 vdot_laneq_s32 vdot_laneq_u32 vdotq_lane_s32 vdotq_lane_u32 vdotq_laneq_s32 vdotq_laneq_u32 |