相关疑难解决方法(0)

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

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

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

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

floating-point optimization x86 assembly sse

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

如何在256位AVX(YMM)寄存器中交换低128位和高128位

我正在移植SSE SIMD代码以使用256位AVX扩展,并且似乎找不到任何将混合/混洗/移动高128位和低128位的指令.

支持故事:

我真正想要的是VHADDPS/ _mm256_hadd_ps表现得像HADDPS/ _mm_hadd_ps,只有256个字.不幸的是,它就像是HADDPS对低字和高字独立行动的两次调用.

x86 simd avx

18
推荐指数
1
解决办法
7588
查看次数

8个32位浮点数的水平总和

如果我有8个打包的32位浮点数(__m256),那么提取所有8个元素的水平和的最快方法是什么?同样,如何获得水平最大值和最小值?换句话说,以下C++函数的最佳实现是什么?

float sum(__m256 x);  ///< returns sum of all 8 elements
float max(__m256 x);  ///< returns the maximum of all 8 elements
float min(__m256 x);  ///< returns the minimum of all 8 elements
Run Code Online (Sandbox Code Playgroud)

x86 sse simd avx

3
推荐指数
2
解决办法
3020
查看次数

标签 统计

x86 ×3

avx ×2

simd ×2

sse ×2

assembly ×1

floating-point ×1

optimization ×1