日常更新:MSVC后端更新一览

日常更新:MSVC后端更新一览

作者:BlogUpdater |  时间:2020-02-14 |  浏览:126 |  评论已关闭 条评论

蝎子

Visual Studio 2019 v16.3和v16.4带来了许多改进,包括代码生成质量提升,编译速度和安全性等。如果你目前还没有下载,可以先看看这里的更新一览。

下图是VS2019 v16.4中一个全新的编译分析工具[C++ Build Insights]的预览。

Visual Studio 2019 v16.3
=> 通过/arch:AVX512开关支持AVX-512 auto vectorizer。面向AVX-512指令集实现了逻辑运算,算法,内存和vector操作的缩减。
=> 通过移除变量和内存的值来实现通用内联器的优化。此优化可以通过/Ob3开关启用。
=> 通过优化小型函数内联机制实现了更快的编译速度和内联操作的智能化。
=> 通过间接函数调用部分实现了内联。
=> 将Dataflow-driven alias package添加到了SSA优化器中,实现了更加强大的基于SSA的优化。
=> 通过对通用sub-expression (CSE)的优化来减少更多的内存负载。
=> 对于字符串字面值,实现了对spaceship操作符的编译期计算。
=> 自动将fma, fmal, fmaf, and std::fma指令转换为intrinsic FMA实现(仅当这些指令被支持的情况下)。
=> 当返回寄存器大小的结构体时,代码生成引擎生成了更加优化的代码,通过寄存器的位操作来实现返回操作,而不是提供内存操作。
=> __iso_volatile_loadxx和__iso_volatile_storexx这两个函数的优化,实现了对齐后的整数进行直接原子性读写。
=> 大部分AVX-512函数实现为Intrinsic版本,而不是之前的宏实现。
=> 通过/arch:AVX2开关,优化了mm_shuffle和_mm_setps这两个intrinsics的指令选择。
=> 对于AMD64平台,默认启用了FrameHandler4 (FH4)。

Visual Studio 2019 v16.4
=> 新增对AddressSanitizer (ASAN)的支持,实现运行时对内存安全漏洞的检测。
=> 引入一项新的工具集C++ Build Insights,用户可以借助这个工具更好的理解和优化速度。
=> 根据当前可用的CPU核心,通过使用多达24个线程(而不是4个线程)来显著的优化了代码生成时间。
=> 通过更加优化的编译器中的算法和数据结构,更进一步的优化了代码生成时间。
=> 引入一项新的编译器开关/d2ReducedOptimizeHugeFunctions优化了代码生成时间,具体为移除了包含多达20000条指令的优化操作。这个threshold值可以通过/d2ReducedOptimizeThreshold:#这个开关来自定义。
=> 优化了AVX-512平台的auto vectorizer,支持更多的指令格式,包括:variable width compares, int32 multiplication, int-to-fp floating point conversion。
=> 优化了控制流的分析过程,实现了对整数的正负的估算的更有效预判。
=> 在v16.3版本中默认启用了优化后的内联器,不需要使用/Ob3开关。
=> 增加了对ENQCMD和ENQCMDS指令的Intrinsic支持,这些指令用来对寄存器的写入指令进行排队操作。
=> 增加了对RDPKRU和WRPKRU指令的Intrinsic支持,这些指令用来在某些Intel处理器上读写PKRU寄存器。
=> 增加了对VP2INTERSECTD和VP2INTERSECTQ指令的Intrinsic支持,这些指令用来生成一对掩码,这些掩码用来指示一个vector中的那些元素匹配另一个vector。

总结
上面的每个字我基本都懂,但是一合起来,我就有点不是很懂了。有请课代表来翻译翻译。

标签:

评论已关闭。