# 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`](/engine/6000.7/script-reference/unity/burst/intrinsics/arm/neon.md) API reference.

For information on how to use these intrinsics, refer to [Processor specific SIMD extensions](/engine/6000.7/manual/programming-environment/script-compilation/burst/csharp-burst-intrinsics/processors.md).

### 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 longwith scalar               |
| vqdmlal\_n     | Vector saturating doubling multiply-accumulate longwith scalar               |
| vqdmlsl        | Signed saturating doubling multiply-subtract long                            |
| vqdmlsl\_lane  | Vector saturating doubling multiply-subtract longwith scalar                 |
| vqdmlsl\_n     | Vector saturating doubling multiply-subtract longwith scalar                 |
| vqrdmlah       | Saturating rounding doubling multiply accumulatereturning high half (vector) |
| vqrdmlah\_lane | Saturating rounding doubling multiply accumulatereturning high half (vector) |
| vqrdmlsh       | Saturating rounding doubling multiply subtractreturning high half (vector)   |
| vqrdmlsh\_lane | Saturating rounding doubling multiply subtractreturning 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-subtractfrom accumulator (vector)              |
| vfms\_n        | Floating-point fused multiply-subtractfrom accumulator (vector)              |
| vfms\_lane     | Floating-point fused multiply-subtractfrom 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 rightunsigned narrow (immediate)         |
| vqrshrun\_n | Signed saturating rounded shift rightunsigned 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](/engine/6000.7/manual/programming-environment/script-compilation/burst/csharp-burst-intrinsics/processors.md)
