【发布时间】:2018-02-05 14:55:36
【问题描述】:
现在我使用的大部分硬件都支持 SSE2。在 Windows 和 Linux 上,我有一些代码来测试 SSE 支持。我在某处读到 macOS 支持 SSE 很长时间了,但我不知道可以启用的最低版本。最终的二进制文件将被复制到其他 macOS 平台,所以我不能像 GCC 那样使用-march=native。
如果在所有构建中默认启用它,我是否必须在构建代码时传递 -msse 或 -msse2 标志?
这是我的编译器版本:
Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix
这里是 uname -a 的输出
uname -a
Darwin mme.local 14.1.0 Darwin Kernel Version 14.1.0: Mon Dec 22 23:10:38 PST 2014; root:xnu-2782.10.72~2/RELEASE_X86_64 x86_64
这里是 sysctl machdep.cpu.features 的输出
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 DTES64 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1 SSE4.2 POPCNT
【问题讨论】:
-
如果您使用的是 Xcode,请查看
CLANG_X86_VECTOR_INSTRUCTIONS构建设置。我认为您可以放心地假设任何足以运行 OS X 的新事物(即过去 10-15 年的任何事物)都具有最低 SSE3(甚至 SSSE3)。 -
@PaulR 感谢您提供信息。我没有使用 XCode 项目。根据您的评论,我可以假设 sse2。
标签: c++ macos optimization compiler-optimization sse