Skip to content

Development Resources

Michael R. Crusoe edited this page May 2, 2023 · 12 revisions

Architecture-Specific

Arm:

x86

POWER

The best documentation I'm aware of right now is the Power Vector Intrinsic Programming Reference. It doesn't show when various functions were added; for that information, see this spreadsheet.

The AltiVec Technology Programming Interface Manual describes the original AltiVec (from 20 years ago), so it doesn't have everything, but it's great if you're a visual learner since there are a lot of diagrams. IBM's XL C/C++ Compiler Reference, specifically the "Vector built-in functions" section in Chapter 8, can also be useful.

z/Architecture

The vector extensions for z/Arch are very similar to the ones for POWER, but more limited. The best documentation I've found is in the z/OS XL C/C++ Programming Guide.

WASM

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

MIPS SIMD has references for the SIMD ISA extensions for both 32 and 64 bit MIPS. The instruction names correspond closely to the names of the intrinsics.

Partly Portable

OpenMP SIMD

GCC-Style Vector Extensions

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.

Builtins / Intrinsics