[cfe-dev] [Clang++] Error with handling casting operator to SIMD types

Chris Lattner clattner at apple.com
Fri May 14 22:55:24 PDT 2010


On May 14, 2010, at 4:57 PM, joel falcou wrote:

> Here is a sample file that compiles correctly on g++ and MSVC:

Fixed in r103864, thanks!

-Chris

> 
> #include <cstdio>
> #include <xmmintrin.h>
> 
> template <class V > 
> struct foo 
> {
>  V m;
>  operator V() const { return m; }
> }; 
> 
> int main()
> {
>  foo <__m128> x =  {{1, 2, 3, 4}};
>  __m128 y = _mm_shuffle_ps(x, x, 0);
> }
> 
> 
> Latets clang (fresh from the SVN) on Linux x86 give the following error:
> 
> src/pipo.cpp:16:14: error: first two arguments to 
> __builtin_shufflevector must be vectors
> __m128 y = _mm_shuffle_ps(x, x, 0);
>            ^~~~~~~~~~~~~~~~~~~~~~~
> In file included from src/pipo.cpp:2:
> /usr/local/lib/clang/2.0/include/xmmintrin.h:726:10: note: instantiated 
> from:
>       (__builtin_shufflevector(a, b, (mask) & 0x3, ((mask) & 0xc) >> 2, \
>        ^
> 1 error generated.
> 
> This error doesn't appear if we use _mm_add_ps or other intrinsics. Same 
> behavior for __m128i and __m128d
> 
> -- 
> ___________________________________________
> Joel Falcou - Assistant Professor
> PARALL Team - LRI - Universite Paris Sud XI
> Tel : (+33)1 69 15 66 35
> 
> 
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev




More information about the cfe-dev mailing list