Skip to content

Development Resources

Evan Nemerson edited this page Jul 17, 2021 · 12 revisions

Architecture-Specific

Arm:

x86

POWER

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.

To find out which version of the ISA a function was added in, you can use this spreadsheet.

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

Clone this wiki locally