关于mmintrin.h或emmintrin.h中没有的SSE比较指令?

时间:2013-07-06 00:06:41

标签: gcc comparison header-files sse intrinsics

我发现使用这些函数调用大于,小于等于的指令。

emmintrin

_mm_cmpeq_epi8 (__m128i __A, __m128i __B)
_mm_cmplt_epi8 (__m128i __A, __m128i __B)
_mm_cmpgt_epi8 (__m128i __A, __m128i __B)

mmintrin
_mm_cmpeq_pi8 (__m64 __m1, __m64 __m2)
_m_pcmpeqb (__m64 __m1, __m64 __m2)
_mm_cmpgt_pi8 (__m64 __m1, __m64 __m2)
_m_pcmpgtb (__m64 __m1, __m64 __m2)

但是这些呢?它们是否位于某个SSE内部头文件中,或者我是否使用内联汇编程序。我使用GCC作为我的编译器,所以如果有人有以下说明作为例子,那就太好了。

pcmpxxb - Compares 16 8bit integers.

比较代码(上面的xx部分):

le - Less than or equal to.

ne - Not equal.

nlt - Not less than.

nle - Not less than or equal to.

1 个答案:

答案 0 :(得分:1)

对于整数,只有两个基本比较指令PCMPGTxPCMPEQx。另外的比较内在函数是从这些中得到的,例如_mm_cmplt_epi8(v0, v1)只是_mm_cmpgt_epi8(v1, v0) - 它与切换操作数的底层指令(PCMPGTB)相同。可以从这些指令构建所有其他比较内在函数,虽然大多数头文件提供lt以及gt以方便,但编程人员在编码时通常会留下任何其他条件。