The following tables list the major Arm Neon intrinsic operations available in Burst. The Operation column contains the primary naming prefix for intrinsics of this type. For the full list of intrinsics available for each operation, refer to the Unity.Burst.Intrinsics.Arm.Neon API reference.
For information on how to use these intrinsics, refer to Processor specific SIMD extensions.
| Operation | Description |
|---|---|
| vcreate | Create vector |
| vdup_n | Duplicate (splat) value |
| vdup_lane | Duplicate (splat) vector element |
| vmov_n | Duplicate (splat) value |
| vcopy_lane | Insert vector element from another vector element |
| vcombine | Join two vectors into a larger vector |
| vget_high | Get the higher half of the vector |
| vget_low | Get the lower half of the vector |
| Operation | Description |
|---|---|
| vadd | Add |
| vaddv | Add across vector |
| vaddl | Add long |
| vaddlv | Add long across Vector |
| vaddw | Add wide |
| vhadd | Halving add |
| vrhadd | Rounding halving add |
| vqadd | Saturating add |
| vsqadd | Unsigned saturating Accumulate of signed value |
| vuqadd | Signed saturating Accumulate of unsigned value |
| vaddhn | Add returning high narrow |
| vraddhn | Rounding add returning high narrow |
| vpadd | Add pairwise (vector) |
| vpaddl | Signed add long pairwise |
| vpadal | Signed add and accumulate long pairwise |
| vsubl | Subtract long |
| vsubw | Subtract wide |
| vhsub | Halving subtract |
| vqsub | Saturating subtract |
| vsubhn | Subtract returning high narrow |
| vrsubhn | Rounding subtract returning high narrow |
| Operation | Description |
|---|---|
| vmul | Multiply (vector) |
| vmul_n | Vector multiply by scalar |
| vmul_lane | Multiply (vector) |
| vmull | Multiply long (vector) |
| vmull_n | Vector long multiply by scalar |
| vmull_lane | Multiply long (vector) |
| vmulx | Floating-point multiply extended |
| vmla | Multiply-add to accumulator (vector) |
| vmla_lane | Vector multiply accumulate with scalar |
| vmla_n | Vector multiply accumulate with scalar |
| vmlal | Multiply-accumulate long (vector) |
| vmlal_lane | Multiply-accumulate long with scalar |
| vmlal_n | Multiply-accumulate long with scalar |
| vmls | Multiply-subtract from accumulator (vector) |
| vmls_lane | Vector multiply subtract with scalar |
| vmls_n | Vector multiply subtract with scalar |
| vmlsl | Multiply-subtract long (vector) |
| vmlsl_lane | Vector multiply-subtract long with scalar |
| vmlsl_n | Vector multiply-subtract long with scalar |
| vqdmull | Signed saturating doubling multiply long |
| vqdmull_lane | Vector saturating doubling multiply long with scalar |
| vqdmull_n | Vector saturating doubling multiply long with scalar |
| vqdmulh | Saturating doubling multiply returning high half |
| vqdmulh_lane | Vector saturating doubling multiply high by scalar |
| vqdmulh_n | Vector saturating doubling multiply high by scalar |
| vqrdmulh | Saturating rounding doubling multiply returning high half |
| vqrdmulh_lane | Vector saturating rounding doubling multiply high with scalar |
| vqrdmulh_n | Vector saturating rounding doubling multiply high with scalar |
| vqdmlal | Saturating doubling multiply-add long |
| vqdmlal_lane | Vector saturating doubling multiply-accumulate long with scalar |
| vqdmlal_n | Vector saturating doubling multiply-accumulate long with scalar |
| vqdmlsl | Signed saturating doubling multiply-subtract long |
| vqdmlsl_lane | Vector saturating doubling multiply-subtract long with scalar |
| vqdmlsl_n | Vector saturating doubling multiply-subtract long with scalar |
| vqrdmlah | Saturating rounding doubling multiply accumulate returning high half (vector) |
| vqrdmlah_lane | Saturating rounding doubling multiply accumulate returning high half (vector) |
| vqrdmlsh | Saturating rounding doubling multiply subtract returning high half (vector) |
| vqrdmlsh_lane | Saturating rounding doubling multiply subtract returning high half (vector) |
| vfma | Floating-point fused multiply-add to accumulator (vector) |
| vfma_n | Floating-point fused multiply-add to accumulator (vector) |
| vfma_lane | Floating-point fused multiply-add to accumulator (vector) |
| vfms | Floating-point fused multiply-subtract from accumulator (vector) |
| vfms_n | Floating-point fused multiply-subtract from accumulator (vector) |
| vfms_lane | Floating-point fused multiply-subtract from accumulator (vector) |
| vdiv | Floating-point divide (vector) |
| Operation | Description |
|---|---|
| vpmax | Maximum pairwise |
| vpmaxnm | Floating-point maximum number pairwise (vector) |
| vpmin | Minimum pairwise |
| vpminnm | Floating-point minimum number pairwise (vector) |
| vabd | Absolute difference |
| vabdl | Absolute difference long |
| vaba | Absolute difference and accumulate |
| vabal | Absolute difference and accumulate long |
| vmax | Maximum |
| vmaxnm | Floating-point maximum number |
| vmaxv | Maximum across vector |
| vmin | Minimum |
| vminnm | Floating-point minimum number |
| vminv | Minimum across vector |
| vabs | Absolute value |
| vqabs | Saturating absolute value |
| vneg | Negate |
| vqneg | Saturating negate |
| vcls | Count leading sign bits |
| vclz | Count leading zero bits |
| vcnt | Population count per byte |
| vrecpe | Reciprocal estimate |
| vrecps | Reciprocal step |
| vrecpx | Floating-point reciprocal exponent |
| vrsqrte | Reciprocal square root estimate |
| vrsqrts | Reciprocal square root step |
| vmovn | Extract narrow |
| vmovl | Extract long |
| vqmovn | Saturating extract narrow |
| vqmovun | Signed saturating extract unsigned narrow |
| Operation | Description |
|---|---|
| vceq | Compare bitwise equal |
| vceqz | Compare bitwise equal to zero |
| vcge | Compare greater than or equal |
| vcgez | Compare greater than or equal to zero |
| vcle | Compare less than or equal |
| vclez | Compare less than or equal to zero |
| vcgt | Compare greater than |
| vcgtz | Compare greater than zero |
| vclt | Compare less than |
| vcltz | Compare less than zero |
| vcage | Floating-point absolute compare greater than or equal |
| vcagt | Floating-point absolute compare greater than |
| vcale | Floating-point absolute compare less than or equal |
| vcalt | Floating-point absolute compare less than |
| Operation | Description |
|---|---|
| vtst | Test bits nonzero |
| vmvn | Bitwise NOT |
| vand | Bitwise AND |
| vorr | Bitwise OR |
| vorn | Bitwise OR NOT |
| veor | Bitwise exclusive OR |
| vbic | Bitwise bit clear |
| vbsl | Bitwise select |
| Operation | Description |
|---|---|
| vshl | Shift left (register) |
| vqshl | Saturating shift left (register) |
| vqshl_n | Saturating shift left (immediate) |
| vqshlu_n | Saturating shift left unsigned (immediate) |
| vrshl | Rounding shift left (register) |
| vqrshl | Saturating rounding shift left (register) |
| vshl_n | Shift left (immediate) |
| vshll_n | Shift left long (immediate) |
| vshr_n | Shift right (immediate) |
| vrshr_n | Rounding right left (register) |
| vshrn_n | Shift right narrow (immediate) |
| vqshrun_n | Signed saturating shift right unsigned narrow (immediate) |
| vqrshrun_n | Signed saturating rounded shift right unsigned narrow (immediate) |
| vqshrn_n | Signed saturating shift right narrow (immediate) |
| vrshrn_n | Rounding shift right narrow (immediate) |
| vqrshrn_n | Signed saturating rounded shift right narrow (immediate) |
| vsra_n | Signed shift right and accumulate (immediate) |
| vrsra_n | Signed rounding shift right and accumulate (immediate) |
| vsri_n | Shift right and insert (immediate) |
| vsli_n | Shift left and insert (immediate) |
| Operation | Description |
|---|---|
| vcvt | Convert to/from another precision or fixed point, rounding towards zero |
| vcvta | Convert to integer, rounding to nearest with ties to away |
| vcvtm | Convert to integer, rounding towards minus infinity |
| vcvtn | Convert to integer, rounding to nearest with ties to even |
| vcvtp | Convert to integer, rounding towards plus infinity |
| vcvtx | Convert to lower precision, rounding to nearest with ties to odd |
| vcvt_n | Convert to/from fixed point, rounding towards zero |
| vrnd | Round to Integral, toward zero |
| vrnda | Round to Integral, with ties to away |
| vrndi | Round to Integral, using current rounding mode |
| vrndm | Round to Integral, towards minus infinity |
| vrndn | Round to Integral, with ties to even |
| vrndp | Round to Integral, towards plus infinity |
| vrndx | Round to Integral exact |
| Operation | Description |
|---|---|
| vld1 | Load vector from memory |
| vst1 | Store vector to memory |
| vget_lane | Get vector element |
| vset_lane | Set vector element |
| Operation | Description |
|---|---|
| vext | Extract vector from pair of vectors |
| vtbl1 | Table vector Lookup |
| vtbx1 | Table vector lookup extension |
| vqtbl1 | Table vector Lookup |
| vqtbx1 | Table vector lookup extension |
| vrbit | Reverse bit order |
| vrev16 | Reverse elements in 16-bit halfwords |
| vrev32 | Reverse elements in 32-bit words |
| vrev64 | Reverse elements in 64-bit doublewords |
| vtrn1 | Transpose vectors (primary) |
| vtrn2 | Transpose vectors (secondary) |
| vzip1 | Zip vectors (primary) |
| vzip2 | Zip vectors (secondary) |
| vuzp1 | Unzip vectors (primary) |
| vuzp2 | Unzip vectors (secondary) |
| Operation | Description |
|---|---|
| CRC32 | Cyclic redundancy check (CRC) calculations. |
| SHA1 | SHA1 calculations. |
| SHA256 | SHA256 calculations. |
| AES | AES calculations. |
| Operation | Description |
|---|---|
| vsqrt | Square root |
| vdot | Dot product |
| vdot_lane | Dot product |