【问题标题】:Hardware square root gcc硬件平方根 gcc
【发布时间】:2014-04-07 14:51:43
【问题描述】:

我正在尝试使用硬件指令来计算一些数学函数。例如平方根(sqrtpd 指令)。我正在用 GCC 编译我的 C 代码。

有谁知道强制使用硬件指令编译而不使用 libc 的 gcc 选项是什么?或者如果我需要对我的源代码做一些特别的事情? (不用写asm代码)。

【问题讨论】:

  • -ffast-math, -march...

标签: c gcc assembly


【解决方案1】:

在 gcc 上你应该使用__builtin_ia32_sqrtpd

【讨论】:

  • 这就是我需要的。但现在我有另一个问题,你知道正弦和余弦是否存在相同的问题?我在 gcc 文档中没有找到任何内容。
  • gcc 有 sin/cos 内置 here。但是,如果您正在寻找性能,您应该使用另一个 SSE2/3/4 优化库,例如 this
【解决方案2】:

最简单的方法是使用优化标志。 -O1 生成

sqrtsd %xmm1, %xmm0

在汇编代码中。尝试将 -S 标志与 gcc 一起使用来生成程序集并查看优化标志的工作原理。

【讨论】:

    【解决方案3】:

    为什么不直接用汇编代码编写所需的硬件指令。

    据我所知,直接用 c 代码编写汇编代码是可能的。它被称为内联汇编。 [见这里:http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html]

    【讨论】:

    • 我知道如何在 C 代码上编写程序集。我只是在做一个项目,如果 GCC 可以翻译成硬件指令,这个项目会对我们有很大帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多