Na SIMD ve WASM jsem zvědavý. Někde v dokumentaci jsem četl, že v Céčku je možné používat x86 intrinsics (asi jenom SSE2) a compiler (clang) to v pohodě přeloží do WASM. To má WASM 1:1 ekvivalentní instrukce jako x86? Nebo fungují pouze některé? Nebo fungují všechny ale výsledný bajtkód bude vypadat hrozně (protože to bude neefektivně emulovat)? Co když potom ta binárka poběží na ARM/NEON, nebude to pomalé? Mám zkušenosti pouze s integer SIMD (SSE2 až AVX512) a tam ten lineární nárůst výkonu lze snadno vidět.
Ano v céčku je možné používat intrinsics, ale i klidně se do SIMD přeloží i vektorové operace, tedy operace nad (například):
typedef float v16f __attribute__((vector_size(16)));
Omezeno je to většinou právě na 128bitové vektory s floaty, takže žádná ekvivalence s AVX nebo dokonce AVX 512 tam není, ale pořád lepší než nic. A právě kvůli tomu omezeni to dobře běží i s NEONy.