AVX -512 - AVX-512

AVX-512 jsou 512bitová rozšíření 256bitových pokročilých vektorových rozšíření SIMD instrukce pro architekturu instrukční sady x86 (ISA) navržené společností Intel v červenci 2013 a implementované v procesorech Intel Xeon Phi x200 (Knights Landing) a Skylake-X ; to zahrnuje řadu Core-X (kromě Core i5-7640X a Core i7-7740X), stejně jako novou řadu Xeon Scalable Processor Family a Xeon D-2100 Embedded.

AVX-512 není první 512bitovou instrukční sadou SIMD, kterou Intel představil v procesorech: dřívější 512bitové instrukce SIMD používané v první generaci koprocesorů Xeon Phi , odvozených z projektu Intel Larrabee , jsou podobné, ale nejsou binárně kompatibilní a pouze částečně kompatibilní se zdrojem.

AVX-512 se skládá z několika rozšíření, která mohou být implementována nezávisle. Tato politika je odklonem od historického požadavku implementace celého bloku instrukcí. Všechny implementace AVX-512 vyžadují pouze základní rozšíření AVX-512F (AVX-512 Foundation).

Instrukční sada

Instrukční sada AVX-512 se skládá z několika samostatných sad, z nichž každá má svůj vlastní jedinečný bit funkce CPUID; jsou však obvykle seskupeny podle generace procesoru, která je implementuje.

F, CD, ER, PF
Představeno s Xeon Phi x200 (Knights Landing) a Xeon Gold/Platinum ( Skylake SP „Purley“), přičemž poslední dva (ER a PF) jsou specifické pro Knights Landing.
  • AVX-512 Foundation (F)  -rozšiřuje většinu 32bitových a 64bitových instrukcí AVX o kódovací schéma EVEX na podporu 512bitových registrů, operačních masek, vysílání parametrů a vestavěného zaokrouhlování a řízení výjimek, implementuje Knights Landing a Skylake Xeon
  • Pokyny k detekci konfliktů AVX-512 (CD)  -efektivní detekce konfliktů umožňující vektorizaci více smyček , implementované Knights Landing a Skylake X
  • AVX-512 Exponenciální a reciproční pokyny (ER) -exponenciální a reciproční operace navržené tak, aby pomohly implementovat transcendentální operace, implementované Knights Landing
  • AVX-512 Prefetch Instructions (PF)  -nové možnosti předběžného načtení, implementované Knights Landing
VL, DQ, BW
Představeno se Skylake X a Cannon Lake .
  • Rozšíření vektorové délky AVX-512 (VL)  -rozšiřuje většinu operací AVX-512 také na registry XMM (128bitové) a YMM (256bitové)
  • AVX-512 Doubleword and Quadword Instructions (DQ)-přidává  nové 32bitové a 64bitové instrukce AVX-512
  • AVX-512 Byte and Word Instructions (BW)  -rozšiřuje AVX-512 tak, aby pokryl 8bitové a 16bitové celočíselné operace
IFMA, VBMI
Představeno s Cannon Lake .
  • AVX-512 Integer Fused Multiply Add (IFMA) -fúzované násobení celých čísel pomocí 52bitové přesnosti.
  • Pokyny k manipulaci s vektorovými bajty AVX-512 (VBMI) přidávají pokyny pro vektorovou permutaci bajtů, které nebyly v AVX-512BW přítomny.
4VNNIW, 4FMAPS
Představeno s Knights Mill .
  • AVX -512 Pokyny pro vektorovou neuronovou síť Variabilní přesnost slova (4VNNIW) - vektorové instrukce pro hluboké učení, vylepšené slovo, variabilní přesnost.
  • AVX -512 Fused Multiply Accumulation Packed Single Precision (4FMAPS) - vektorové instrukce pro hluboké učení, plovoucí desetinnou čárkou, jedinou přesnost.
VPOPCNTDQ
Vektorové instrukce pro počet obyvatel . Představeno s Knights Mill a Ice Lake .
VNNI, VBMI2, BITALG
Představeno s Ice Lake.
  • AVX -512 Vector Neural Network Instructions (VNNI) - vektorové instrukce pro hluboké učení.
  • AVX -512 Vector Byte Manipulation Instructions 2 (VBMI2) - byte/word load, store and concatenation with shift.
  • AVX -512 Bit Algorithms (BITALG) - instrukce pro manipulaci s bity /slovy s bity rozšiřující VPOPCNTDQ.
VP2INTERSECT
Představeno s Tiger Lake.
  • Křižovatka vektorových párů AVX-512 s párem registrů masky (VP2INTERSECT) .
GFNI, VPCLMULQDQ, VAES
Představeno s Ice Lake.
  • Nejedná se o funkce AVX-512 samy o sobě. Spolu s AVX-512 umožňují verze kódovaných EVEX instrukcí GFNI, PCLMULQDQ a AES.

Kódování a funkce

VEX předpona používaná AVX a AVX2, zatímco pružná, neměl dostatek místa pro funkce Intel chce přidat do AVX-512. To je přimělo definovat novou předponu s názvem EVEX .

Ve srovnání s VEX přináší EVEX následující výhody:

  • Rozšířené kódování registrů umožňující 32 512bitových registrů.
  • Přidává 8 nových registrů opmask pro maskování většiny pokynů AVX-512.
  • Přidá nový skalární režim paměti, který automaticky provádí vysílání.
  • Přidává prostor pro explicitní ovládání zaokrouhlování v každé instrukci.
  • Přidá nový režim adresování paměti s komprimovaným výtlakem .

Rozšířené registry, bit šířky SIMD a registry opmask AVX-512 jsou povinné a všechny vyžadují podporu operačního systému.

Režimy SIMD

Instrukce AVX-512 jsou navrženy tak, aby se mísily se 128/256bitovými instrukcemi AVX/AVX2 bez penalizace za výkon. Rozšíření AVX-512VL však umožňují použití instrukcí AVX-512 na 128/256bitových registrech XMM/YMM, takže většina instrukcí SSE a AVX/AVX2 má nové verze AVX-512 kódované předponou EVEX, které umožňují přístup k novým funkcím jako je opmask a další registry. Na rozdíl od AVX-256, nové instrukce nemají nové mnemotechnické pomůcky, ale sdílejí jmenný prostor s AVX, takže rozdíl mezi VEX a EVEX kódovanými verzemi instrukce je ve zdrojovém kódu nejednoznačný. Protože AVX-512F funguje pouze na 32 a 64bitových hodnotách, pokyny SSE a AVX/AVX2, které fungují na bajtech nebo slovech, jsou k dispozici pouze s příponou AVX-512BW (podpora Byte & Word).

název Rozšiřující sady Registry Typy
Starší SSE SSE-SSE4.2 xmm0-xmm15 jediné plováky. Ze SSE2: bajty, slova, dvojslova, čtyřslovna a dvojité plováky.
AVX-128 (VEX) AVX, AVX2 xmm0-xmm15 bajty, slova, dvojslova, čtyřslovna, jednoduché plováky a dvojité plováky.
AVX-256 (VEX) AVX, AVX2 ymm0-ymm15 jednoduchý a dvojitý plovák. Z AVX2: bajty, slova, dvojslova, čtyřslovna
AVX-128 (EVEX) AVX-512VL xmm0-xmm31 (k1-k7) doublewords, quadwords, single float a double float. S AVX512BW: bajty a slova
AVX-256 (EVEX) AVX-512VL ymm0-ymm31 (k1-k7) doublewords, quadwords, single float a double float. S AVX512BW: bajty a slova
AVX-512 (EVEX) AVX-512F zmm0-zmm31 (k1-k7) doublewords, quadwords, single float a double float. S AVX512BW: bajty a slova

