我发现使用这些函数调用大于,小于等于的指令。
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.
答案 0 :(得分:1)
对于整数,只有两个基本比较指令,PCMPGTx
和PCMPEQx
。另外的比较内在函数是从这些中得到的,例如_mm_cmplt_epi8(v0, v1)
只是_mm_cmpgt_epi8(v1, v0)
- 它与切换操作数的底层指令(PCMPGTB
)相同。可以从这些指令构建所有其他比较内在函数,虽然大多数头文件提供lt
以及gt
以方便,但编程人员在编码时通常会留下任何其他条件。