#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. 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. 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
typedef uint16_t poly16_t
typedef uint64_t poly64_t
typedef __uint128_t poly128_t
typedef __attribute__((neon_polyvector_type(8))) poly8_t poly8x8_t
typedef __attribute__((neon_polyvector_type(16))) poly8_t poly8x16_t
typedef __attribute__((neon_polyvector_type(4))) poly16_t poly16x4_t
typedef __attribute__((neon_polyvector_type(8))) poly16_t poly16x8_t
typedef __attribute__((neon_polyvector_type(1))) poly64_t poly64x1_t
typedef __attribute__((neon_polyvector_type(2))) poly64_t poly64x2_t
typedef struct poly8x8x2_t poly8x8x2_t;
typedef struct poly8x16x2_t poly8x16x2_t;
typedef struct poly16x4x2_t poly16x4x2_t;
typedef struct poly16x8x2_t poly16x8x2_t;
typedef struct poly64x1x2_t poly64x1x2_t;
typedef struct poly64x2x2_t poly64x2x2_t;
typedef struct poly8x8x3_t poly8x8x3_t;
typedef struct poly8x16x3_t poly8x16x3_t;
typedef struct poly16x4x3_t poly16x4x3_t;
typedef struct poly16x8x3_t poly16x8x3_t;
typedef struct poly64x1x3_t poly64x1x3_t;
typedef struct poly64x2x3_t poly64x2x3_t;
typedef struct poly8x8x4_t poly8x8x4_t;
typedef struct poly8x16x4_t poly8x16x4_t;
typedef struct poly16x4x4_t poly16x4x4_t;
typedef struct poly16x8x4_t poly16x8x4_t;
typedef struct poly64x1x4_t poly64x1x4_t;
typedef struct poly64x2x4_t poly64x2x4_t;