[LLVMdev] Error Compiling Intrinsics On Windows (original) (raw)

Eric Mader emader at gmx.us
Wed Oct 1 12:42:17 PDT 2014


I'm seeing errors like this in Visual Studio 3013:

1> In file included from C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\algorithm:6: 1> In file included from C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xmemory:6: 1> In file included from C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xmemory0:909: 1> In file included from C:\Program Files (x86)\LLVM\msbuild-bin..\lib\clang\3.6.0\include\intrin.h:34: 1> In file included from C:\Program Files (x86)\LLVM\msbuild-bin..\lib\clang\3.6.0\include\x86intrin.h:29: 1> In file included from C:\Program Files (x86)\LLVM\msbuild-bin..\lib\clang\3.6.0\include\immintrin.h:28: 1>C:\Program Files (x86)\LLVM\msbuild-bin..\lib\clang\3.6.0\include\mmintrin.h(52,40): error : cannot initialize a parameter of type 'attribute((vector_size(2 * sizeof(int)))) int' (vector of 2 'int' values) with an rvalue of type '__v2si' (aka 'int') 1> return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0); 1> ^~~~~~~~~~~

Here's the relevant code from mmintrin.h:

typedef long long __m64 attribute((vector_size(8)));

typedef int __v2si attribute((vector_size(8))); typedef short __v4hi attribute((vector_size(8))); typedef char __v8qi attribute((vector_size(8)));

static inline void attribute((always_inline, nodebug)) _mm_empty(void) { __builtin_ia32_emms(); }

static inline __m64 attribute((always_inline, nodebug)) _mm_cvtsi32_si64(int __i) { return (__m64)__builtin_ia32_vec_init_v2si(__i, 0); }

static inline int attribute((always_inline, nodebug)) _mm_cvtsi64_si32(__m64 __m) { return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0); }

This looks OK to me, but I'm not really familiar with the MMX extensions. Does anyone know what's going wrong here? Do I need to change my compiler flags?

Regards, Eric Mader



More information about the llvm-dev mailing list