std1.0.0-beta-7 SafeC docs

Module simd::aarch64

#include <std/simd/aarch64.h> source

std::simd, AArch64 convenience layer

Pure naming/documentation layer over std/simd/simd.h's portable vec<T,N>-based types and functions — LLVM's AArch64 backend lowers every operation in simd.sc directly to NEON (Advanced SIMD) instructions on the 32 128-bit v0-v31 registers (fadd/fmul .4s/.2d forms, etc.) from the portable source; there is no separate hand-written implementation here.

NEON registers are natively 128-bit — unlike x86_64's AVX, there is no 256-bit hardware vector register, so the *x8 float32 / *x4 float64 types below are provided for API symmetry with the other per-ISA headers, but LLVM lowers them as a pair of 128-bit NEON operations (still correct, just two instructions instead of one). Prefer the 128-bit-native aliases (v4f32, v16i8, v2f64, ...) when writing AArch64-focused code.

Type aliases

v4f32NEON float32x4_t (128-bit, native)
v4i32NEON int32x4_t (128-bit, native)
v8i16NEON int16x8_t (128-bit, native)
v16i8NEON int8x16_t (128-bit, native)
v16u8NEON uint8x16_t (128-bit, native)
v4u32NEON uint32x4_t (128-bit, native)
v2f64NEON float64x2_t (128-bit, native)
v8f32two NEON float32x4_t ops (not a single native register)
v4f64two NEON float64x2_t ops (not a single native register)