Bylo by mozna fajn uvest, jak intrinsic pouzit i odjinud, nez jen z C. Predpokladam, ze kdyz je to v GCC C, tak i v kazdem dalsim prekladaci GCC ze?
(taky - ale tady se priznam, ze jsem to jenom cetl, jako plan - pry je podpora SIMD i ve WebAssembly. jako primo v tom bajtkodu se planovaly simd operace, ale jestli to intel dotlacil nebo ne, uz nevim)
je to trochu chaos :).
suffix intrin.h je jasný, to mají všechny.
Prefixy:
mm - je rodina SSE instrukcí, ty pak mají ještě jednopísmenkový prefix (x, e, p, t, s, w), u něho jsem nikdy nenašel nějakou logiku, další generací přidají nové písmenko
avx - celá rodina avx
Pak je tam několik oddělených skupin - sha, fma, f16c, rtm a pár dalších, název vesměs odpovídá datasheetu cpu architektur.
Dneska není potřeba všechny tyhle hlavičkové soubory vyjmenovávat, je tady souhrnný immintrin.h, který obsahuje všechny. Pa??w0rd1 to napsal nepřesně, AVX2 je v avx2intrin.h, ale samozřejmě je také obsažen v souhrnném immintrin.h.
Tak začátek byl jasný - mmintrin.h pro instrukce s MM registry (MMX), a xmmintrin.h pro instrukce s XMM registry (SSE). No a pak emmintrin.h to bylo asi jako extended xmm intrin, ale další písmenka opravdu asi nemají moc logiku (teda pokud si je Intel neodvozoval z názvu první mikroarchitektury, která ty nové instrukce podporovala, to by klidně mohlo byt).
21. 10. 2022, 15:26 editováno autorem komentáře
ano, mm a xmm registry jsou transparentní, emm můžeme tipovat. pmm je podle Intel Prescott, emm by pak klidně mohlo být Enhanced Pentium M, ale ty další?
Koukám sem https://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures a zkouším odhadovat.