[llvm-commits] CVS: llvm/lib/Target/X86/README-MMX.txt README-SSE.txt X86ISelLowering.cpp X86InstrMMX.td

Chris Lattner clattner at apple.com
Sat Mar 24 16:34:49 PDT 2007


On Mar 22, 2007, at 11:43 AM, Bill Wendling wrote:

> +We should compile this:
> +
> +#include <xmmintrin.h>
> +
> +void foo(__m128i *A, __m128i *B) {
> +  *A = _mm_sll_epi16 (*A, *B);
> +}
> +
> +to:
> +
> +_foo:
> +	subl	$12, %esp
> +	movl	16(%esp), %edx
> +	movl	20(%esp), %eax
> +	movdqa	(%edx), %xmm1
> +	movdqa	(%eax), %xmm0
> +	psllw	%xmm0, %xmm1
> +	movdqa	%xmm1, (%edx)
> +	addl	$12, %esp
> +	ret
> +
> +not:
> +
> +_foo:
> +	movl 8(%esp), %eax
> +	movdqa (%eax), %xmm0
> +	#IMPLICIT_DEF %eax
> +	pinsrw $2, %eax, %xmm0
> +	xorl %ecx, %ecx
> +	pinsrw $3, %ecx, %xmm0
> +	pinsrw $4, %eax, %xmm0
> +	pinsrw $5, %ecx, %xmm0
> +	pinsrw $6, %eax, %xmm0
> +	pinsrw $7, %ecx, %xmm0
> +	movl 4(%esp), %eax
> +	movdqa (%eax), %xmm1
> +	psllw %xmm0, %xmm1
> +	movdqa %xmm1, (%eax)
> +	ret

This looks like a *serious* SSE performance bug, not a missing  
feature.  Bill, can you look into this?  Evan, can you help him if  
needed?

Thanks,

-Chris




More information about the llvm-commits mailing list