Rozšířené registry

Schéma registru x64 AVX-512 jako rozšíření z registrů x64 AVX (YMM0-YMM15) a x64 SSE (XMM0-XMM15)
511 256 255 128 127 0
  ZMM0     YMM0     XMM0  
ZMM1 YMM1 XMM1
ZMM2 YMM2 XMM2
ZMM3 YMM3 XMM3
ZMM4 YMM4 XMM4
ZMM5 YMM5 XMM5
ZMM6 YMM6 XMM6
ZMM7 YMM7 XMM7
ZMM8 YMM8 XMM8
ZMM9 YMM9 XMM9
ZMM10 YMM10 XMM10
ZMM11 YMM11 XMM11
ZMM12 YMM12 XMM12
ZMM13 YMM13 XMM13
ZMM14 YMM14 XMM14
ZMM15 YMM15 XMM15
ZMM16 YMM16 XMM16
ZMM17 YMM17 XMM17
ZMM18 YMM18 XMM18
ZMM19 YMM19 XMM19
ZMM20 YMM20 XMM20
ZMM21 YMM21 XMM21
ZMM22 YMM22 XMM22
ZMM23 YMM23 XMM23
ZMM24 YMM24 XMM24
ZMM25 YMM25 XMM25
ZMM26 YMM26 XMM26
ZMM27 YMM27 XMM27
ZMM28 YMM28 XMM28
ZMM29 YMM29 XMM29
ZMM30 YMM30 XMM30
ZMM31 YMM31 XMM31

Šířka souboru registru SIMD se zvětší z 256 bitů na 512 bitů a rozšíří se z 16 na celkem 32 registrů ZMM0-ZMM31. Tyto registry lze adresovat jako 256bitové registry YMM z rozšíření AVX a 128bitové registry XMM z rozšíření Streaming SIMD Extensions a starší instrukce AVX a SSE lze rozšířit tak, aby fungovaly na dalších 16 registrech XMM16-XMM31 a YMM16-YMM31 při použití EVEX zakódovaná forma.

Registruje masku

Většina instrukcí AVX-512 může indikovat jeden z 8 registrů opmask (k0 – k7). U instrukcí, které používají registr masky jako opmask, je registr 'k0' speciální: napevno zakódovaná konstanta používaná k označení nemaskovaných operací. U ostatních operací, jako jsou ty, které zapisují do registru opmask nebo provádějí aritmetické nebo logické operace, je 'k0' fungující, platný registr. Ve většině instrukcí se opmask používá k ovládání, které hodnoty jsou zapsány do cíle. Příznak ovládá chování opmask, které může být buď „nula“, což vynuluje vše, co maska ​​nevybere, nebo „sloučit“, což ponechá vše, co nebylo vybráno, nedotčené. Chování sloučení je totožné s pokyny pro míchání.

Registry opmask jsou obvykle 16 bitů široké, ale s rozšířením AVX-512BW mohou mít až 64 bitů. Kolik bitů se ve skutečnosti použije, však závisí na vektorovém typu maskovaných pokynů. U 32bitových jednoduchých nebo dvojitých slov se 16 bitů používá k maskování 16 prvků v 512bitovém registru. Pro dvojitá plovoucí a čtyřčlenná slova se používá nejvýše 8 bitů masky.

Registr opmask je důvodem, proč bylo do AVX-512 přidáno několik bitových instrukcí, které přirozeně nemají žádnou šířku prvku. Například bitové AND, NEBO nebo 128bitové shuffle nyní existují ve dvouslovných i čtyřslovných variantách, přičemž jediným rozdílem je konečné maskování.

Nové pokyny pro maskování

Registry opmask mají nové mini rozšíření pokynů působících přímo na nich. Na rozdíl od ostatních instrukcí AVX-512 jsou všechny tyto instrukce kódovány VEX. Počáteční pokyny k maskování jsou všechny 16bitové (Word) verze. S AVX-512DQ byly přidány 8bitové (bajtové) verze, aby lépe odpovídaly potřebám maskování 8 64bitových hodnot, a s AVX-512BW byly přidány 32bitové (dvojité) a 64bitové (čtyřjádrové) verze, aby mohly maskovat až 64 8bitových hodnot. Pokyny KORTEST a KTEST lze použít k nastavení příznaků x86 na základě registrů masky, takže je lze použít společně s instrukcemi x86 větví a podmíněných instrukcí.

Návod Sada rozšíření Popis
KAND F Bitově logické A masky
KANDN F Bitově logické A NE masky
KMOV F Přesun z a do registrů masek nebo registrů pro obecné účely
KUNPCK F Rozbalte pro registry masek
KNOT F NENÍ masková registrace
KOR F Bitově logické NEBO masky
KORTEST F NEBO masky a nastavit vlajky
KSHIFTL F Posuňte registry levé masky
KSHIFTR F Posuňte registry pravé masky
KXNOR F Bitově logické masky XNOR
KXOR F Bitově logické masky XOR
KADD ČB/DQ Přidejte dvě masky
KTEST ČB/DQ Bitové srovnání a nastavení příznaků

Nové pokyny v základu AVX-512

Mnoho instrukcí AVX-512 je jednoduše verzí EVEX starých instrukcí SSE nebo AVX. Existuje však několik nových pokynů a starých pokynů, které byly nahrazeny novými verzemi AVX-512. Níže jsou uvedeny nové nebo zásadně přepracované pokyny. Tyto základní pokyny také zahrnují rozšíření z AVX-512VL a AVX-512BW, protože tato rozšíření pouze přidávají nové verze těchto pokynů namísto nových pokynů.

Smíchejte pomocí masky

Z SSE4 neexistují žádné verze pokynů pro míchání s předponou EVEX ; místo toho má AVX-512 novou sadu směšovacích instrukcí pomocí registrů masky jako voličů. Spolu s níže uvedenými obecnými pokyny k maskování je lze použít k implementaci generických ternárních operací nebo cmov, podobně jako VPCMOV XOP .

Protože míchání je nedílnou součástí kódování EVEX, lze tyto instrukce také považovat za základní instrukce pro přesun. Pomocí režimu nulování lze také použít jako maskovací instrukce.

Návod Sada rozšíření Popis
VBLENDMPD F Smíchejte vektory float64 pomocí ovládání opmask
VBLENDMPS F Smíchejte vektory float32 pomocí ovládání opmask
VPBLENDMD F Smíchejte vektory int32 pomocí ovládání opmask
VPBLENDMQ F Smíchejte vektory int64 pomocí ovládání opmask
VPBLENDMB ČB Smíchejte vektory s celočíselnými bajty pomocí ovládání opmask
VPBLENDMW ČB Smíchejte celočíselné vektory slova pomocí ovládání opmask

Porovnat do masky

AVX-512F má čtyři nové pokyny pro porovnání. Stejně jako jejich protějšky XOP používají bezprostřední pole k výběru mezi 8 různými srovnáními. Na rozdíl od jejich inspirace XOP však ukládají výsledek do registru masky a zpočátku podporují pouze srovnání dvojitých a čtyř hesel. Rozšíření AVX-512BW poskytuje verze v bajtech a slovech. Všimněte si, že pro pokyny mohou být zadány dva registry masky, jeden pro zápis a jeden pro deklaraci pravidelného maskování.

Bezprostřední Srovnání Popis
0 EQ Rovnat se
1 LT Méně než
2 LE Méně nebo rovno
3 NEPRAVDIVÉ Nastaveno na nulu
4 NEQ Není rovno
5 NLT Větší nebo rovno
6 NLE Větší než
7 SKUTEČNÝ Nastaveno na jednu
Návod Sada rozšíření Popis
VPCMPD

VPCMPUD

