如何使用SSE2“添加”变量?
最近,我一直在使用SSE2在C++中优化一些数学函数,但是在尝试添加现有变量时遇到了一个问题。
我有一个函数,它输入的变量如下:
_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/
发布于 2020-11-16 20:09:05
英特尔的网站:https://software.intel.com/sites/landingpage/IntrinsicsGuide/。选择SSE2,Artithemtic,您将得到半页的主题说明。显然,您需要一个m128d添加,但问题是您需要指定这128个位是如何组织的。这可能是从16x8到2x64之间的任何东西。+=不可能同时成为所有的人。
不,你不能加128位。SSE2是向量数学。
https://stackoverflow.com/questions/64864808
复制相似问题