6,590
社区成员
发帖
与我相关
我的任务
分享自Visual Studio 2022版本 17.3 以来,我们不断通过新功能以及新的和改进的优化来改进 C++ 后端。以下是我们的一些令人兴奋的改进。
VINSERTPS替换来改进代码生成VBLENDPS/fsanitize=address,而不是默默地禁用 ASAN 检查。CSET和指令组合ADD成一条指令CINC(来自我们 ARM 的朋友)UMWAIT改进和 的代码生成TPAUSE,保留隐式输入寄存器。PSHUFLW当仅使用结果的低 64 位时,为 _mm_set1_epi16生成单个指令。LDDQU与 结合时不再生成冗余加载和存储VBROADCAST128。PMADDWD而不是PMULLD尽可能。#pragma omp atomic update并且#pragma omp atomic capture不再需要调用运行时,从而提高了性能。schedule(static)现在适用于有序循环。LOCK_SUB。MOVSX/MOVZX指令。XOR-EXTRACT。BIT、BIF和指令的目标寄存器着色。BSL_CountTrailingZeros和_CountTrailingZeros64 内在函数以计算整数中的尾随零/openmp:llvm标志现在支持(完整详细信息collapse。)#pragma omp loop/d2AsanInstrumentationPerFunctionThreshold:#标志允许关闭会添加超过一定数量的额外 ASAN 调用的函数上的 ASAN 检测。/OTHERARCHEXPORTS选项dumpbin /EXPORTS将转储 arm64x dll 的 x64 导出。a[i] = ((a[i]>>15)&0x10001)*0xffff向量比较。(a + constant)[i]到循环之外。TDPFP16PS(AMX-FP16) 和PREFETCHIT0/ PREFETCHIT1。MOVD/MOVQ指令。VBLEND指令而不是速度较慢的VINSERTF128指令。VBLENDPSPCLMULQDQ指令提升到可能的位置。VPCLMULQDQVEXTRACTI128将提取向量下半部分的指令替换为VMOVDQU指令,感谢 AMD 的朋友们。STMXCSR。MOV和aCSEL指令组合成一条指令CSINV。FSTP/FLD指令。BIC指令代替MVNand AND。BIC_SHIFT说明。VROUNDXX的说明。-openmp:llvm开关下对 OpenMP 标准 3.1 的支持扩展为包括子句上的min和运算符。maxreduction想体验C++后端的新改进吗?请下载最新的 Visual Studio 2022并尝试一下!欢迎任何反馈。您可以通过下面的评论、开发者社区、Twitter ( @VisualC ) 或电子邮件Visualcpp@microsoft.com与我们联系。
请继续关注有关最新 Visual Studio 更新的更多信息。
作者 | Bran Hagger(布兰·哈格)
翻译 | RuiWang
原文 | 原文链接