F Porovnejte podepsaná/nepodepsaná dvojslova s ​​maskou
VPCMPQ

VPCMPUQ

F Porovnejte podepsaná/nepodepsaná čtyř hesla do masky
VPCMPB

VPCMPUB

ČB Porovnejte podepsané/nepodepsané bajty s maskou
VPCMPW

VPCMPUW

ČB Porovnejte podepsaná/nepodepsaná slova do masky

Logická sada masky

Posledním způsobem, jak nastavit masky, je použití logické sady masek. Tyto pokyny provádějí buď AND nebo NAND, a poté nastaví cílovou masku na základě nulových nebo nenulových hodnot výsledků. Všimněte si toho, že stejně jako srovnávací instrukce, tyto berou dva registry opmaskiny, jeden jako cíl a jeden běžnou masku.

Návod Sada rozšíření Popis
VPTESTMD, VPTESTMQ F Logické AND a nastavení masky pro 32 nebo 64 bitová celá čísla.
VPTESTNMD, VPTESTNMQ F Logický NAND a nastavená maska ​​pro 32 nebo 64 bitová celá čísla.
VPTESTMB, VPTESTMW ČB Logické AND a nastavení masky pro 8 nebo 16bitová celá čísla.
VPTESTNMB, VPTESTNMW ČB Logický NAND a nastavená maska ​​pro 8 nebo 16bitová celá čísla.

Komprimujte a rozbalte

Pokyny pro kompresi a rozbalení odpovídají operacím APL se stejným názvem. Používají opmask trochu jiným způsobem než ostatní instrukce AVX-512. Komprimovat ukládá pouze hodnoty označené v masce, ale ukládá je zkomprimované přeskočením a nevyhrazením místa pro neoznačené hodnoty. Rozbalit funguje opačným způsobem, a to tak, že načte tolik hodnot, kolik je uvedeno v masce, a poté je roztáhne do vybraných pozic.

Návod Popis
VCOMPRESSPD,

VCOMPRESSPS

Ukládejte řídce zabalené hodnoty s plovoucí desetinnou čárkou s dvojitou/jednoduchou přesností do husté paměti
VPCOMPRESSD,

VPCOMPRESSQ

Ukládejte řídce zabalené dvojslovné/čtyřslovné celočíselné hodnoty do husté paměti/registru
VEXPANDPD,

VEXPANDPS

Načtěte řídce zabalené hodnoty s dvojitou/jednoduchou plovoucí desetinnou čárkou z husté paměti
VPEXPANDD,

VPEXPANDQ

Načíst řídce zabalené dvojslovné/čtyřslovné celočíselné hodnoty z husté paměti/registru

Obměňovat

Byla přidána nová sada instrukcí pro permutaci pro úplné dvě vstupní permutace. Všichni berou tři argumenty, dva zdrojové registry a jeden index; výsledek je vydán buď přepsáním prvního zdrojového registru, nebo indexového registru. AVX-512BW rozšiřuje pokyny tak, aby zahrnovaly také 16bitové (slovo) verze, a rozšíření AVX-512_VBMI definuje bajtové verze pokynů.

Návod Sada rozšíření Popis
VPERMB VBMI Povolit prvky zabalených bajtů.
VPERMW ČB Povolte prvky sbaleného slova.
VPERMT2B VBMI První zdroj přepisuje plnou bajtovou permutaci.
VPERMT2W ČB Úplné přepsání slova přepsáním prvního zdroje.
VPERMI2PD, VPERMI2PS F Plná jednoduchá/dvojitá permutace s plovoucí desetinnou čárkou přepisující index.
VPERMI2D, VPERMI2Q F Úplná dvojslovná/čtyřslovná permutace přepisující index.
VPERMI2B VBMI Celá bajtová permutace přepisující index.
VPERMI2W ČB Plná změna slova přepsáním rejstříku.
VPERMT2PS, VPERMT2PD F Úplná jednoduchá/dvojitá permutace s přepsáním prvního zdroje.
VPERMT2D, VPERMT2Q F Úplné přepsání prvního zdroje dvojitým nebo čtyřslovným heslem.
VSHUFF32x4, VSHUFF64x2,

VSHUFI32x4, VSHUFI64x2

F Zamíchejte čtyři zabalené 128bitové řádky.
VPMULTISHIFTQB VBMI Vyberte zabalené nezarovnané bajty ze zdrojů čtyř hesel.

Bitová ternární logika

Dvě nové přidané instrukce mohou logicky implementovat všechny možné bitové operace mezi třemi vstupy. Jako vstup berou tři registry a 8bitové bezprostřední pole. Každý bit na výstupu je generován vyhledáním tří odpovídajících bitů na vstupech, aby se vybrala jedna z 8 pozic v 8bitovém okamžitém. Protože je možné použít pouze 8 kombinací pomocí tří bitů, umožňuje to provedení všech možných 3 vstupních bitových operací. Toto jsou jediné bitové vektorové instrukce v AVX-512F; Do AVX-512DQ byly přidány verze EVEX dvou zdrojových bitových vektorových pokynů SSE a AVX AND, ANDN, OR a XOR.

Rozdíl ve verzích doubleword a quadword je pouze v použití opmask.

Návod Popis
VPTERNLOGD, VPTERNLOGQ Bitová ternární logika

Pravdivá tabulka :

A0 A1 A2 Double AND (0x80) Double NEBO (0xFE) Bitová směs (0xCA)
0 0 0 0 0 0
0 0 1 0 1 1
0 1 0 0 1 0
0 1 1 0 1 1
1 0 0 0 1 0
1 0 1 0 1 0
1 1 0 0 1 1
1 1 1 1 1 1

Konverze

Byla přidána řada pokynů pro převod nebo přesun; tyto doplňují sadu pokynů k převodu, které jsou k dispozici ze SSE2.

Návod Sada rozšíření Popis

VPMOVQDVPMOVSQDVPMOVUSQD,
VPMOVQW, VPMOVSQW, VPMOVUSQW,
VPMOVQB, VPMOVSQB, VPMOVUSQB,
VPMOVDW, VPMOVSDW, VPMOVUSDW,
VPMOVDB, VPMOVSDB,VPMOVUSDB

F Dolů převést čtyřúhelník nebo dvojslovo na dvojslovo, slovo nebo bajt; nenasycené, nasycené nebo nasycené bez znaménka. Rubová část značky/nula rozšíří pokyny ze SSE4.1 .
VPMOVWB, VPMOVSWB,VPMOVUSWB ČB Dolů převést slovo na bajt; nenasycené, nasycené nebo nasycené bez znaménka.
VCVTPS2UDQ, VCVTPD2UDQ,

VCVTTPS2UDQ, VCVTTPD2UDQ

F Převeďte se zkrácením nebo bez zkrácení, zabalené s jednoduchou nebo dvojitou přesností s plovoucí desetinnou čárkou na zabalená celá čísla bez znaménka.
VCVTSS2USI , VCVTSD2USI ,

VCVTTSS2USI , VCVTTSD2USI

F Převod s nebo bez trunkce, skalární jednoduchá nebo dvojitá přesnost s plovoucí desetinnou čárkou na celé číslo bez znaménka.
VCVTPS2QQ, VCVTPD2QQ,

VCVTPS2UQQ, VCVTPD2UQQ,
VCVTTPS2QQ, VCVTTPD2QQ,
VCVTTPS2UQQ,VCVTTPD2UQQ

