我刚刚开始使用SSE,我很困惑如何获得a的最大整数值(max)__m128i.例如:
__m128i t = _mm_setr_ps(0,1,2,3);
// max(t) = 3;
Run Code Online (Sandbox Code Playgroud)
搜索引导我去MAXPS指导,但我似乎无法找到如何使用它"xmmintrin.h".
此外,是否有任何"xmmintrin.h"您建议的文档,而不是查看头文件本身?
我有一个使用SSE的功能来做很多事情,并且分析器向我显示我用来计算水平最小值和最大值的代码部分大部分时间消耗.
我一直在使用以下实现作为最小例子:
static inline int16_t hMin(__m128i buffer) {
buffer = _mm_min_epi8(buffer, _mm_shuffle_epi8(buffer, m1));
buffer = _mm_min_epi8(buffer, _mm_shuffle_epi8(buffer, m2));
buffer = _mm_min_epi8(buffer, _mm_shuffle_epi8(buffer, m3));
buffer = _mm_min_epi8(buffer, _mm_shuffle_epi8(buffer, m4));
return ((int8_t*) ((void *) &buffer))[0];
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我需要计算16个1字节整数的最小值和最大值.
任何好的建议都非常感谢:)
谢谢