|
|
| Bugzilla Link |
1286 |
| Resolution |
FIXED |
| Resolved on |
Feb 22, 2010 12:48 |
| Version |
trunk |
| OS |
MacOS X |
Extended Description
This:
#include <xmmintrin.h>
void foo(__m128i *A, __m128i *B) {
*A = _mm_sll_epi16 (*A, *B);
}
generates this code:
_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 is obviously bad! We should be as good GCC at least.