Я очень озадачен.
Когда я запускаю этот код в Visual C++ 2008:
__m128i a, b;
a.m128i_u64[0] = 1;
b.m128i_u64[0] = 0;
a.m128i_u64[1] = 0;
b.m128i_u64[1] = 0;
printf("%d\n", _mm_testc_si128(a, b));
он печатает 1
. Что противоречит тому, что я ожидаю, потому что это должно быть 1, только если a
и b
одинаковы.
Как это возможно? Есть ли ошибка в моем процессоре, в Visual C++ 2008 или в чем-то еще?
int res = _mm_testc_si128(a, b);
передprintf
и вместо этого используетеres
вprintf
? - person Yahia   schedule 07.11.2011