Version: Unity 6.6 Beta (6000.6)
Language : English
Processor specific SIMD extensions
Burst Editor windows reference

Burst Arm Neon intrinsics reference

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.

Intrinsics type creation and conversion

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

Arithmetic

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

Multiply

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)

Data processing

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

Comparison

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

Bitwise

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

Shift

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)

Floating-point

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

Load and store

Operation Description
vld1 Load vector from memory
vst1 Store vector to memory
vget_lane Get vector element
vset_lane Set vector element

Permutation

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)

Cryptographic

Operation Description
CRC32 Cyclic redundancy check (CRC) calculations.
SHA1 SHA1 calculations.
SHA256 SHA256 calculations.
AES AES calculations.

Miscellaneous

Operation Description
vsqrt Square root
vdot Dot product
vdot_lane Dot product

Additional resources

Processor specific SIMD extensions
Burst Editor windows reference