DQ Převeďte se zkrácením nebo bez zkrácení, zabalené s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností na zabalená celá čísla podepsaná nebo bez znaménka.
VCVTUDQ2PS , VCVTUDQ2PD F Převeďte zabalená celá čísla bez znaménka s dvojitým slovem na s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností.
VCVTUSI2PS , VCVTUSI2PD F Převod skalárních nepodepsaných celých čísel s dvojitým slovem na plovoucí desetinnou čárku s jednoduchou nebo dvojitou přesností.
VCVTUSI2SD, VCVTUSI2SS F Převod skalárních celých čísel bez znaménka na plovoucí desetinnou čárku s jednoduchou nebo dvojitou přesností.
VCVTUQQ2PS, VCVTUQQ2PD DQ Převeďte zabalená čtyřslovná čísla bez znaménka na sbalenou plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností.
VCVTQQ2PD, VCVTQQ2PS F Převeďte zabalená celá čtyřslovná čísla na zabalená s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností.

Rozklad s plovoucí desetinnou čárkou

Mezi jedinečné nové funkce AVX-512F patří pokyny k rozložení hodnot s plovoucí desetinnou čárkou a zpracování speciálních hodnot s plovoucí desetinnou čárkou . Protože jsou tyto metody zcela nové, existují také ve skalárních verzích.

Návod Popis
VGETEXPPD, VGETEXPPS Převeďte exponenty zabalených hodnot fp na hodnoty fp
VGETEXPSD, VGETEXPSS Převést exponent skalární hodnoty fp na hodnotu fp
VGETMANTPD, VGETMANTPS Extrahujte vektor normalizovaných mantis z vektoru float32/float64
VGETMANTSD, VGETMANTSS Extrahujte float32/float64 normalizované mantisy z float32/float64 scalar
VFIXUPIMMPD, VFIXUPIMMPS Opravte speciální zabalené hodnoty float32/float64
VFIXUPIMMSD, VFIXUPIMMSS Opravte speciální skalární hodnotu float32/float64

Aritmetika s pohyblivou řádovou čárkou

Toto je druhá sada nových metod s plovoucí desetinnou čárkou, která zahrnuje nové škálování a přibližný výpočet reciproční a reciproční odmocniny. Přibližné vzájemné pokyny zaručují, že budou mít relativní chybu maximálně 2 −14 .

Návod Popis
VRCP14PD, VRCP14PS Vypočítejte přibližné převrácené hodnoty zabalených hodnot float32/float64
VRCP14SD, VRCP14SS Vypočítejte přibližné převrácené hodnoty skalární float32/float64 hodnoty
VRNDSCALEPS, VRNDSCALEPD Zaoblené hodnoty float32/float64 zahrnují zahrnutý daný počet zlomkových bitů
VRNDSCALESS, VRNDSCALESD Zaokrouhlená skalární hodnota float32/float64 pro zahrnutí daného počtu zlomkových bitů
VRSQRT14PD, VRSQRT14PS Vypočítejte přibližné převrácené hodnoty odmocnin zabalených hodnot float32/float64
VRSQRT14SD, VRSQRT14SS Vypočítejte přibližnou převrácenou hodnotu odmocniny skalární hodnoty float32/float64
VSCALEFPS, VSCALEFPD Škálovat zabalené hodnoty float32/float64 s hodnotami float32/float64
VSCALEFSS, VSCALEFSD Škálovat skalární hodnotu float32/float64 s hodnotou float32/float64

Přenos

Návod Sada rozšíření Popis
VBROADCASTSS, VBROADCASTSD F, VL Vysílejte jednoduchou/dvojitou hodnotu s plovoucí desetinnou čárkou
VPBROADCASTB, VPBROADCASTW,
VPBROADCASTD,VPBROADCASTQ
F, VL, DQ, BW Vysílejte celočíselnou hodnotu byte/word/doubleword/quadword
VBROADCASTI32X2,
VBROADCASTI64X2, VBROADCASTI32X4,
VBROADCASTI32X8,VBROADCASTI64X4
F, VL, DQ, BW Vysílejte dvě nebo čtyři dvojslovné/čtyřslovné celočíselné hodnoty

Smíšený

Návod Sada rozšíření Popis
VALIGND, VALIGNQ F, VL Zarovnejte dvojité nebo čtyřslovné vektory
VDBPSADBW ČB Dvojitý blok zabalený součet absolutních rozdílů (SAD) na nepodepsaných bajtech
VPABSQ F Balíčky čtyř hodnot absolutní hodnoty
VPMAXSQ, VPMAXUQ F Maximální počet zabalených podepsaných/nepodepsaných čtyř hesel
VPMINSQ, VPMINUQ F Minimum zabaleného podepsaného/nepodepsaného čtyř hesla
VPROLD, VPROLVD,
VPROLQ, VPROLVQ,
VPRORD, VPRORVD,
VPRORQ,VPRORVQ
F Otočení bitů doleva nebo doprava
VPSCATTERDD, VPSCATTERDQ,
VPSCATTERQD,VPSCATTERQQ
F Dvojitě/čtyřslovně balené scatter s podepsanými dvojslovnými a čtyřslovnými indexy
VSCATTERDPS, VSCATTERDPD,
VSCATTERQPS,VSCATTERQPD
F Scatter zabalený float32/float64 s podepsanými dvojslovnými a čtyřslovnými indexy

Nové pokyny podle sad

Detekce konfliktů

Pokyny v detekci konfliktu AVX-512 (AVX-512CD) jsou navrženy tak, aby pomohly efektivně vypočítat bezkonfliktní podmnožiny prvků ve smyčkách, které by normálně nemohly být bezpečně vektorizovány.

Návod název Popis
VPCONFLICTD, VPCONFLICTQ Detekovat konflikty ve vektoru zabalených hodnot dvojitých nebo čtyř hesel. Porovná každý prvek v prvním zdroji se všemi prvky na stejných nebo dřívějších místech ve druhém zdroji a vytvoří bitový vektor výsledků.
VPLZCNTD, VPLZCNTQ Spočítejte počet úvodních nulových bitů pro zabalené hodnoty dvou nebo čtyř hesel. Vektorová LZCNTinstrukce.
VPBROADCASTMB2Q,VPBROADCASTMW2D Vysílací maska ​​do vektorového registru. Buď 8bitová maska ​​pro čtyřslovný vektor, nebo 16bitová maska ​​pro dvojslovný vektor.

Exponenciální a reciproční

Exponenciální a reciproční instrukce AVX-512 obsahují přesnější přibližné reciproční instrukce než pokyny v základu AVX-512; relativní chyba je maximálně 2 −28 . Obsahují také dvě nové exponenciální funkce, které mají relativní chybu nejvýše 2 −23 .

Návod Popis
VEXP2PD, VEXP2PS Vypočítejte přibližné exponenciály 2^x zabalených hodnot s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností
VRCP28PD, VRCP28PS Vypočítejte přibližné převrácené hodnoty zabalených hodnot s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností
VRCP28SD, VRCP28SS Vypočítejte přibližnou převrácenou hodnotu skalární jednoduché nebo dvojité přesnosti s plovoucí desetinnou čárkou
VRSQRT28PD, VRSQRT28PS Vypočítejte přibližné převrácené hodnoty odmocnin zabalených hodnot s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností
VRSQRT28SD, VRSQRT28SS Vypočtěte přibližnou převrácenou hodnotu odmocniny skalární hodnoty s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností

Předběžné načtení

Pokyny k předběžnému načtení AVX-512 obsahují nové operace předběžného načtení pro nové funkce scatter and collect zavedené v AVX2 a AVX-512. T0prefetch znamená předběžné načítání do mezipaměti úrovně 1 a T1znamená předběžné načítání do mezipaměti úrovně 2.

