gpt4 book ai didi

c++ - 如何使用 _mm_extract_ps SSE GCC instrinc 函数将十六进制 float 转换为 C/C++ 中的 float

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:20:20 33 4
gpt4 key购买 nike

我正在为二维卷积编写 SSE 代码,但 SSE 文档非常稀少。

我正在使用 _mm_dp_ps 计算点积并使用 _mm_extract_ps 获得点积结果,但是 _mm_extract_ps 返回一个十六进制 float,我不知道如何将这个十六进制 float 转换为常规 float

我可以使用 __builtin_ia32_vec_ext_v4sf 返回一个 float 但我想保持与其他编译器的兼容性。

_mm_extract_ps (__m128 __X, const int __N)
{
union { int i; float f; } __tmp;
__tmp.f = __builtin_ia32_vec_ext_v4sf ((__v4sf)__X, __N);
return __tmp.i;
}

我错过了什么?

我们将不胜感激,谢谢。

OpenSUSE 11.2GCC 4.4.1C++

编译器选项:-fopenmp -Wall -O3 -msse4.1 -march=core2

链接器选项:-lgomp -Wall -O3 -msse4.1 -march=core2

最佳答案

您应该能够使用 _MM_EXTRACT_FLOAT

顺便说一句,在我看来,_mm_extract_ps_MM_EXTRACT_FLOAT 应该是相反的,即 _mm_extract_ps 应该返回一个 float 和 _MM_EXTRACT_FLOAT 应该返回 int 表示,但我知道什么。

关于c++ - 如何使用 _mm_extract_ps SSE GCC instrinc 函数将十六进制 float 转换为 C/C++ 中的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3130169/

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