-
Notifications
You must be signed in to change notification settings - Fork 259
Development Resources
- NEON
- MVE/Helium
- SVE
- Arm HPC tools for SVE (resources)
- SVE Vector Length Agnostic (VLA) programming (introductory tutorial)
- ARM C Language Extensions for SVE (reference)
- SVE Programming Examples
The AltiVec Technology Programming Interface Manual describes the original AltiVec (from 20 years ago). There have been a several improvements made over the years, the best public documentation for modern AltiVec/VSX I'm aware of is IBM's XL C/C++ Compiler Reference; specifically the "Vector built-in functions" section in Chapter 8.
The most reliable source is probably llvm's wasm_simd128.h
, but it doesn't really include documentation. If you want more than a header, the WebAssembly 128-bit packed SIMD Extension is probably your best bet, but be aware that it doesn't always quite correspond to what is in the header, so you'll want to check the header too.
MIPS SIMD has references for the SIMD ISA extensions for both 32 and 64 bit MIPS.
- Explicit Vector Programming with OpenMP 4.0 SIMD Extensions (tutorial)
- OpenMP SIMD Directives (reference)
Most popular compilers (including GCC, clang, and ICC) support some version of this, but often only a subset. There are several SIMDE_VECTOR_*
macros in simde/simde-common.h
to help you detect which features are available.
-
SIMDE_CONVERT_VECTOR_
:__builtin_convertvector
(clang & GCC 9+) -
SIMDE_SHUFFLE_VECTOR_
-
__builtin_shuffle
(GCC) -
__builtin_shufflevector
(clang)
-