【发布时间】:2012-04-10 06:51:18
【问题描述】:
我刚刚开始使用 SSE,我很困惑如何获得 __m128i 的最大整数值 (max)。例如:
__m128i t = _mm_setr_ps(0,1,2,3);
// max(t) = 3;
四处搜索使我找到了MAXPS 指令,但我似乎无法找到如何将它与"xmmintrin.h" 一起使用。
此外,您是否会推荐任何有关 "xmmintrin.h" 的文档,而不是查看头文件本身?
【问题讨论】:
-
您需要的随机播放与水平总和或几乎任何其他水平缩减相同。请参阅stackoverflow.com/questions/6996764/… 了解浮点、整数和双精度的一些优化版本,以及 SSE2、SSE3 和 AVX。还讨论了哪些 shuffle 在哪些 CPU 上是最佳的。
-
这个问题似乎对浮点数和整数感到困惑。
__m128i是一个整数向量。*_ps和MAXPS是打包单浮点数。有关文档,请参阅 the SSE tag wiki 的链接,以及 stackoverflow.com/tags/x86/info 的更多链接。一个非常好的资源是Intel's intrinsics search/finder,其中详细介绍了每个资源的作用,但没有 asm 说明参考手册中的详细信息。