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.

In Pocket speichern vorlesen Druckansicht

(Bild: Semisatch/Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Frank-Michael Schlede
Inhaltsverzeichnis

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.

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.

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.

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.

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)