x86 内在函数:2 个复数浮点向量的乘积

问题描述 投票:0回答:0

我的输入是 2 complex 浮点向量。两个向量都是 not 交错的:

VecAReal = Are0, Are1, Are2,...Are[N-1]
VecAImag = Aim0, Aim1, Aim2,...Aim[N-1]

VecBReal = Bre0, Bre1, Bre2,...Bre[N-1]
VecBImag = Bim0, Bim1, Bim2,...Bim[N-1]

我必须运行标量乘法:

VecCReal = Cre0, Cre1, Cre2,...Cre[N-1]
VecCImag = Cim0, Cim1, Cim2,...Cim[N-1]


Cre[i] = Are[i]*Bre[i] - Aim[i]-Bim[i]
Cim[i] = Are[i]*Bim[i] + Aim[i]+Bre[i]

在每次迭代中,我必须在 4 个不同的指针上运行

_mm_load_ps

求和后,添加,在每次迭代中我必须在 2 个不同的指针上运行

_mm_store_ps

因为加载/存储很多,所以看起来效率很低。 你能建议一个更好的方法吗?

c x86 sse complex-numbers intrinsics
© www.soinside.com 2019 - 2024. All rights reserved.