[LLVMdev] Help with gcc SSE intrinsics

Dale Johannesen
Fri, 09 Oct 2009 20:47:34 -0000

On Oct 9, 2009, at 1:26 PMPDT, David Greene wrote:

> Ok, I've been looking at this for hours and can't figure it out.  I
> know I'm
> missing something obvious.
>
> I've been spending the past few days beefing up the vector support
> in the C
> Backend.  This should help us debug vector code that's miscompiled.
> But
> gcc doesn't like this fragment:
>
>  ((double *)(&llvm_cbe_r1147))[0u] >
(((llvm_cbe_r1146__BITCAST_TEMPORARY.Int64 = 4ull,
> llvm_cbe_r1146__BITCAST_TEMPORARY .Double)));
>  llvm_cbe_r1148 = __builtin_ia32_movddup(llvm_cbe_r1147);

I don't see __builtin_ia32_movddup defined anywhere in the llvm-gcc
sources.  That's probably it.

> prog.linked.c:10393: error: incompatible types when assigning to
> type 'double
> __vector__'
> from type 'int'
>
>  double  __attribute__((vector_size(16 ))) llvm_cbe_r1147;
>  double  __attribute__((vector_size(16 ))) llvm_cbe_r1148;
>
> Any ideas what gcc is complaining about?  I'm running gcc with -msse3.
>
>                            -Dave
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev