CLion on Windows has problem with intrinsics defined as a macro

125 Views Asked by At

When using Intel compiler, CLion complains that _mm_extract_epi64 may be undeclared or unknown (still compilation is successful). On the other hand CLion doesn't complain on some other intrinsics functions such as _mm_set_epi64x.

The difference is that the former is defined as a macro.

#define _mm_extract_epi64(X, N)                                                \
  ((long long)__builtin_ia32_vec_ext_v2di((__v2di)(__m128i)(X), (int)(N)))

while the latter is defined as an inline function

static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi64x(long long __q1,
                                                            long long __q0) {
  return __extension__(__m128i)(__v2di){__q0, __q1};
}

CLion doesn't think that __builtin_ia32_vec_ext_v2di is a valid builtin function.

Same error occurs for MinGW gcc because of the same reason. Only MSVC doesn't complain because _mm_extract_epi64 is defined as extern.

Is there any fix?

0

There are 0 best solutions below