Skip to content

MarcinZukowski/simd.dev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

simd.dev

🚧 WIP — work in progress 🚧

Schema, layout, and APIs are still moving. Expect breaking changes until this notice is removed.

A collection of data and tools related to SIMD intrinsics and SIMD vector data types (__m256i, int8x16_t, svfloat32_t, __mmask8, svbool_t, …).

Contains:

  • data - A unified intrinsic + type database in data/intrinsics.jsonl21,484 intrinsic records + 208 SIMD type records spanning ARM (NEON / Helium / SVE / SVE2 / SME) and Intel (MMX / SSE* / AVX / AVX2 / AVX-512 / AMX / etc.). See data/README.md for schema, provenance, and rebuild instructions. Generated automatically from upstream sources (ARM ACLE, Intel Intrinsics Guide XML, LLVM clang headers); pure stdlib Python, no LLM in the loop.

  • simd-tooltip - Drop-in JS tooltip library. One <script> tag adds hover (or click, or hover-with-?-badge) tooltips to any HTML page, detecting intrinsic names in text without touching the DOM by default. See simd-tooltip/README.md for install instructions and simd-tooltip/examples/demo.html for a working page.

  • simd-annotate - A CLI that takes an arbitrary HTML file and emits a self-contained, 100% offline HTML page with the library plus only the slice of the intrinsic database the page actually references embedded inline. Useful for archived posts, e-book exports, intranet docs. See an example with annotations.

  • simd-vscode - A VS Code extension that surfaces the same data as a hover tooltip directly in your editor — covers ~22k intrinsics + 208 SIMD types, including the AVX-512 and ARM NEON/SVE/SME ranges where clangd typically shows only the bare signature. Manual install via vsce package + code --install-extension. See simd-vscode/README.md.

  • simd.dev/ - Static landing page for the project's domain. Describes the four pieces above and provides a small intrinsic-search box that filters the names index live and renders the full record on click. Self-contained after sync.sh; deployable to any static host.

Why?

I like to play with SIMD code but I tend to forget things quickly. So having immediate access to an explanation of what an intrinsic does is very helpful.

I looked around, but couldn't find either a library like this or a well-defined open database. So, with the help of Claude, I built it on one Sunday afternoon.

One motivation was the tooltips in Compiler Explorer — but those are only for the generated assembly, not for the C/C++ source side.

Related projects:

  • Compiler Explorer (godbolt) has rich hover tooltips on the assembly side (its asm-docs/ directory ships ~2 MB of curated entries for x86 / aarch64 / RISC-V / etc.). On the C/C++ source side it has none of its own — and it's a full IDE-style app, not a static doc renderer in any case.
  • clangd (LSP) shows hover info in your IDE — editor-only, not exportable to HTML, coverage is uneven.
  • Intel's Intrinsics Guide — the reference everyone uses for browsing, with rich descriptions and pseudocode. Our DB pulls signatures, ISA flags, and pseudocode from the same XML it's built on.
  • simd.info — seems to be a very rich and deep database with a different focus (reference reading rather than tooltip embedding). Not open.
  • Highway (Google's portable SIMD library) has writeups under g3doc/ that mention specific intrinsics inline as cross-references — useful, but hand-curated rather than driven by a database. Different scope (portable abstraction layer over Intel/NEON/RISC-V/WASM SIMD), but a kindred-spirit example.
  • ARM Compute Library has function-level / kernel-level docs but doesn't link individual NEON/SVE intrinsics — different abstraction layer, complementary rather than overlapping.

About

A database of SIMD intrinsics plus related tooling

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors