环境细节:
机器:在 VMware 播放器的虚拟机中运行 Centos 64 位的 Core i5 M540 处理器。GCC:4.8.2 从源代码 tar 构建。
问题: 我正在尝试更多地了解 C/C++ 中的 SIMD 函数,为此我创建了以下 helloworld 程序。
#include <iostream>
#include <pmmintrin.h>
int main(void){
__m128i a, b, c;
a = _mm_set_epi32(1, 1, 1, 1);
b = _mm_set_epi32(2, 3, 4, 5);
c = _mm_add_epi32(a,b);
std::cout << "Value of first int: " << c[0];
}
当我使用以下命令查看它的程序集输出时,我没有看到 SIMD 指令。
g++ -S -I/usr/local/include/c++/4.8.2 -msse3 -O3 hello.cpp
生成的程序集示例:
movl $.LC2, %esi
movl $_ZSt4cout, %edi
call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
movabsq $21474836486, %rsi
movq %rax, %rdi
call _ZNSo9_M_insertIxEERSoT_
xorl %eax, %eax
请告知编写或编译 SIMD 代码的正确方法。
谢谢!!