Návod Popis
VGATHERPF0DPS, VGATHERPF0QPS, VGATHERPF0DPD,VGATHERPF0QPD Pomocí podepsaných indexů dword/qword předem načtěte řídká bajtová paměťová místa obsahující data s jednoduchou/dvojitou přesností pomocí opmask k1 a T0 hint.
VGATHERPF1DPS, VGATHERPF1QPS, VGATHERPF1DPD,VGATHERPF1QPD Pomocí podepsaných indexů dword/qword předběžně načtěte řídká bajtová paměťová místa obsahující data s jednoduchou/dvojitou přesností pomocí nápovědy opmask k1 a T1.
VSCATTERPF0DPS, VSCATTERPF0QPS, VSCATTERPF0DPD,VSCATTERPF0QPD Pomocí podepsaných indexů dword/qword předem načtěte řídká bajtová paměťová místa obsahující data s jednoduchou/dvojitou přesností pomocí příkazu writeemask k1 a T0 s úmyslem zapsat.
VSCATTERPF1DPS, VSCATTERPF1QPS, VSCATTERPF1DPD,VSCATTERPF1QPD Pomocí podepsaných indexů dword/qword předběžně načtěte řídká bajtová paměťová místa obsahující data s jednoduchou/dvojitou přesností pomocí příkazu writeemask k1 a T1 s úmyslem zapsat.

4FMAPS a 4VNNIW

Tyto dvě sady instrukcí provádějí více iterací zpracování. Obvykle se nacházejí pouze ve výrobcích Xeon Phi.

Návod Sada rozšíření Popis
V4FMADDPS, V4FMADDSS 4 FMAPS Sbalené/skalární s jednou přesností s plovoucí desetinnou čárkou fúzované násobení (4 iterace)
V4FNMADDPS, V4FNMADDSS 4 FMAPS Balené/skalární s jednou přesností s plovoucí desetinnou čárkou fúzované násobení a negace (4 iterace)
VP4DPWSSD 4VNNIW Tečkový součin podepsaných slov s dvojitou akumulací slov (4 iterace)
VP4DPWSSDS 4VNNIW Tečkový součin podepsaných slov s dvojitou akumulací a saturací slov (4 iterace)

BW, DQ a VBMI

AVX-512DQ přidává nové dvojslovné a čtyřslovné pokyny. AVX-512BW přidává bajtové a slovní verze stejných pokynů a přidává bajtovou a slovní verzi dvojslovných/čtyřslovných pokynů v AVX-512F. Několik instrukce, které se dostanou pouze slovní tvary s AVX-512BW získává bytových forem s příponou AVX-512_VBMI ( VPERMB, VPERMI2B, VPERMT2B, VPMULTISHIFTQB).

Do sady instrukcí masky byly přidány dvě nové instrukce: KADDa KTEST(B a W formy s AVX-512DQ, D a Q s AVX-512BW). Zbytek instrukcí masky, které měly pouze slovní formy, dostal bajtové tvary s AVX-512DQ a dvojslovné/čtyřslovné tvary s AVX-512BW. KUNPCKBWbyl rozšířen o KUNPCKWDa KUNPCKDQo AVX-512BW.

Mezi instrukce přidané AVX-512DQ patří několik SSE, AVX instrukce, které nedostaly verze AVX-512 s AVX-512F, mezi nimi jsou všechny dvě vstupní bitové instrukce a instrukce extrahovat/vkládat celé číslo.

Níže jsou uvedeny pokyny, které jsou zcela nové.

Pokyny s plovoucí desetinnou čárkou

Jsou představeny tři nové operace s plovoucí desetinnou čárkou. Protože nejsou jen nové v AVX-512, mají jak balené/SIMD, tak skalární verze.

Tyto VFPCLASSpokyny testy, pokud je plovoucí bodová hodnota je jedna z hodnot s plovoucí desetinnou čárkou osm speciálních, která z hodnot osmi spustí bit ve výstupním registru masky je řízen okamžitým polem. Tyto VRANGEpokyny plnit minimální nebo maximální operací v závislosti na hodnotě okamžité pole, což může také kontrolovat, jestli se operace provádí absolutní či nikoliv, a odděleně, jak se značka je zpracována. Tyto VREDUCEinstrukce pracovat na jediném zdroji, a odečíst od že celočíselné části hodnoty zdroje plus počet bitů specifikovaných v bezprostřední oblasti jeho frakce.

Návod Sada rozšíření Popis
VFPCLASSPS, VFPCLASSPD DQ Testujte typy zabalených hodnot s plovoucí desetinnou čárkou s jednoduchou a dvojitou přesností.
VFPCLASSSS, VFPCLASSSD DQ Testujte typy skalárních hodnot s plovoucí desetinnou čárkou s jednoduchou a dvojitou přesností.
VRANGEPS, VRANGEPD DQ Výpočet omezení rozsahu pro zabalené hodnoty s plovoucí desetinnou čárkou.
VRANGESS, VRANGESD DQ Výpočet omezení rozsahu pro skalární hodnoty s plovoucí desetinnou čárkou.
VREDUCEPS, VREDUCEPD DQ Proveďte redukční transformaci na hodnotách s plovoucí desetinnou čárkou.
VREDUCESS, VREDUCESD DQ Proveďte redukční transformaci na skalárních hodnotách s plovoucí desetinnou čárkou.

Další pokyny

Návod Sada rozšíření Popis
VPMOVM2D, VPMOVM2Q DQ Převést registr masky na vektorový registr se dvěma nebo čtyřmi slovy.
VPMOVM2B, VPMOVM2W ČB Převést registr masky na vektorový registr bajtů nebo slov.
VPMOVD2M, VPMOVQ2M DQ Převést vektorový registr se dvěma nebo čtyřmi slovy na registr masky.
VPMOVB2M, VPMOVW2M ČB Převést vektorový registr bajtů nebo slov na registr masky.
VPMULLQ DQ Mnohonásobně zabalený čtyřnásobný obchod s nízkým výsledkem. Čtyřslovná verze VPMULLD.

VBMI2

Rozšiřte VPCOMPRESS a VPEXPAND o varianty bajtů a slov. Pokyny k řazení jsou nové.

Návod Popis
VPCOMPRESSB, VPCOMPRESSW Ukládejte řídce zabalené celočíselné hodnoty bajtů/slov do husté paměti/registru
VPEXPANDB, VPEXPANDW Načíst řídce zabalené celočíselné hodnoty bajtů/slov z husté paměti/registru
VPSHLD Zřetězení a posunutí zabalených dat zůstalo logické
VPSHLDV Zřetězení a data s proměnným posunem zůstala logická
VPSHRD Logicky spojte a posuňte zabalená data
VPSHRDV Správně logické zřetězení a variabilně posunutá data

VNNI

VNNI je zkratka pro Vector Neural Network Instructions. AVX512-VNNI dodává EVEX -coded instrukce je popsáno níže. U AVX-512F mohou tyto pokyny fungovat na 512bitových vektorech a AVX-512VL dále přidává podporu pro 128- a 256bitové vektory.

Pozdější AVX-VNNI rozšíření přidá Vex kódování těchto instrukcí, které mohou pracovat jen na 128- nebo 256-bitových vektorů. AVX-VNNI není součástí sady AVX-512, nevyžaduje AVX-512F a lze jej implementovat samostatně.

Návod Popis
VPDPBUSD Znásobte a přidejte nepodepsané a podepsané bajty
VPDPBUSDS Znásobte a přidejte nepodepsané a podepsané bajty se sytostí
VPDPWSSD Znásobte a přidejte celá čísla se znaménkem
VPDPWSSDS Znásobte a přidejte celá čísla slov se sytostí

IFMA

Návod Sada rozšíření Popis
VPMADD52LUQ IFMA Balené násobení nepodepsaných 52bitových celých čísel a přidání nízkých 52bitových produktů do akumulátorů qword
VPMADD52HUQ IFMA Balené násobení nepodepsaných 52bitových celých čísel a přidání vysokých 52bitových produktů do 64bitových akumulátorů

