【发布时间】: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
我想编写一些 C 代码,以便使用 -msse4.1 标志的 gcc 可以优化它。基本上我想检查编译器是否利用了 SSE4.1 指令。
有许多 SSE4.1 指令 (http://en.wikipedia.org/wiki/SSE4#New_instructions),但我无法编写在生成的汇编代码中使用任何这些指令的 C 代码片段。
提前致谢。
【问题讨论】:
标签: c optimization gcc sse simd
据我所知,编译器很少生成 SSE4.1 指令。我见过一些使用插入/提取指令来打包数据的情况。
但在大多数情况下,如果您想使用 SSE4.1 指令,则需要使用内在函数显式执行它们:
【讨论】:
我怀疑 GCC 会那么容易地发出 SSE4.1 指令。不过你可以看看Intel SPMD Program Compiler:
在 SPMD 模型下,程序员编写的程序主要 似乎是一个常规的串行程序,尽管执行模型是 实际上,许多程序实例在 硬件。 (请参阅说明此概念的更详细示例。) ispc 编译基于 C 的 SPMD 编程语言以在 SIMD 上运行 CPU 单位;它经常在 CPU 上提供 3 倍或更多的加速 具有 4 个宽的 SSE 单元,没有任何写作困难 内在代码。
【讨论】: