【问题标题】:Writing a piece of C code such that compiler uses SSE4.1 instruction for generating assembly Code编写一段 C 代码,使编译器使用 SSE4.1 指令生成汇编代码
【发布时间】:2011-11-08 16:44:16
【问题描述】:

我想编写一些 C 代码,以便使用 -msse4.1 标志的 gcc 可以优化它。基本上我想检查编译器是否利用了 SSE4.1 指令。 有许多 SSE4.1 指令 (http://en.wikipedia.org/wiki/SSE4#New_instructions),但我无法编写在生成的汇编代码中使用任何这些指令的 C 代码片段。

提前致谢。

【问题讨论】:

    标签: c optimization gcc sse simd


    【解决方案1】:

    据我所知,编译器很少生成 SSE4.1 指令。我见过一些使用插入/提取指令来打包数据的情况。

    但在大多数情况下,如果您想使用 SSE4.1 指令,则需要使用内在函数显式执行它们:

    http://software.intel.com/sites/products/documentation/studio/composer/en-us/2011/compiler_c/intref_cls/common/intref_bk_sse41.htm

    【讨论】:

      【解决方案2】:

      我怀疑 GCC 会那么容易地发出 SSE4.1 指令。不过你可以看看Intel SPMD Program Compiler:

      在 SPMD 模型下,程序员编写的程序主要 似乎是一个常规的串行程序,尽管执行模型是 实际上,许多程序实例在 硬件。 (请参阅说明此概念的更详细示例。) ispc 编译基于 C 的 SPMD 编程语言以在 SIMD 上运行 CPU 单位;它经常在 CPU 上提供 3 倍或更多的加速 具有 4 个宽的 SSE 单元,没有任何写作困难 内在代码。

      【讨论】:

        猜你喜欢
        • 2012-03-04
        • 1970-01-01
        • 2014-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-14
        • 2014-10-29
        相关资源
        最近更新 更多