编写一段C代码,使编译器使用SSE4.1指令生成汇编代码

时间:2011-09-01 19:54:19

标签: c optimization gcc sse simd

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

提前致谢。

2 个答案:

答案 0 :(得分:5)

从我所看到的,编译器很少生成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

答案 1 :(得分:3)

我怀疑GCC会轻易发出SSE4.1指令。但你可以看一下Intel SPMD Program Compiler

  

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