如何使用 SSE2 添加到变量?

How to add to variable using SSE2?

如何使用 SSE2“添加”变量?

我最近一直在使用 C++ 中的 SSE2 来优化一些数学函数,但是 运行 在尝试添加到现有变量时遇到了问题。

我有一个像这样接收变量的函数:

_m128d v1 {}; // Note: Global variable. 
_m128d v2 {}; // Note: Global variable. 

_mm_func& _mm_func::operator+=( const vector _mm0, const  vector _mm0 )
{
    v1 += _mm0.v1; // <-- Problem...

    v2 += _mm0.v2; // <-- Problem...

   return *this;
}

但我找不到正确的内在名称...

我知道 _mm_add_pd 会简单地将变量加在一起,但我找不到任何来源可以解释我如何将它添加到 ( += ) 变量。

来源:https://www.cita.utoronto.ca/~merz/intel_c10b/main_cls/mergedProjects/intref_cls/common/

英特尔网站:https://software.intel.com/sites/landingpage/IntrinsicsGuide/。 Select SSE2,Artithemtic,你会得到半页的算术说明。您显然想要一个 m128d 添加,但您遇到的问题是您需要指定这 128 位的组织方式。这可能是从 16x8 到 2x64 的任何东西。 +=不能同时是所有这些。

不,您不能进行 128 位加法运算。 SSE2 是矢量数学。