MSVC Backend Updates in Visual Studio 2022 version 17.3
In Visual Studio 2022 version 17.3 we have continued to improve the C++ backend with new features, new and improved optimizations, build throughput improvements, and better security. Here is a list of improvements for you to review.
- Native Arm64 Visual Studio is now available for 17.3! See the Visual Studio blog post for details on how to install Arm64 Visual Studio, and what workloads are available for 17.3.
- The C++ ARM64EC target is available for production development. To learn more about the ARM64EC ABI, see Overview of ARM64EC ABI conventions, and Understanding Arm64EC ABI and assembly code. To learn more about using ARM64EC in Visual Studio, see Using Arm64EC to build apps for Windows 11 on Arm devices.
- The ARM64EC toolchain now emits an error when vectorcall semantics,
__m512types are used when compiling for ARM64EC as these are unsupported scenarios. Full vectorcall support is planned for a future release.
- More progress has been made towards implementing OpenMP Standard 3.1 under the experimental
-openmp:llvmswitch, building on the previous release:
- Implemented atomics-related features from OpenMP 3.1.
- Enabled use of pointers as induction variables in OpenMP loops.
- [Credit to our friends at AMD] Improved Superword-Level Parallelism (SLP) vectorizer, handling more types and vector widths. More details to come in a future blog post. Add the
/Qvec-report:1switch and look for
info C5003: block vectorizedfor more SLP vectorization.
- Support for recognizing and building ARM64 NEON vector fused multiply-add (FMA) instructions after loop vectorization. Floating-point vector FMA instructions are only built under
/fp:preciseis also specified. More details about
/fpcan be found in The /fp:contract flag and changes to FP modes in VS 2022, and the MSVC compiler options reference for /fp.
- More peephole optimizations. Here are some cases that were improved:
Do you want to experience the new improvements of the C++ backend? Please download the latest Visual Studio 2022 and give it a try! Any feedback is welcome. We can be reached via the comments below, Developer Community, and Twitter (@VisualC)