相关疑难解决方法(0)

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

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

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

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

floating-point optimization x86 assembly sse

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

打印__m128i变量

我正在尝试学习使用内在函数进行编码,下面是一个添加代码的代码

compiler used: icc

#include<stdio.h>
#include<emmintrin.h>
int main()
{
        __m128i a = _mm_set_epi32(1,2,3,4);
        __m128i b = _mm_set_epi32(1,2,3,4);
        __m128i c;
        c = _mm_add_epi32(a,b);
        printf("%d\n",c[2]);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到以下错误:

test.c(9): error: expression must have pointer-to-object type
        printf("%d\n",c[2]);
Run Code Online (Sandbox Code Playgroud)

如何在c类型变量中打印值__m128i

c assembly sse simd intrinsics

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

如何使用_mm_extract_ps SSE GCC instrinc函数在C/C++中将hex float转换为float

我正在为二维卷积编写SSE代码,但SSE文档非常稀疏.我正在使用_mm_dp_ps计算点积并使用_mm_extract_ps来获得点积结果,但_mm_extract_ps返回表示浮点数的十六进制,我无法弄清楚如何将此十六进制浮点数转换为常规浮点数.我可以使用返回浮点数的__builtin_ia32_vec_ext_v4sf,但我想保持与其他编译器的兼容性.

_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;
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

感谢一点帮助.

OpenSUSE 11.2
GCC 4.4.1
C++
编译器选项
-fopenmp -Wall -O3 -msse4.1 -march = core2
链接器选项
-lgomp -Wall -O3 -msse4.1 -march = core2

c++ floating-point hex gcc sse

6
推荐指数
1
解决办法
1965
查看次数

标签 统计

sse ×3

assembly ×2

floating-point ×2

c ×1

c++ ×1

gcc ×1

hex ×1

intrinsics ×1

optimization ×1

simd ×1

x86 ×1