portability-simd-intrinsics¶
查找 SIMD intrinsics 调用并建议使用 std::experimental::simd
(P0214) 替代方案。
如果选项 Suggest
设置为 true,则
_mm_add_epi32(a, b); // x86
vec_add(a, b); // Power
检查建议使用以下替代方案:operator+
在 std::experimental::simd
对象上。
否则,它只会抱怨 intrinsics 不可移植(并且有 P0214 替代方案)。
许多体系结构提供 SIMD 操作(例如 x86 SSE/AVX、Power AltiVec/VSX、ARM NEON)。通常,实现相同算法的 SIMD 代码是用多个目标分发片段编写的,以优化不同的体系结构或微体系结构。
C++ 标准提案 P0214 及其扩展涵盖了许多常见的 SIMD 操作。通过从目标依赖的 intrinsics 迁移到 P0214 操作,可以简化 SIMD 代码,并将不同目标的片段统一起来。
有关数据并行标准库的介绍和动机,请参阅 P0214。