小编roc*_*441的帖子

gcc,simd内在函数和快速数学概念

大家好:)
我试图抓住一些关于浮点,SIMD /数学内在函数和gcc的快速数学标志的概念.更具体地说,我在x86 cpu上使用MinGW和gcc v4.5.0.

我现在已经搜索了一会儿,这就是我(我想)我现在所理解的:

当我没有标志编译时,任何fp代码将是标准x87,没有simd内在函数,math.h函数将从msvcrt.dll链接.

当我使用mfpmath,mssen和/或march使得mmx/sse/avx代码被启用时,gcc实际上只有在我还指定一些优化标志时才使用simd指令,如Onftree-vectorize.在这种情况下,内部函数是由gcc自动选择的,并且一些数学函数(我仍在谈论math.h上的标准数学函数)将成为内在函数或通过内联代码进行优化,其他函数仍将来自msvcrt. DLL.如果我没有指定优化标志,这会改变吗?

当我使用特定的simd数据类型(那些可用作gcc扩展,如v4siv8qi)时,我可以选择直接调用内部函数,或者再次将自动决定留给gcc.如果我没有通过正确的标志启用simd指令,Gcc仍然可以选择标准的x87代码.同样,如果我没有指定优化标志,这会改变吗?

如果我的任何陈述错误,请纠正我:p

现在的问题是:

  1. 我是否必须包含x86intrin.h才能使用内在函数?
  2. 我是否必须链接libm?
  3. 什么快速数学与任何东西有关?我理解它放宽了IEEE标准,但具体来说,如何?使用其他标准功能?其他一些lib链接?或者只是在某处设置了几个标志,标准的lib表现不同?

感谢任何想要帮助的人:D

gcc simd intrinsics fast-math

11
推荐指数
1
解决办法
4472
查看次数

标签 统计

fast-math ×1

gcc ×1

intrinsics ×1

simd ×1