Neon (Arm SIMD)

Neon (Arm Advanced SIMD) is the 128-bit vector extension of every Apple silicon core. <arm_neon.h> exposes it to C as vector types (int8x16_t, float32x4_t, …) and one intrinsic per instruction form, named v<operation>[q]_<type> — the q suffix selects the 128-bit variant. The header ships with the compiler rather than the SDK and carries no comments; declarations come from Apple clang's copy, and each intrinsic's target(...) attribute names the architecture feature it needs beyond base Neon.

Headers

arm_bf16.h===---- arm_bf16.h - ARM BF16 intrinsics -----------------------------------===
arm_vector_types.h===---- arm_vector_types - ARM vector type ------===

Intrinsics

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.