gpt4 book ai didi

sse - 我可以将存储在 _m128 SSE 寄存器中的 float 直接移动到普通寄存器吗?

转载 作者:行者123 更新时间:2023-12-04 04:35:55 26 4
gpt4 key购买 nike

我正在尝试对一些代码进行 super 优化,我想加快速度的地方如下。

我想取一个 _m128 的点积运算 (_mm_dp_ps) 的答案,并将答案直接保存到寄存器中。但是,使用 _mm_store,这意味着我必须将完整的 128 位写入数组,然后加载该数组的第一个条目。

将我的 _m128 变量称为“向量”。

我可以做 float ans = *((float *)&vector) 吗?

如果这有效,那么它是否有帮助的问题仍然存在。 ans 会被加载到寄存器中,还是我必须从 L1 加载它?

谢谢!!!

最佳答案

结果实际上已经在寄存器中;您只需要告诉编译器将其解释为标量而不是向量。您正在寻找 _mm_cvtss_f32内在:

float result = _mm_cvtss_f32(vector_result);

关于sse - 我可以将存储在 _m128 SSE 寄存器中的 float 直接移动到普通寄存器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19759306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com