17

我正在研究使用这些来提高某些代码的性能,但是对于 *mmintrin.h 标头中定义的函数似乎很难找到好的文档,有人可以为我提供指向这些好的信息的指针吗?

编辑:对如何开始的非常基本的教程特别感兴趣。

4

2 回答 2

14

在http://software.intel.com/en-us/articles/intel-intrinsics-guide上有一个方便的 Mac/Linux/Windows英特尔内部指南- 它涵盖了从 MMX 到 SSE 的各种风格的所有英特尔 SIMD 内容到 AVX2等人

您还可以从Intel获得以下 PDF :

  • 英特尔® 64 和 IA-32 架构软件开发人员手册,第 2A 卷:指令集参考,AM (253666-021)

  • 英特尔® 64 和 IA-32 架构软件开发人员手册,第 2B 卷:指令集参考,新西兰 (253667-021)

  • 英特尔® SSE4 编程参考 (D91561-001)

更新

现在有一个在线版本的内在函数指南,因此您不再需要安装任何东西,并且它始终是最新的。

于 2011-07-28T13:47:16.600 回答
9

这是我找到的关于 MMX/SSE 编程的最佳介绍。(我已经为 SSE2 编程了 5 年,我仍然觉得这个教程在概念上是最清晰的。)

http://www.tommesani.com/Docs.html

这不是完整的说明列表;因此,一旦您准备好了解更多信息,请按照@PaulR 的建议开始阅读英特尔内在函数指南。

要记住的一件重要的事情是,MMX/SSE 在数据移动(随机排列或任意排列,或单个元素的变化)方面往往受到严格限制。这是 CPU 芯片设计的限制。分散-收集说明仅在几年前添加,甚至可能在您客户的计算机上不可用。

MMX/SSE 有大量矢量化技巧,类似于http://www.hackersdelight.org/规定利用位并行操作的技巧。

于 2013-07-11T08:04:59.620 回答