Как преобразовать шестнадцатеричное число с плавающей точкой в ​​число C / C ++ с помощью функции _mm_extract_ps SSE GCC

Я пишу код SSE для 2D свертки, но документация SSE очень скудная. Я вычисляю точечное произведение с помощью _mm_dp_ps и использую _mm_extract_ps для получения результата точечного произведения, но _mm_extract_ps возвращает гекс, представляющий число с плавающей запятой, и я не могу понять, как преобразовать этот гекс с плавающей точкой в ​​обычный. Я мог бы использовать __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.2
GCC 4.4.1
C ++
Опции компилятора
-fopenmp -Wall -O3 -msse4.1 -march = core2
Параметры линкера
-lgomp -Wall -O3 -msse4.1 -march = core2

Ответы на вопрос(3)

Ваш ответ на вопрос