如何使用 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 是矢量数学。
如何使用 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 是矢量数学。