[Bug middle-end/32708] _mm_cvtsi64x_si128() and _mm_cvtsi128_si64x() inefficient
rguenth at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Tue Jul 10 09:14:00 GMT 2007
------- Comment #1 from rguenth at gcc dot gnu dot org 2007-07-10 09:14 -------
Fixed testcase:
#include <emmintrin.h>
__m128i int2vector(int i) { return _mm_cvtsi32_si128(i); }
int vector2int(__m128i i) { return _mm_cvtsi128_si32(i); }
__m128i long2vector(long long i) { return _mm_cvtsi64x_si128(i); }
long long vector2long(__m128i i) { return _mm_cvtsi128_si64x(i); }
mainline generates:
int2vector:
.LFB525:
pxor %xmm0, %xmm0
movq %rdi, -8(%rsp)
movq -8(%rsp), %xmm1
movss %xmm1, %xmm0
ret
.LFE525:
.size int2vector, .-int2vector
.p2align 4,,15
.globl long2vector
.type long2vector, @function
long2vector:
.LFB527:
movq %rdi, -8(%rsp)
movq -8(%rsp), %mm0
movq2dq %mm0, %xmm0
ret
.LFE527:
.size long2vector, .-long2vector
.p2align 4,,15
.globl vector2long
.type vector2long, @function
vector2long:
.LFB528:
movq %xmm0, -16(%rsp)
movq -16(%rsp), %rax
ret
.LFE528:
.size vector2long, .-vector2long
.p2align 4,,15
.globl vector2int
.type vector2int, @function
vector2int:
.LFB526:
movd %xmm0, -12(%rsp)
movl -12(%rsp), %eax
ret
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu dot
| |org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Keywords| |missed-optimization
Last reconfirmed|0000-00-00 00:00:00 |2007-07-10 09:14:14
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32708
More information about the Gcc-bugs
mailing list