我在网络和英特尔软件手册上搜索过.但我无法确认所有英特尔64架构是否支持SSSE3或SSE4.1或SSE4.2或AVX等.因此,我可以在程序中使用最少的SIMD支持指令.请帮忙.
在osx上可以启用的最小支持sse标志是什么?大多数硬件,我现在使用支持sse2.在Windows和Linux上,我有一些代码来测试sse支持.我在某处读到了osx长期以来对sse的支持.但我不知道哪个是可以启用的最低版本.最终的二进制文件将被复制到其他osx平台,所以我不能像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
Run Code Online (Sandbox Code Playgroud)
这是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
Run Code Online (Sandbox Code Playgroud)
这是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 …Run Code Online (Sandbox Code Playgroud) 是否有任何仍然相关的CPU(Intel/AMD/Atom)不支持SSSE3指令?
没有SSSE3的最新CPU是什么?
我试图使用perf工具来分析我的C++代码.实现包含带有SSE/AVX/AVX2指令的代码.除了该代码使用-O3 -mavx2 -march=native标志编译.我相信__memset_avx2_unaligned_erms函数是一个libc实现memset.perf表明这个功能有相当大的开销.函数名称表示内存未对齐,但在代码中我使用GCC内置宏显式对齐内存__attribute__((aligned (x)))可能是此函数有明显开销的原因以及为什么虽然内存明确对齐但调用了未对齐版本?