VPOPCNTDQ a BITALG

Návod Sada rozšíření Popis
VPOPCNTD, VPOPCNTQ VPOPCNTDQ Vrátí počet bitů nastavený na 1 ve dvojslově/čtyřúhelníku
VPOPCNTB, VPOPCNTW BITALG Vrátí počet bitů nastavený na 1 v bajtech/slovech
VPSHUFBITQMB BITALG Shuffle bits from quadword elements using byte indexes into mask

VP2INTERSECT

Návod Sada rozšíření Popis
VP2INTERSECTD, VP2INTERSECTQ VP2INTERSECT Vypočítejte průnik mezi dvojslovy/čtyřslovci do

pár registrů masky

GFNI

Nové pokyny Galois s kódováním EVEX :

Návod Popis
VGF2P8AFFINEINVQB Inverzní transformace afinní transformace Galoisova pole
VGF2P8AFFINEQB Afinní transformace Galoisova pole
VGF2P8MULB Pole Galois znásobte bajty

VPCLMULQDQ

VPCLMULQDQ s AVX-512F přidává 512bitovou verzi instrukce PCLMULQDQ kódovanou EVEX. S AVX-512VL přidává 256- a 128bitové verze s kódováním EVEX. Samotný VPCLMULQDQ (tj. Na CPU jiných než AVX512) přidává pouze 256bitovou verzi kódovanou VEX. (Dostupnost 128bitové verze kódované VEX je indikována různými bity CPUID: PCLMULQDQ a AVX.) Širší než 128bitové variace instrukce provádějí stejnou operaci na každé 128bitové části vstupních registrů, ale dělají nerozšířit jej na výběr čtyř hesel z různých 128bitových polí (význam operandu imm8 je stejný: je vybráno buď nízké nebo vysoké kvadword 128bitového pole).

Návod Popis
VPCLMULQDQ Čtyřslovné násobení bez přenášení

VAES

Pokyny AES kódované VEX a EVEX . Širší než 128bitové variace instrukce provádějí stejnou operaci na každé 128bitové části vstupních registrů. Verze VEX lze použít bez podpory AVX-512.

Návod Popis
VAESDEC Proveďte jedno kolo toku dešifrování AES
VAESDECLAST Proveďte poslední kolo dešifrovacího toku AES
VAESENC Proveďte jedno kolo toku šifrování AES
VAESENCLAST Proveďte poslední kolo toku šifrování AES

BF16

Pokyny pro akceleraci AI pracující s čísly Bfloat16 .

Návod Popis
VCVTNE2PS2BF16 Převeďte dvě zabalená jednotlivá přesná čísla na jedno zabalené číslo Bfloat16
VCVTNEPS2BF16 Převeďte jedno zabalené jedno přesné číslo na jedno zabalené číslo Bfloat16
VDPBF16PS Vypočítejte bodový součin dvou párů Bfloat16 a výsledek shrňte do jednoho zabaleného jediného přesného čísla

FP16

Rozšíření dřívější sady instrukcí F16C , přidání komplexní podpory pro čísla s plovoucí desetinnou čárkou binary16 (také známá jako čísla FP16, float16 nebo čísla s plovoucí desetinnou čárkou s poloviční přesností). Nové pokyny implementují většinu operací, které byly dříve k dispozici pro čísla s jednoduchou a dvojitou přesností s plovoucí desetinnou čárkou, a také zavedly nové operace. Podporovány jsou skalární a balené operace.

Na rozdíl od instrukcí pro formát s jednoduchou a dvojitou přesností nejsou operandy polopřesnosti ani podmíněně proplachovány na nulu ( FTZ ), ani podmíněně považovány za nulové ( DAZ ) na základě MXCSRnastavení. Denormální hodnoty jsou hardwarově zpracovávány plnou rychlostí, aby bylo možné využívat plný dynamický rozsah čísel FP16. Pokyny, které vytvářejí čísla FP32 a FP64, stále respektují MXCSR.FTZbit.

Aritmetické pokyny

Návod Popis
VADDPH, VADDSH Přidejte zabalená/skalární čísla FP16.
VSUBPH, VSUBSH Odečtěte zabalená/skalární čísla FP16.
VMULPH, VMULSH Znásobte balená/skalární čísla FP16.
VDIVPH, VDIVSH Rozdělte zabalená/skalární čísla FP16.
VSQRTPH, VSQRTSH Vypočítejte druhou odmocninu zabalených/skalárních čísel FP16.
VFMADD{132, 213, 231}PH, VFMADD{132, 213, 231}SH Mnohonásobně přidejte zabalená/skalární čísla FP16.
VFNMADD{132, 213, 231}PH, VFNMADD{132, 213, 231}SH Negované násobení-přidání zabalených/skalárních čísel FP16.
VFMSUB{132, 213, 231}PH, VFMSUB{132, 213, 231}SH Vícenásobně odečtěte zabalená/skalární čísla FP16.
VFNMSUB{132, 213, 231}PH, VFNMSUB{132, 213, 231}SH Negovaná násobení-odčítání zabalených/skalárních čísel FP16.
VFMADDSUB{132, 213, 231}PH Čísla FP16 s vícenásobným sčítáním (liché vektorové prvky) nebo s násobným odčítáním (sudé vektorové prvky).
VFMSUBADD{132, 213, 231}PH Multiple-subtract (liché vektorové prvky) nebo multiply-add (sudé vektorové prvky) zabalená čísla FP16.
VREDUCEPH, VREDUCESH Proveďte redukční transformaci zabalených/skalárních čísel FP16.
VRNDSCALEPH, VRNDSCALESH Zaokrouhlete/skalární čísla FP16 na daný počet zlomkových bitů.
VSCALEFPH, VSCALEFSH Měřítko zabalených/skalárních čísel FP16 vynásobením mocninou dvou.

Složité aritmetické instrukce

Návod Popis
VFMULCPH, VFMULCSH Vícenásobně zabalená/skalární komplexní čísla FP16.
VFCMULCPH, VFCMULCSH Vícenásobně zabalená/skalární komplexní čísla FP16. Složitá konjugovaná forma operace.
VFMADDCPH, VFMADDCSH Znásobte počet sbalených/skalárních komplexních čísel FP16.
VFCMADDCPH, VFCMADDCSH Znásobte počet sbalených/skalárních komplexních čísel FP16. Složitá konjugovaná forma operace.

Přibližné vzájemné pokyny

Návod Popis
VRCPPH, VRCPSH Vypočítejte přibližné převrácené hodnoty sbalených/skalárních čísel FP16. Maximální relativní chyba aproximace je menší než 2 -11 +2 -14 .
VRSQRTPH, VRSQRTSH Vypočítejte přibližnou reciproční odmocninu z balených/skalárních čísel FP16. Maximální relativní chyba aproximace je menší než 2-14 .

Porovnávací pokyny

Návod Popis
VCMPPH, VCMPSH Porovnejte zabalená/skalární čísla FP16 a výsledek uložte do registru masky.
VCOMISH Porovnejte skalární čísla FP16 a výsledek uložte do registru příznaků. Signalizuje výjimku, pokud je zdrojový operand QNaN nebo SNaN.
VUCOMISH Porovnejte skalární čísla FP16 a výsledek uložte do registru příznaků. Signalizuje výjimku pouze v případě, že zdrojový operand je SNaN.
VMAXPH, VMAXSH Vyberte maximum pro každý svislý pár zdrojově balených/skalárních čísel FP16.
VMINPH, VMINSH Vyberte minimum pro každý svislý pár zdrojově balených/skalárních čísel FP16.
VFPCLASSPH, VFPCLASSSH Otestujte zabalená/skalární čísla FP16 pro speciální kategorie (NaN, nekonečno, záporná nula atd.) A výsledek uložte do registru masky.

