This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/36733] New: Wery interesting compilation way (if no -Ox option)
- From: "msnkipa at mail dot ru" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 4 Jul 2008 21:04:16 -0000
- Subject: [Bug c/36733] New: Wery interesting compilation way (if no -Ox option)
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
So for code:
double d1 = 0;
double d2 = 1;
double d3 = 1.01;
__m128d pd, pd2;
pd = _mm_loadh_pd(pd, &d1);
pd = _mm_loadl_pd(pd, &d2);
pd2 = _mm_loadh_pd(pd2, &d3);
pd2 = _mm_loadl_pd(pd2, &d3);
for(long i=0; i<10000000000; i++){
pd = _mm_mul_pd(pd, pd2);
};
_mm_storeh_pd(&d1, pd);
_mm_storel_pd(&d2, pd);
gcc 4.3 make such assembler code
movq %rax, -336(%rbp)
movabsq $4607182418800017408, %rax
movq %rax, -344(%rbp)
movabsq $4607227454796291113, %rax
movq %rax, -352(%rbp)
movapd -320(%rbp), %xmm0
movapd %xmm0, -256(%rbp)
leaq -336(%rbp), %rax
movq %rax, -264(%rbp)
movapd -256(%rbp), %xmm0
movq -264(%rbp), %rax
movhpd (%rax), %xmm0
movapd %xmm0, -320(%rbp)
movapd -320(%rbp), %xmm0
movapd %xmm0, -224(%rbp)
leaq -344(%rbp), %rax
movq %rax, -232(%rbp)
movapd -224(%rbp), %xmm0
movq -232(%rbp), %rax
movlpd (%rax), %xmm0
movapd %xmm0, -320(%rbp)
movapd -304(%rbp), %xmm0
movapd %xmm0, -192(%rbp)
leaq -352(%rbp), %rax
movq %rax, -200(%rbp)
movapd -192(%rbp), %xmm0
movq -200(%rbp), %rax
movhpd (%rax), %xmm0
movapd %xmm0, -304(%rbp)
movapd -304(%rbp), %xmm0
movapd %xmm0, -160(%rbp)
leaq -352(%rbp), %rax
movq %rax, -168(%rbp)
movapd -160(%rbp), %xmm0
movq -168(%rbp), %rax
movlpd (%rax), %xmm0
movapd %xmm0, -304(%rbp)
movq $0, -272(%rbp)
jmp .L12
.L13:
movapd -320(%rbp), %xmm0
movapd %xmm0, -128(%rbp)
movapd -304(%rbp), %xmm0
movapd %xmm0, -144(%rbp)
movapd -144(%rbp), %xmm1
movapd -128(%rbp), %xmm0
mulpd %xmm1, %xmm0
movapd %xmm0, -320(%rbp)
addq $1, -272(%rbp)
.L12:
movabsq $9999999999, %rax
cmpq %rax, -272(%rbp)
jle .L13
leaq -336(%rbp), %rax
movq %rax, -88(%rbp)
movapd -320(%rbp), %xmm0
movapd %xmm0, -112(%rbp)
movapd -112(%rbp), %xmm0
unpckhpd %xmm0, %xmm0
movq -88(%rbp), %rax
movsd %xmm0, (%rax)
leaq -344(%rbp), %rax
movq %rax, -56(%rbp)
movapd -320(%rbp), %xmm0
movapd %xmm0, -80(%rbp)
movq -56(%rbp), %rax
movq %rax, -24(%rbp)
movapd -80(%rbp), %xmm0
movapd %xmm0, -48(%rbp)
movapd -48(%rbp), %xmm0
movapd %xmm0, %xmm0
Is it a Joke? For my opinion it is very strange! Intristic fuctions works very
slow without optimization, and I think it is a problem.
--
Summary: Wery interesting compilation way (if no -Ox option)
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: msnkipa at mail dot ru
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36733