你有一个三(或四)个浮点数的向量.总结它们的最快方法是什么?
SSE(movaps,shuffle,add,movd)总是比x87快吗?SSE4.2中的水平加法说明值得吗?移动到FPU的成本是多少,然后是faddp,faddp?什么是最快的特定指令序列?
"尝试安排事情,这样你可以一次总结四个向量"将不被接受作为答案.:-)
vextracti128并vextractf128具有相同的功能,参数和返回值.另外一个是AVX指令集,而另一个是AVX2.有什么不同?
我知道通常应该避免跨SIMD通道的操作.但是,有时必须这样做.
我正在使用AVX2内在函数,并在__m256中有8个浮点值.
我想知道这个向量中的最低值,并使问题复杂化:也就是在哪个插槽中.
我目前的解决方案是内存往返,我不喜欢:
float closestvals[8];
_mm256_store_ps( closestvals, closest8 );
float closest = closestvals[0];
int closestidx = 0;
for ( int k=1; k<8; ++k )
{
if ( closestvals[k] < closest )
{
closest = closestvals[ k ];
closestidx = k;
}
}
Run Code Online (Sandbox Code Playgroud)
没有去往/从记忆中这样做的好方法是什么?