SSE2用于GCC的双重计算



如何在GCC中使用SSE2 ?我想使用双精度值。

I search s.th。是这样的:http://vrm-vrm.blogspot.com/2009/10/gcc-intrinsics.html

如果你想使用SSE2 double,你必须用gcc -mfpmath=sse -msse2编译。

选项-msse2单独将允许您使用SSE2 intrinsic, -mfpmath=sse将导致GCC为所有FP操作发出SSE2 intrinsic。

还请注意,向量化在-O3是启用的。

向量化SSE2-4 insn的优点是显而易见的,Sandy Bridge处理器每个周期可以执行多达3个256位操作(例如4个双乘法,4个双加法和一些shuffle)

然而,Intel优化手册建议即使对于标量操作也使用SSE,原因包括扁平寄存器模型和较短的延迟,与传统的x87操作相比。

编辑:

忘记了,对于32位代码,您还可以添加-msseregparm,这将导致通过SSE寄存器传递FP参数和返回值。默认情况下,它们分别在内存和%st0中传递。当然,这会改变ABI,因此必须使用该选项编译所有交互模块。

最新更新