MSVC Backend Updates in Visual Studio 2019 Version 16.5
In Visual Studio 2019 version 16.5 we have continued to improve the C++ backend with new features, new and improved optimizations, build throughput improvements, and better security. Here is a brief list of improvements for you to review.
- Compiler switch mitigation for the Intel JCC erratum.
- AMD Zen3 architecture instruction support.
- AVX2 floating point improvements: vector instructions optimized to a single constant with known initial arguments.
- ARM64 NEON intrinsics improvements:
- Implementation of all remaining ARM64 NEON intrinsics.
- Performance improvement of some existing NEON intrinsics.
- Error reporting improvement for NEON intrinsics that take compile time constant arguments.
- Speculative memcpy optimization to speed up memcpy operations by 2x-18x when the source and destination don’t overlap, in addition to speculative memset optimization.
- More Spectre Mitigations in MSVC: /Qspectre-load and /Qspectre-load-cf flags added to mitigate against speculative execution side-channel attacks based on loads.
- Added a powerful new optimization known as jump-threading, which simplifies control-flow. It eliminates unneeded intermediate jumps and branches on program paths that can be evaluated at compile time, based on the values of variables and other compile-time information.
Do you want to experience the new improvements of the C++ backend? Please download the latest Visual Studio 2019 and give it a try! Any feedback is welcome. We can be reached via the comments below, Developer Community, email (firstname.lastname@example.org), and Twitter (@VisualC).