Pokyny pro převod

Návod Popis
VCVTW2PH Převeďte zabalená podepsaná 16bitová celá čísla na čísla FP16.
VCVTUW2PH Převeďte zabalené 16bitové celá čísla bez znaménka na čísla FP16.
VCVTDQ2PH Převeďte zabalená podepsaná 32bitová celá čísla na čísla FP16.
VCVTUDQ2PH Převod zabalených nepodepsaných 32bitových celých čísel na čísla FP16.
VCVTQQ2PH Převést zabalená 64bitová celá čísla na čísla FP16.
VCVTUQQ2PH Převod zabalených 64bitových celých čísel bez znaménka na čísla FP16.
VCVTPS2PHX Převeďte zabalená čísla FP32 na čísla FP16. Na rozdíl VCVTPS2PHod F16C , VCVTPS2PHXmá jiné kódování, který také podporuje vysílání.
VCVTPD2PH Převeďte zabalená čísla FP64 na čísla FP16.
VCVTSI2SH Převeďte skalární podepsané 32bitové nebo 64bitové celé číslo na číslo FP16.
VCVTUSI2SH Převeďte skalární nepodepsané 32bitové nebo 64bitové celé číslo na číslo FP16.
VCVTSS2SH Převeďte skalární číslo FP32 na číslo FP16.
VCVTSD2SH Převeďte skalární číslo FP64 na číslo FP16.
VCVTPH2W, VCVTTPH2W Převeďte zabalená čísla FP16 na podepsaná 16bitová celá čísla. VCVTPH2Wzaokrouhlí hodnotu podle MXCSRregistru. VCVTTPH2Wzaokrouhluje směrem k nule.
VCVTPH2UW, VCVTTPH2UW Převeďte zabalená čísla FP16 na 16bitová celá čísla bez znaménka. VCVTPH2UWzaokrouhlí hodnotu podle MXCSRregistru. VCVTTPH2UWzaokrouhluje směrem k nule.
VCVTPH2DQ, VCVTTPH2DQ Převeďte zabalená čísla FP16 na podepsaná 32bitová celá čísla. VCVTPH2DQzaokrouhlí hodnotu podle MXCSRregistru. VCVTTPH2DQzaokrouhluje směrem k nule.
VCVTPH2UDQ, VCVTTPH2UDQ Převeďte zabalená čísla FP16 na 32bitová celá čísla bez znaménka. VCVTPH2UDQzaokrouhlí hodnotu podle MXCSRregistru. VCVTTPH2UDQzaokrouhluje směrem k nule.
VCVTPH2QQ, VCVTTPH2QQ Převeďte zabalená čísla FP16 na podepsaná 64bitová celá čísla. VCVTPH2QQzaokrouhlí hodnotu podle MXCSRregistru. VCVTTPH2QQzaokrouhluje směrem k nule.
VCVTPH2UQQ, VCVTTPH2UQQ Převeďte zabalená čísla FP16 na 64bitová celá čísla bez znaménka. VCVTPH2UQQzaokrouhlí hodnotu podle MXCSRregistru. VCVTTPH2UQQzaokrouhluje směrem k nule.
VCVTPH2PSX Převeďte zabalená čísla FP16 na čísla FP32. Na rozdíl VCVTPH2PSod F16C , VCVTPH2PSXmá jiné kódování, který také podporuje vysílání.
VCVTPH2PD Převeďte zabalená čísla FP16 na čísla FP64.
VCVTSH2SI, VCVTTSH2SI Převeďte skalární číslo FP16 na podepsané 32bitové nebo 64bitové celé číslo. VCVTSH2SIzaokrouhlí hodnotu podle MXCSRregistru. VCVTTSH2SIzaokrouhluje směrem k nule.
VCVTSH2USI, VCVTTSH2USI Převeďte skalární číslo FP16 na 32bitové nebo 64bitové celé číslo bez znaménka. VCVTSH2USIzaokrouhlí hodnotu podle MXCSRregistru. VCVTTSH2USIzaokrouhluje směrem k nule.
VCVTSH2SS Převeďte skalární číslo FP16 na číslo FP32.
VCVTSH2SD Převeďte skalární číslo FP16 na číslo FP64.

Pokyny k rozkladu

Návod Popis
VGETEXPPH, VGETEXPSH Extrahujte komponenty exponentu zabalených/skalárních čísel FP16 jako čísla FP16.
VGETMANTPH, VGETMANTSH Extrahujte součásti mantisy zabalených/skalárních čísel FP16 jako čísla FP16.

Přesunout pokyny

Návod Popis
VMOVSH Přesuňte skalární číslo FP16 do/z paměti nebo mezi vektorové registry.
VMOVW Přesuňte skalární číslo FP16 do/z paměti nebo obecného registru.

Starší pokyny upgradované verzemi kódovanými EVEX

Starší kódování Skupina Instrukce AVX-512
rozšíření
SSE
SSE2
MMX
AVX
SSE3
SSE4.1
AVX2
FMA
Ano Ano Ne VADD VADDPD, VADDPS, VADDSD,VADDSS F, VL
VAND VANDPD, VANDPS, VANDNPD,VANDNPS VL, DQ
VCMP VCMPPD, VCMPPS, VCMPSD,VCMPSS F
VCOM VCOMISD, VCOMISS F
VDIV VDIVPD, VDIVPS, VDIVSD,VDIVSS F, VL
VCVT VCVTDQ2PD, VCVTDQ2PS, VCVTPD2DQ, VCVTPD2PS,

VCVTPH2PS, VCVTPS2PH, VCVTPS2DQ, VCVTPS2PD,
VCVTSD2SI, VCVTSD2SS, VCVTSI2SD, VCVTSI2SS, VCVTSS2SD, VCVTSS2SI,
VCVTTPD2DQ, VCVTTPS2DQ, VCVTTSD2SI,VCVTTSS2SI

F, VL
VMAX VMAXPD, VMAXPS, VMAXSD,VMAXSS F, VL
VMIN VMINPD, VMINPS, VMINSD,VMINSS F
VMOV VMOVAPD, VMOVAPS, VMOVD, VMOVQ,

VMOVDDUP,
VMOVHLPS, VMOVHPD, VMOVHPS, VMOVLHPS, VMOVLPD, VMOVLPS,
VMOVNTDQA, VMOVNTDQ, VMOVNTPD, VMOVNTPS,
VMOVSD, VMOVSHDUP, VMOVSLDUP, VMOVSS, VMOVUPD, VMOVUPS VMOVDQA32, VMOVDQA64,
VMOVDQU8, VMOVDQU16, VMOVDQU32,VMOVDQU64

F, VL, BW
VMUL VMULPD, VMULPS, VMULSD,VMULSS F, VL
VOR VORPD, VORPS VL, DQ
VSQRTP VSQRTPD, VSQRTPS, VSQRTSD,VSQRTSS F, VL
VSUB VSUBPD, VSUBPS, VSUBSD,VSUBSS F, VL
VUCOMI VUCOMISD, VUCOMISS F
VUNPCK VUNPCKHPD, VUNPCKHPS, VUNPCKLPD,VUNPCKLPS F, VL
VXOR VXORPD, VXORPS VL, DQ
Ne Ano Ne VEXTRACTPS VEXTRACTPS F
VINSERTPS VINSERTPS F
VPALIGNR VPALIGNR VL, ČB
VPEXTR VPEXTRB, VPEXTRW, VPEXTRD,VPEXTRQ ČB, DQ
VPINSR VPINSRB, VPINSRW, VPINSRD,VPINSRQ ČB, DQ
Ano Ano Ano VPACK VPACKSSWB, VPACKSSDW, VPACKUSDW,VPACKUSWB VL, ČB
VPADD VPADDB, VPADDW, VPADDD, VPADDQ,

