我正在研究使用它们来提高某些代码的性能,但是对于*mmintrin.h头文件中定义的函数来说,很难找到好的文档,有人可以向我提供有关这些函数的详细信息吗?
编辑:特别感兴趣的是一个关于如何入门的非常基础的教程.
Pau*_*l R 14
在http://software.intel.com/en-us/articles/intel-intrinsics-guide上有一个方便的Mac/Linux/Windows 英特尔内部指南 - 它涵盖了从MMX到各种SSE版本的所有英特尔SIMD内容到AVX2 等.
您还可以从英特尔获得以下PDF :
英特尔®64和IA-32架构软件开发人员手册,第2A卷:指令集参考,AM(253666-021)
英特尔®64和IA-32架构软件开发人员手册,卷2B:指令集参考,新西兰(253667-021)
英特尔®SSE4编程参考(D91561-001)
现在有一个在线版本的内在指南,所以你不再需要安装任何东西,它总是最新的.
这是我发现的MMX/SSE编程的最佳介绍.(我已经将SSE2编程了5年,我仍然觉得这个教程在概念上最清晰.)
http://www.tommesani.com/Docs.html
这不是完整的说明清单; 所以,一旦你准备好了解更多信息,请开始阅读@PaulR建议的英特尔内在指南.
需要记住的一件重要事情是,MMX/SSE在数据移动(洗牌或任意排列,或单个元素的变化)方面往往会受到严重限制.这是CPU芯片设计的限制.Scatter-gather指令仅在几年前添加,甚至可能无法在客户的计算机上使用.
对于MMX/SSE,存在大量的矢量化技巧,类似于http://www.hackersdelight.org/规定利用位并行操作的技巧.