/arch (x64)

Megadja a kód létrehozásának architektúráját az x64-en. Ezek a kapcsolók a fordító x64 célzási verziójára vonatkoznak. További információ /arch a más célarchitektúrákról: /arch (x86),(/archARM64) és /arch (ARM).

Szemantika

/arch:[SSE2AVX10.2|AVX10.1|AVX512|||AVX2|SSE4.2AVX]

Érvek

/arch:SSE2
Engedélyezi az Intel Streaming SIMD bővítményeket 2. Az alapértelmezett utasításkészlet az SSE2, ha nincs /arch megadva beállítás.

/arch:SSE4.2
Engedélyezi az Intel Streaming SIMD Extensions 4.2-t.

/arch:AVX
Engedélyezi az Intel Advanced Vector kiterjesztéseket.

/arch:AVX2
Engedélyezi az Intel Advanced Vector Extensions 2-t.

/arch:AVX512
Engedélyezi az Intel Advanced Vector Extensions 512-t.

/arch:AVX10.1
Engedélyezi az Intel Advanced Vector Extensions 10 1-es verzióját.

/arch:AVX10.2
Engedélyezi az Intel Advanced Vector Extensions 10 2-es verzióját.

Megjegyzések

Ez az /arch opció lehetővé teszi bizonyos utasításkészlet-kiterjesztések használatát, különösen vektorszámításhoz, amelyek az Intel és az AMD processzoraiban érhetők el. Általánosságban elmondható, hogy a közelmúltban bevezetett processzorok támogathatják a régebbi processzorok által támogatottakon túlmutató kiterjesztéseket, bár az utasításkészlet-kiterjesztés használata előtt érdemes áttekinteni egy adott processzor dokumentációját, vagy tesztelni az utasításkészlet-bővítmények támogatását __cpuid . A belső segítségével ellenőrizheti a gyakrabban használt CPU-funkciókat is __check_isa_support .

/arch csak a natív függvények kódgenerálására van hatással. Fordításkor /clr/arch nincs hatása a felügyelt függvények kódgenerálására.

A processzorbővítmények a következő jellemzőkkel rendelkeznek:

  • Az alapértelmezett mód SSE2 utasításokat használ a skaláris lebegőpontos és vektoros számításokhoz. Ezek az utasítások lehetővé teszik az egyszeres pontosságú, dupla pontosságú és 1, 2, 4 vagy 8 bájtos egész értékek, valamint az egyszeres pontosságú és dupla pontosságú skaláris lebegőpontos értékek 128 bites vektoraival történő számítást.

  • SSE4.2 az SSE-utasítások teljes készletét használja a lebegőpontos skaláris, vektoros és egész vektoros számításokhoz.

  • AVX Alternatív utasításkódolást vezetett be vektoros és lebegőpontos skaláris utasításokhoz. Lehetővé teszi a 128 bites vagy 256 bites vektorokat, és nullázza az összes vektoreredményt a teljes vektorméretre. (A régi kompatibilitás érdekében az SSE-stílusú vektoros utasítások megőrzik a 127-es biten túli összes bitet.) A legtöbb lebegőpontos művelet 256 bitre van kiterjesztve.

  • AVX2 kiterjeszti a legtöbb egész műveletet 256 bites vektorokra, és lehetővé teszi a Fused Multiply-Add (FMA) utasítások használatát.

  • AVX-512 Bevezetett egy másik utasításkódolási formát, amely lehetővé teszi az 512 bites vektorokat, a maszkolást, a beágyazott kerekítést/sugárzást és az új utasításokat. Az alapértelmezett vektorhossz AVX-512 512 bit, és a zászló /vlen segítségével 256 bitre módosítható.

  • AVX10.1 további utasításokat ad hozzá a AVX-512. Az alapértelmezett vektorhossz AVX10.1 256 bit, és a zászló /vlen segítségével 512 bitre módosítható. Ezt a lehetőséget a Visual Studio 2022 17.13-ban vezettük be.

  • AVX10.2 kibontja a fájlban bevezetett utasításkészletet AVX10.1. Az alapértelmezett vektorhossz AVX10.2 256 bit, és a jelölő használatával /vlen 512 bitre növelhető. AVX10.2 olyan utasításokat ad hozzá, amelyek az örökölt utasítások és a médiagyorsítási utasítások továbbfejlesztései. Az új utasításokról további információt az Intel Advanced Vector Extensions 10.2 architektúraspecifikációjának 3.1.4-es szakaszában talál. A dokumentumban található AI-hez kapcsolódó utasítások az MSVC belső rendszerén keresztül támogatottak ahelyett, hogy közvetlenül kibocsátanák őket, mert az MSVC nem támogatja az adattípusaikat. Ezt a fordítóbeállítást a Visual Studio 2026-ban vezettük be.

Az egyes /arch beállítások lehetővé tehetik az adott beállításhoz társított egyéb nem meg nem felmérő utasítások használatát is. Példa erre bizonyos BMI-utasítások használata, ha /arch:AVX2 meg van adva.

Az __AVX__ előfeldolgozás szimbóluma akkor van definiálva, ha a /arch:AVX, /arch:AVX2, , /arch:AVX512/arch:AVX10.1, vagy /arch:AVX10.2 fordító beállítás meg van adva. Az __AVX2__ előfeldolgozó szimbóluma akkor van definiálva, ha a , /arch:AVX2, /arch:AVX512, vagy a /arch:AVX10.1/arch:AVX10.2 fordító beállítás meg van adva. A __AVX512F__, __AVX512CD__, __AVX512BW__, __AVX512DQ__, és __AVX512VL__ az előfeldolgozó szimbólumok akkor lesznek definiálva, ha a /arch:AVX512, /arch:AVX10.1vagy /arch:AVX10.2 fordító beállítás meg van adva. Az __AVX10_VER__ előfeldolgozás szimbóluma akkor van definiálva, ha a fordító vagy /arch:AVX10.2 a /arch:AVX10.1 fordító beállítás meg van adva. Ez jelzi a fordító által megcélzott AVX10 verziót. További információ: Előre definiált makrók. A beállítást /arch:AVX2 a Visual Studio 2013 Update 2 12.0.34567.1-es verziójában vezették be. A Visual Studio 2017-ben korlátozott támogatás /arch:AVX512 , a Visual Studio 2019-ben pedig kibővült. A támogatás /arch:AVX10.1 a Visual Studio 2022-ben lett hozzáadva. /arch:AVX10.2 A Visual Studio 2026 támogatásával bővült.

A fordító beállításának beállítása a /arch Visual Studióban

  1. Nyissa meg a projekt Tulajdonságlapok párbeszédpanelét. További információ: C++ fordító beállítása és tulajdonságok létrehozása a Visual Studio.

  2. Válassza a Konfiguráció tulajdonságai>C/C++>Kódgenerálás tulajdonságlapját.

  3. Módosítsa a Bővített utasításkészlet engedélyezése tulajdonságot.

A fordítóprogram programozott beállítása

Lásd még

/arch (Minimális CPU-architektúra)
MSVC-fordító beállításai
MSVC fordító parancssori szintaxisa