VPADDSB, VPADDSW, VPADDUSB,VPADDUSW

F, VL, BW
VPAND VPANDD, VPANDQ, VPANDND,VPANDNQ F, VL
VPAVG VPAVGB, VPAVGW VL, ČB
VPCMPEQ VPCMPEQB, VPCMPEQW, VPCMPEQD,VPCMPEQQ F, VL, BW
VPCMPGT VPCMPGTB, VPCMPGTW, VPCMPGTD,VPCMPGTQ F, VL, BW
VPMAX VPMAXSB, VPMAXSW, VPMAXSD, VPMAXSQ, VPMAXUB, VPMAXUW, VPMAXUD,VPMAXUQ F, VL, BW
VPMIN VPMINSB, VPMINSW, VPMINSD, VPMINSQ, VPMINUB, VPMINUW, VPMINUD,VPMINUQ F, VL, BW
VPMOV VPMOVSXBW, VPMOVSXBD, VPMOVSXBQ, VPMOVSXWD, VPMOVSXWQ, VPMOVSXDQ,

VPMOVZXBW, VPMOVZXBD, VPMOVZXBQ, VPMOVZXWD, VPMOVZXWQ,VPMOVZXDQ

F, VL, BW
VPMUL VPMULDQ, VPMULUDQ, VPMULHRSW, VPMULHUW, VPMULHW, VPMULLD, VPMULLQ,VPMULLW F, VL, BW
VPOR VPORD, VPORQ F, VL
VPSUB VPSUBB, VPSUBW, VPSUBD, VPSUBQ, VPSUBSB, VPSUBSW, VPSUBUSB,VPSUBUSW F, VL, BW
VPUNPCK VPUNPCKHBW, VPUNPCKHWD, VPUNPCKHDQ, VPUNPCKHQDQ,

VPUNPCKLBW, VPUNPCKLWD, VPUNPCKLDQ,VPUNPCKLQDQ

F, VL, BW
VPXOR VPXORD, VPXORQ F, VL
VPSADBW VPSADBW VL, ČB
VPSHUF VPSHUFB, VPSHUFHW, VPSHUFLW, VPSHUFD,

VPSLLDQ, VPSLLW, VPSLLD, VPSLLQ,
VPSRAW, VPSRAD, VPSRAQ,
VPSRLDQ, VPSRLW, VPSRLD, VPSRLQ,
VPSLLVW, VPSLLVD, VPSLLVQ,
VPSRLVW, VPSRLVD, VPSRLVQ,
VPSHUFPD,VPSHUFPS

F, VL, BW
Ne Ano Ano VEXTRAKT VEXTRACTF32X4, VEXTRACTF64X2, VEXTRACTF32X8, VEXTRACTF64X4,

VEXTRACTI32X4, VEXTRACTI64X2, VEXTRACTI32X8,VEXTRACTI64X4

F, VL, DQ
VINSERT VINSERTF32x4, VINSERTF64X2, VINSERTF32X8, VINSERTF64x4,

VINSERTI32X4, VINSERTI64X2, VINSERTI32X8,VINSERTI64X4

F, VL, DQ
VPABS VPABSB, VPABSW, VPABSD,VPABSQ F, VL, BW
VPERM VPERMD, VPERMILPD, VPERMILPS, VPERMPD, VPERMPS,VPERMQ F, VL
VPMADD VPMADDUBSW VPMADDWD VL, ČB
Ne Ne Ano VFMADD VFMADD132PD, VFMADD213PD, VFMADD231PD,

VFMADD132PS, VFMADD213PS, VFMADD231PS,
VFMADD132SD, VFMADD213SD, VFMADD231SD,
VFMADD132SS, VFMADD213SS,VFMADD231SS

F, VL
VFMADDSUB VFMADDSUB132PD, VFMADDSUB213PD, VFMADDSUB231PD,

VFMADDSUB132PS, VFMADDSUB213PS,VFMADDSUB231PS

F, VL
VFMSUBADD VFMSUBADD132PD, VFMSUBADD213PD, VFMSUBADD231PD,

VFMSUBADD132PS, VFMSUBADD213PS,VFMSUBADD231PS

F, VL
VFMSUB VFMSUB132PD, VFMSUB213PD, VFMSUB231PD,

VFMSUB132PS, VFMSUB213PS, VFMSUB231PS,
VFMSUB132SD, VFMSUB213SD, VFMSUB231SD,
VFMSUB132SS, VFMSUB213SS,VFMSUB231SS

F, VL
VFNMADD VFNMADD132PD, VFNMADD213PD, VFNMADD231PD,

VFNMADD132PS, VFNMADD213PS, VFNMADD231PS,
VFNMADD132SD, VFNMADD213SD, VFNMADD231SD,
VFNMADD132SS, VFNMADD213SS,VFNMADD231SS

F, VL
VFNMSUB VFNMSUB132PD, VFNMSUB213PD, VFNMSUB231PD,

VFNMSUB132PS, VFNMSUB213PS, VFNMSUB231PS,
VFNMSUB132SD, VFNMSUB213SD, VFNMSUB231SD,
VFNMSUB132SS, VFNMSUB213SS,VFNMSUB231SS

F, VL
VGATHER VGATHERDPS, VGATHERDPD, VGATHERQPS,VGATHERQPD F, VL
VPGATHER VPGATHERDD, VPGATHERDQ, VPGATHERQD,VPGATHERQQ F, VL
VPSRAV VPSRAVW, VPSRAVD,VPSRAVQ F, VL, BW

CPU s AVX-512

Podmnožina F CD ER PF 4 FMAPS 4VNNIW VPOPCNTDQ VL DQ ČB IFMA VBMI VNNI BF16 VBMI2 BITALG VPCLMULQDQ GFNI VAES VP2INTERSECT
Knights Landing (Xeon Phi x200, 2016) Ano Ano Ne
Knights Mill (Xeon Phi x205, 2017) Ano Ne
Skylake-SP , Skylake-X (2017) Ne Ne Ano Ne
Cannon Lake (2018) Ano Ne
Cascade Lake (2019) Ne Ano Ne
Cooper Lake (2020) Ano Ne
Ice Lake (2019) Ano Ano Ne Ano Ne
Tygří jezero (2020) Ano
Rocket Lake (2021) Ne

QEMU podporuje emulaci AVX-512 ve svém TCG.

Alder Lake a podobná hybridní jádra stolního počítače mají křemíkové jednotky pro AVX-512, ale tato funkce je deaktivována.

Výkon

Poradce Intel „Vectorization“ (počínaje verzí 2016 Update 3) podporuje nativní analýzu výkonu AVX-512 a kvalitu vektorového kódu pro procesor 2. generace Intel Xeon Phi (s kódovým označením Knights Landing ). Spolu s tradičním profilem hotspotů, doporučeními Advisor a „bezproblémovou“ integrací diagnostiky vektorizace Intel Compiler poskytuje analýza Advisor Survey také metriky AVX-512 ISA a nové „vlastnosti“ specifické pro AVX-512, např. Scatter, Compress/Expand, využití masky.

Na některých procesorech způsobují pokyny AVX-512 omezení frekvence ještě větší než u jeho předchůdců, což způsobuje pokutu za smíšené úlohy. Dodatečné přetaktování je spuštěno 512bitovou šířkou vektorů a závisí na povaze prováděných instrukcí a použití 128 nebo 256bitové části AVX-512 (AVX-512VL) jej nespouští. Výsledkem je, že gcc a clang výchozí upřednostňují použití 256bitových vektorů.

Viz také

Reference