相关疑难解决方法(0)

在x86上做水平浮点矢量和的最快方法

你有一个三(或四)个浮点数的向量.总结它们的最快方法是什么?

SSE(movaps,shuffle,add,movd)总是比x87快吗?SSE4.2中的水平加法说明值得吗?移动到FPU的成本是多少,然后是faddp,faddp?什么是最快的特定指令序列?

"尝试安排事情,这样你可以一次总结四个向量"将不被接受作为答案.:-)

floating-point optimization x86 assembly sse

41
推荐指数
4
解决办法
2万
查看次数

vextracti128和vextractf128有什么区别?

vextracti128vextractf128具有相同的功能,参数和返回值.另外一个是AVX指令集,而另一个是AVX2.有什么不同?

x86 simd avx avx2

9
推荐指数
2
解决办法
1552
查看次数

确定__m256值的SIMD通道的最小值

我知道通常应该避免跨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)

没有去往/从记忆中这样做的好方法是什么?

c simd intrinsics avx avx2

4
推荐指数
1
解决办法
366
查看次数

标签 统计

avx ×2

avx2 ×2

simd ×2

x86 ×2

assembly ×1

c ×1

floating-point ×1

intrinsics ×1

optimization ×1

sse ×1