Visual Studio 2022: Mehr Möglichkeiten für das C++-Backend
Microsoft hat das C++-Backend von Visual Studio 2022 in Version 17.2 verbessert. Neben neuen Features und Flags bietet es auch weitere Optimierungsoptionen.
- Frank-Michael Schlede
Die Entwickler von Microsoft in Redmond bauen die C++-Unterstützung in der aktuellen Version 17.2 von Visual Studio 2022 weiter aus. Im C++-Team-Blog kündigten sie nun neue Features sowie neue und verbesserte Optimierungsmöglichkeiten im MVSC-Backend der Software an.
OpenMP und intrinsische Intel-Funktionen
Visual Studio 2022 wartet mit noch besserer C++-Unterstützung auf. In einem Blog-Eintrag listet das C++-Team bei Microsoft eine Reihe von Verbesserungen für das MSVC-Backend in der Version 17.2 auf. Dazu gehört unter anderem die erweiterte Unterstützung der API OpenMP (Open Multi-Processing). So wird nun die Task-Direktive, die bereits in OpenMP 3.1 definiert wurde, einschließlich aller Klauseln für -openmp:llvm
unterstützt. Allerdings ist der Compiler noch nicht dazu in der Lage, die in späteren Versionen von OpenMP hinzugefügten `task`
-Klauseln zu unterstützen. Weitere Informationen dazu finden Entwickler und Entwicklerinnen im Team-Blog unter OpenMP Task-Support for C++ in Visual Studio.
Lesen Sie auch
From Task 'til Dawn – Tasks versus Threads
Weiterhin bietet der Compiler jetzt die Implementierung von intrinsischen Intel-Funktionen für die AVX512-FP16-Befehlssatzerweiterung. Zum Casting zwischen Fließkomma- und Integer-Werten ohne Konvertierung auf x64 und x86 hat das C++-Team die intrinsischen Intel-Funktionen _castf32_u32
, _castf64_u64
, _castu32_f32
und _castu64_f64
implementiert. Weitere Informationen über diese Funktionen können interessierte Entwickler im Intel Intrinsics Guide finden.
Neue Flags für ARM64...
Mit diesem Update haben die Microsoft-Entwickler eine ganze Reihe neuer ARM64-Compiler-Flags eingeführt. Dazu gehören unter anderem /arch:armv8.0
und /arch:armv8.1
. Sie ermöglichen es dem Compiler, Anweisungen zu generieren, die von der angegebenen Architekturerweiterung eingeführt und benötigt werden. Dabei stellt /arch:armv8.0
das derzeitige Standardverhalten dar. Verwenden Programmierer dieses Flag, so erzielen sie den gleichen Effekt, als wenn sie es nicht angeben würden. In Visual Studio 17.2 erlaubt /arch:armv8.1
es den _Interlocked*
intrinsischen Funktionen, die entsprechende atomare Anweisung zu verwenden, die mit der ARMv8.1-Erweiterung FEAT_LSE eingeführt wurde.
… und für die Optimierung
Microsoft hat die C-Standardbibliotheksfunktionen log2 und log2f als interne Funktionen des Compilers auf x64 und ARM64 implementiert. Dadurch ist der Compiler dazu in der Lage, Optimierungen mit log2
und log2f
unter /fp:fast
x64 und ARM64 durchzuführen. Weiterhin wurde die Schleifenerkennung des Auto-Vektorisierers verbessert. Er erkennt nun das Durchschnittsmuster und mehr Fälle von dekrementierenden Induktionsvariablen.
Compiler-Flags, die nicht mit dem /arm64EC
-Flag kompatibel sind, werden zurückgewiesen. Dazu gehören alle CLR-Flags, /Gy-
und /Gw-
. Das Flag /MACHINE:ARM64EC
wurde zu link.exe
hinzugefügt und aus lib.exe
entfernt. Das C++-Team weist darauf hin, dass Entwickler und Entwicklerinnen für lib.exe
dann /MACHINE:ARM64X
angeben sollten. Der Beitrag auf dem C++ Team Blog zeigt noch weitere Details zu den MSVC-Backend-Updates in Visual Studio 2022.
(fms)