【发布时间】:2012-05-15 21:38:02
【问题描述】:
我想编写一个 c 程序,用下面的代码计算 a...c 范围内的字节数:
char a[16], b[16], c[16];
int counter = 0;
for(i = 0; i < 16; i++)
{
if((a[i] < b[i]) && (b[i] < c[i]))
counter++;
}
return counter;
我打算做这样的事情
__m128i result1 = _mm_cmpgt_epi8 (b, a);
__m128i result2 = _mm_cmplt_epi8 (b, c);
unsigned short out1 = _mm_movemask_epi8(result1);
unsigned short out2 = _mm_movemask_epi8(result2);
unsigned short out3 = out1 & out2;
unsigned short out4 = _mm_popcnt_u32(out3);
我的方法正确吗?有没有更好的方法来做到这一点?
【问题讨论】:
-
要计算相等字节数吗?如果是这样,你应该问它:-)
-
@drhirsch,我想计算位于某个范围(即 a 和 c 的范围)内的字节数。
-
那你为什么不问呢? ;-) 我编辑了问题以进行澄清。