【发布时间】:2013-01-25 14:17:51
【问题描述】:
__m128* pSrc1 = (__m128*) string;
__m128 m0 = _mm_set_ps1(0); //null character
while(1)
{
__m128 result = __m128 _mm_cmpeq_ss(*pSrc1, m0);
//if character is \0 then break
//do some stuff here
pSrc1++;
}
我有一个长度可以是 16 的倍数的字符串。 如果 _mm_cmpeq_ss 返回相等,如何跳出循环?
【问题讨论】:
-
任何你不能做诸如 while(__m128 result != '\0') 之类的事情的原因
-
原谅我的无知,浮点运算不是 128 位 XMM 寄存器吗?
-
@CHill60 因为您无法将 128 位向量与 char 进行相等性比较
-
@legends2k 不。XMM 寄存器上有许多整数运算,例如长度为 8、16、32 和 64 位的整数类型的按位和/或/加/子/多/掩码。跨度>
-
@hirschhornsalz ...哎呀,当然羞愧地垂头丧气