我想编写一些C代码,使用-msse4.1
标志的gcc可以优化它。基本上我想检查编译器是否正在利用SSE4.1指令。
有许多SSE4.1指令(http://en.wikipedia.org/wiki/SSE4#New_instructions),但我无法编写使用生成的汇编代码中的任何指令的C代码片段。
提前致谢。
答案 0 :(得分:5)
从我所看到的,编译器很少生成SSE4.1指令。我见过一些情况,它会使用插入/提取指令来打包数据。
但是在大多数情况下,如果你想使用SSE4.1指令,你需要使用内在函数明确地执行它们:
答案 1 :(得分:3)
我怀疑GCC会轻易发出SSE4.1指令。但你可以看一下Intel SPMD Program Compiler:
在SPMD模型下,程序员主要编写一个程序 似乎是一个常规的串行程序,虽然执行模型是 实际上,许多程序实例并行执行 硬件。 (请参阅说明此概念的更详细示例。) ispc编译基于C的SPMD编程语言以在SIMD上运行 CPU单位;它经常在CPU上提供3倍或更多的加速 具有4个宽的SSE单元,没有任何写入困难 内在代码。