LLVM Clang 12合并了对x86_64微体系结构级别的支持

2020-11-09 03:11:43

我们依靠您的支持:您听说过Phoronix Premium吗?这是我们高级无广告服务在本网站上广告的补充。每月只需3美元,你就可以帮助支持我们的网站,同时产生的资金可以让我们继续进行Linux硬件审查、性能基准测试、维护我们的社区论坛等等。你也可以考虑通过贝宝(PayPal)支付小费。为了更好地迎合更新和常见的x86_64指令集扩展,开源工具链开发人员正在推进x86_64微体系结构功能级别的工作,以便能够针对基本x86_64指令集之外的几个不同级别。 X86_64功能级别用于轻松隔离不同类别的x86_64 Intel/AMD CPU,希望Linux发行版可以更容易地将其基本要求提高到x86_64/AMD64之外,并通过一组通用的可能级别/硬件功能来改进编译器工具链,以生成优化的库。与此同时,Red Hat还致力于提高新RHEL/Fedora版本的x86_64CPU要求,以及Glibc HWCAPS等优化计划,以支持几个不同的优化级别,而不是像目前代码优化/调优那样,针对每个可能的Intel/AMD CPU微体系结构家族。 在过去的一周,LLVMClang 12添加了对将x86_64特性级别提供给Clang C/C++编译器的支持。 定义的x86_64功能级别包括: X86-64:CMOV、CMPXCHG8B、FPU、FXSR、MMX、FXSR、SCE、SSE、。SSE 2 X86-64-v2:(靠近Nehalem)CMPXCHG16B、LAHF-SAHF、POPCNT、SSE3、SSE4.1、SSE4.2、SSSE3 X86-64-v3:(接近哈斯韦尔)AVX、AVX2、BMI1、BMI2、F16C、FMA、LZCNT、MOVBE、XSAVE X86-64-v4:AVX512F、AVX512BW、AVX512CD、AVX512DQ、AVX512VL。

如果想要针对这些目标之一进行优化,而不是手动指定特定的指令集扩展或cpu系列,则现在可以将不同的级别/版本输入到Clang 12和GCC 11的-march=中。 这些基线是通过