cl_*_*ger 4 double optimization gcc sse2
如何在GCC中使用SSE2?我想使用双精度值。
我搜索某事 像这样:http : //vrm-vrm.blogspot.com/2009/10/gcc-intrinsics.html 仅适用于双精度值。
如果要使用SSE2 doubleinsns,则必须使用进行编译gcc -mfpmath=sse -msse2。
-msse2单独使用该选项将允许您使用SSE2内部函数,-mfpmath=sse并使GCC为所有FP操作发出SSE2 insns。
另请注意,在启用了矢量化-O3。
向量化SSE2-4 insn的优势显而易见,Sandy Bridge处理器每个周期最多可以执行3个256位运算(例如4次双倍乘法,4次双倍加法以及在其之上的一些随机播放)
但是,与传统的x87 insns相比,英特尔优化手册建议甚至将SSE用于标量操作,原因包括平面寄存器模型和较短的延迟。
编辑:
忘了提及,对于32位代码,您还可以添加-msseregparm,这将导致FP参数和返回值通过SSE寄存器传递。默认情况下,它们分别在内存和中传递%st0。当然,这会更改ABI,因此所有交互模块都必须使用此选项进行编译。