мне интересно, если Microsofts SSE intrinsics немного отличается от нормы, потому что я пытался компиляции этого кода с GCC с флагами -msse -msse2 -msse3 -msse4
SSE intrinsics, компилирующий код MSDN с ошибкой GCC?
#include <stdio.h>
#include <smmintrin.h>
int main()
{
__m128i a, b;
a.m128i_u64[0] = 0x000000000000000;
b.m128i_u64[0] = 0xFFFFFFFFFFFFFFF;
a.m128i_u64[1] = 0x000000000000000;
b.m128i_u64[1] = 0x000000000000000;
int res1 = _mm_testnzc_si128(a, b);
a.m128i_u64[0] = 0x000000000000001;
int res2 = _mm_testnzc_si128(a, b);
printf_s("First result should be 0: %d\nSecond result should be 1: %d\n",
res1, res2);
return 0;
}
и он дал мне следующие ошибки:
sse_test_not_zero.c||In function 'main':|
sse_test_not_zero.c|8|error: request for member 'm128i_u64' in something not a structure or union|
sse_test_not_zero.c|9|error: request for member 'm128i_u64' in something not a structure or union|
sse_test_not_zero.c|9|warning: integer constant is too large for 'long' type|
sse_test_not_zero.c|11|error: request for member 'm128i_u64' in something not a structure or union|
sse_test_not_zero.c|12|error: request for member 'm128i_u64' in something not a structure or union|
sse_test_not_zero.c|16|error: request for member 'm128i_u64' in something not a structure or union|
sse_test_not_zero.c|20|warning: implicit declaration of function 'printf_s'|
Это кажется мне нужно создать struct
для __m128i
, хотя может быть лучшее решение этой проблемы, если кто-то знает об этом.
Это еще одна причина, по которой я даю палец Microsoft. Кстати, их земля разрушается. – pandoragami
@ user2555139: Microsoft имеет гораздо меньше расширений, чем GNU для векторов, поэтому ваш комментарий немного странный. –