Skip to content

Clement-Jean/simd-go-POC

Repository files navigation

simd-go-POC

This repository is an attempt at adding SIMD to Go through compiler intrinsics.

Init

git submodule update --init --recursive

Build

pushd go && ../build.sh && popd

Run

go/bin/go run [-tags neon|sse2|sse4.1|ssse3] ./examples/{NAME}.go

Architecture

  • patches -> patching existing files
  • overlays -> new dirs+files

Supported Intrinsics

legend:

  • 🚫 not available
  • ✅ implemented
  • ❌ not implemented (maybe unavailable)
Intrinsic NEON SSE2 SSE4.1 SSSE3
Add8x16 🚫
AddU8x16 🚫
Sub8x16 🚫
SubU8x16 🚫
SaturatingAdd8x16 🚫
SaturatingAddU8x16 🚫
SaturatingSub8x16 🚫
SaturatingSubU8x16 🚫
And8x16 🚫
AndU8x16 🚫
And16x8 🚫
AndU16x8 🚫
Or8x16 🚫
OrU8x16 🚫
Xor8x16 🚫
Xor8x16 🚫
ShiftLeftU8x16 🚫 🚫 🚫
ShiftLeft8x16 🚫 🚫 🚫
ShiftRightU8x16 🚫 🚫 🚫
ShiftRight8x16 🚫 🚫 🚫
ShiftRightU16x8 🚫
ShiftRight16x8 🚫
Max8x16 🚫 🚫
MaxU8x16 🚫
Min8x16 🚫 🚫
MinU8x16 🚫
ReduceMax8x16 🚫 🚫 🚫
ReduceMaxU8x16 🚫 🚫 🚫
ReduceMin8x16 🚫 🚫 🚫
ReduceMinU8x16 🚫
ExtractU8x16
Extract8x16
LookupU8x16
Lookup8x16
AllZerosU8x16 🚫
AllZeros8x16 🚫
MovMaskByteU8x16 🚫 🚫
MovMaskByte8x16 🚫 🚫
SplatU8x16 🚫
Splat8x16 🚫