C++ GNU c&;中SIMD函数的问题;c++;

C++ GNU c&;中SIMD函数的问题;c++;,c++,c,C++,C,环境详细信息: 机器:在VMware player的虚拟机中运行Centos 64位的核心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)

环境详细信息:

机器:在VMware player的虚拟机中运行Centos 64位的核心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];
}
生成的程序集示例:

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代码的正确方法


谢谢你

看起来编译器正在优化对
\u mm\u foo\u epi32的调用,因为所有的值都是已知的。尝试从用户那里获取所有相关输入,看看会发生什么


或者,用
-O0
而不是
-O3
编译,看看会发生什么。

我需要更多帮助。我创建了下面的小程序,它没有给我正确的输出#include#include#include使用名称空间std;int main(void){m128i a;int aa[4]uu属性((对齐的(16))={1,2,3,4};a=_mm_load_si128((uu m128i*)aa);这最好作为一个单独的问题来说明;注释系统的设计或目的不是为了获取大量代码。
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