SSE intrinsics compiles MSDN code with GCC error?

I am wondering if Microsoft SSE intrinsics is a little different than normal because I tried to compile this code with GCC with the flags -msse -msse2 -msse3 -msse4

 #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; } 

and this gave me the following errors:

 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'| 

It seems to me that I need to create a struct for __m128i , although there may be a better solution to this problem if someone knows about it.

0
gcc struct sse intrinsics
source share
1 answer

The definition of SSE types, such as __m128i , is different from Microsoft than in the rest of the world. If you want to write portable SSE code, stick to the built-in functions that are common to all platforms, and don’t make any assumptions about how the types of SSE vectors are defined (i.e., they are considered as more or less opaque data types). You can implement the code in your question only with the appropriate _mm_set_xxx built-in functions.

+2
source share

All Articles