cisco / thor

Thor Video Codec
BSD 2-Clause "Simplified" License
697 stars 101 forks source link

Compilation fails with clang due to intrinsics #6

Closed tmatth closed 8 years ago

tmatth commented 9 years ago

Compiler errors with Debian clang version 3.5.2-1 with target: x86_64-pc-linux-gnu

$>CC=clang make
...
In file included from enc/encode_block.c:41:
In file included from enc/write_bits.h:42:
In file included from common/common_block.h:31:
In file included from common/simd.h:132:
In file included from common/simd/v128_intrinsics_x86.h:32:
common/simd/v64_intrinsics_x86.h:110:12: error: argument to '__builtin_ia32_psrldqi128' must be a constant integer
; (__m128i)__builtin_ia32_psrldqi128(__a, (c)*8); }) : b;
           ^                              ~~~~~
common/simd/v64_intrinsics_x86.h:110:12: error: can't convert between vector and non-scalar values ('void' and 'v64' (aka '__m128i'))
  return c ? __extension__ ({
           ^ ~~~~~~~~~~~~~~~~
common/simd/v64_intrinsics_x86.h:504:12: error: argument to '__builtin_ia32_pslldqi128' must be a constant integer
; (__m128i)__builtin_ia32_pslldqi128(__a, (c)*8); });
           ^                              ~~~~~
common/simd/v64_intrinsics_x86.h:504:10: error: returning 'void' from a function with incompatible result type 'v64' (aka '__m128i')
  return __extension__ ({
         ^~~~~~~~~~~~~~~~
common/simd/v64_intrinsics_x86.h:508:12: error: argument to '__builtin_ia32_psrldqi128' must be a constant integer
; (__m128i)__builtin_ia32_psrldqi128(__a, (c + 8)*8); });
           ^                              ~~~~~~~~~
common/simd/v64_intrinsics_x86.h:508:10: error: returning 'void' from a function with incompatible result type 'v64' (aka '__m128i')
  return __extension__ ({
         ^~~~~~~~~~~~~~~~
In file included from enc/encode_block.c:41:
In file included from enc/write_bits.h:42:
In file included from common/common_block.h:31:
In file included from common/simd.h:132:
common/simd/v128_intrinsics_x86.h:89:12: error: argument to '__builtin_ia32_psrldqi128' must be a constant integer
; (__m128i)__builtin_ia32_psrldqi128(__a, (c)*8); }), __extension__ ({
           ^                              ~~~~~
common/simd/v128_intrinsics_x86.h:89:12: error: argument to '__builtin_ia32_pslldqi128' must be a constant integer
; (__m128i)__builtin_ia32_pslldqi128(__a, (16 - c)*8); })) : b;
           ^                              ~~~~~~~~~~
common/simd/v128_intrinsics_x86.h:89:27: error: passing 'void' to parameter of incompatible type '__m128i' (vector of 2 'long long' values)
  return c ? _mm_or_si128(__extension__ ({
                          ^~~~~~~~~~~~~~~~
/usr/include/clang/3.5.2/include/emmintrin.h:817:22: note: passing argument to parameter '__a' here
_mm_or_si128(__m128i __a, __m128i __b)
                     ^
In file included from enc/encode_block.c:41:
In file included from enc/write_bits.h:42:
In file included from common/common_block.h:31:
In file included from common/simd.h:132:
common/simd/v128_intrinsics_x86.h:528:12: error: argument to '__builtin_ia32_pslldqi128' must be a constant integer
; (__m128i)__builtin_ia32_pslldqi128(__a, (c)*8); });
           ^                              ~~~~~
common/simd/v128_intrinsics_x86.h:528:10: error: returning 'void' from a function with incompatible result type 'v128' (aka '__m128i')
  return __extension__ ({
         ^~~~~~~~~~~~~~~~
common/simd/v128_intrinsics_x86.h:532:12: error: argument to '__builtin_ia32_psrldqi128' must be a constant integer
; (__m128i)__builtin_ia32_psrldqi128(__a, (c)*8); });
           ^                              ~~~~~
common/simd/v128_intrinsics_x86.h:532:10: error: returning 'void' from a function with incompatible result type 'v128' (aka '__m128i')
  return __extension__ ({
         ^~~~~~~~~~~~~~~~
1 warning and 13 errors generated.
Makefile:69: recipe for target 'enc/encode_block.o' failed
make: *** [enc/encode_block.o] Error 1
awakecoding commented 9 years ago

I am experiencing the same issue on OS X

heubergen commented 9 years ago

+1 mac 10.11

thdav commented 8 years ago

WFM now.