#include <arm_neon.h>

arm_neon.h

28 typedefs · 18 structs

Intrinsics (4640, one page per family)

Arithmetic438 · Add, subtract, absolute value and difference, negate, halving and saturating forms, min/max, high-half narrowing add/subtract, and divide.
Multiply & multiply-accumulate536 · Multiply, widening and saturating doubling multiply, fused multiply-add/subtract, multiply-accumulate, and polynomial multiply.
Comparison288 · Lane-wise compares (equal, greater/less than, against zero, absolute) and bit tests, producing all-ones/all-zeros lane masks.
Shifts & inserts348 · Shifts by immediate or by register, with rounding, saturating and narrowing/widening forms, shift-and-accumulate, and shift-and-insert.
Logical & bit manipulation160 · Bitwise AND/OR/XOR/bit-clear, bitwise select, NOT, population and leading-zero/sign-bit counts, and bit reversal.
Reduction & pairwise172 · Across-vector reductions (sum, min, max) and pairwise add/min/max, including long pairwise add-accumulate.
Rounding, square root & estimates103 · Floating-point round-to-integral in each rounding mode, square root, and reciprocal / reciprocal square-root estimates and steps.
Conversion, narrowing & widening198 · Integer/floating-point and precision conversions (rounding-mode and fixed-point forms), and narrowing/widening moves.
Reinterpret casts508 · Bit-preserving casts between vector types of the same size; they generate no instructions.
Move, duplicate & lanes408 · Build vectors from scalars or halves, duplicate a lane, get/set/copy single lanes, and take the low or high half. The splat* macros are compiler helpers behind the _lane forms.
Permute & table lookup446 · Interleave and de-interleave (zip, uzp, trn), extract, element reversal, and table lookup (tbl, tbx, luti).
Load & store850 · Loads and stores of one to four vectors, with de-interleaving (ld2–ld4 / st2–st4), single-lane and replicate forms, and load-acquire/store-release lanes.
Dot product & matrix multiply32 · Integer and BFloat16 dot products and matrix multiply-accumulate (dotprod, i8mm, bf16).
Complex arithmetic62 · Complex-number add and multiply-accumulate with rotation.
Cryptography45 · AES, SHA-1, SHA-256, SHA-512, SHA-3 (eor3, rax1, xar, bcax), SM3 and SM4 instructions.
FP846 · FP8 conversions, dot products and multiply-accumulates that take an explicit fpm_t floating-point-mode operand.

Types

typedefpoly8_t

typedef uint8_t poly8_t

typedefpoly16_t

typedef uint16_t poly16_t

typedefpoly64_t

typedef uint64_t poly64_t

typedefpoly128_t

typedef __uint128_t poly128_t

typedefpoly8x8_t

typedef __attribute__((neon_polyvector_type(8))) poly8_t poly8x8_t

typedefpoly8x16_t

typedef __attribute__((neon_polyvector_type(16))) poly8_t poly8x16_t

typedefpoly16x4_t

typedef __attribute__((neon_polyvector_type(4))) poly16_t poly16x4_t

typedefpoly16x8_t

typedef __attribute__((neon_polyvector_type(8))) poly16_t poly16x8_t

typedefpoly64x1_t

typedef __attribute__((neon_polyvector_type(1))) poly64_t poly64x1_t

typedefpoly64x2_t

typedef __attribute__((neon_polyvector_type(2))) poly64_t poly64x2_t

structpoly8x8x2_t

size 16, align 8
poly8x8_t[2]val

typedefpoly8x8x2_t

typedef struct poly8x8x2_t poly8x8x2_t;

structpoly8x16x2_t

size 32, align 16
poly8x16_t[2]val

typedefpoly8x16x2_t

typedef struct poly8x16x2_t poly8x16x2_t;

structpoly16x4x2_t

size 16, align 8
poly16x4_t[2]val

typedefpoly16x4x2_t

typedef struct poly16x4x2_t poly16x4x2_t;

structpoly16x8x2_t

size 32, align 16
poly16x8_t[2]val

typedefpoly16x8x2_t

typedef struct poly16x8x2_t poly16x8x2_t;

structpoly64x1x2_t

size 16, align 8
poly64x1_t[2]val

typedefpoly64x1x2_t

typedef struct poly64x1x2_t poly64x1x2_t;

structpoly64x2x2_t

size 32, align 16
poly64x2_t[2]val

typedefpoly64x2x2_t

typedef struct poly64x2x2_t poly64x2x2_t;

structpoly8x8x3_t

size 24, align 8
poly8x8_t[3]val

typedefpoly8x8x3_t

typedef struct poly8x8x3_t poly8x8x3_t;

structpoly8x16x3_t

size 48, align 16
poly8x16_t[3]val

typedefpoly8x16x3_t

typedef struct poly8x16x3_t poly8x16x3_t;

structpoly16x4x3_t

size 24, align 8
poly16x4_t[3]val

typedefpoly16x4x3_t

typedef struct poly16x4x3_t poly16x4x3_t;

structpoly16x8x3_t

size 48, align 16
poly16x8_t[3]val

typedefpoly16x8x3_t

typedef struct poly16x8x3_t poly16x8x3_t;

structpoly64x1x3_t

size 24, align 8
poly64x1_t[3]val

typedefpoly64x1x3_t

typedef struct poly64x1x3_t poly64x1x3_t;

structpoly64x2x3_t

size 48, align 16
poly64x2_t[3]val

typedefpoly64x2x3_t

typedef struct poly64x2x3_t poly64x2x3_t;

structpoly8x8x4_t

size 32, align 8
poly8x8_t[4]val

typedefpoly8x8x4_t

typedef struct poly8x8x4_t poly8x8x4_t;

structpoly8x16x4_t

size 64, align 16
poly8x16_t[4]val

typedefpoly8x16x4_t

typedef struct poly8x16x4_t poly8x16x4_t;

structpoly16x4x4_t

size 32, align 8
poly16x4_t[4]val

typedefpoly16x4x4_t

typedef struct poly16x4x4_t poly16x4x4_t;

structpoly16x8x4_t

size 64, align 16
poly16x8_t[4]val

typedefpoly16x8x4_t

typedef struct poly16x8x4_t poly16x8x4_t;

structpoly64x1x4_t

size 32, align 8
poly64x1_t[4]val

typedefpoly64x1x4_t

typedef struct poly64x1x4_t poly64x1x4_t;

structpoly64x2x4_t

size 64, align 16
poly64x2_t[4]val

typedefpoly64x2x4_t

typedef struct poly64x2x4_t poly64x2x4_t;