[TOC]

概述

文章参考:https://community.intel.com/t5/Intel-C-Compiler/compiler-optimized-msse4-2-xSSE4-2-and-arch-SSE4-2/m-p/775192

C++中的Cmake的编译优化

编译器优化:-msse4.2 -xSSE4.2 和 -arch SSE4.2 ?

1
2
3
4
5
# x86 CPU 上启用 SSE 指令集
if (TARGET_ARCH STREQUAL "x86_64")
add_compile_options(-msse4.2)
message(STATUS "use SSE on x86_64 platform")
endif ()

知道这三个选项有什么不同??

文章参考:

-xSSE4.2,如您所说,会生成一个二进制文件,该二进制文件会显示一条消息并拒绝在未被识别为支持该选项的平台上运行。

-msse2 是最近的英特尔编译器的默认选项。我预计 -msse2 和 -xSSE2 之间的自动矢量化不会有太大差异;当然,-xSSE2 应该在 -msse2 所做的任何地方进行矢量化。
-xSSE4.2,如您所说,会生成一个二进制文件,该二进制文件会显示一条消息并拒绝在未被识别为支持该选项的平台上运行。
-axSSE4.2 将在已知支持 SSE4.2 的平台上运行 SSE4.2 代码,并且(默认情况下)-msse2 代码在不被认可的平台上运行。
如果你想用当前的编译器支持 P-III,你必须使用 -mia32(没有 SSE 代码;显然,没有向量化)。我不知道它会拒绝接受 m128i 数据类型,但它不能使用 SSE 代码来实现它们。