------- Comment #1 from pinskia at gmail dot com  2008-07-04 21:20 -------
Subject: Re:   New: Wery interesting compilation way (if no -Ox option)

This is expected as we spill all local variables to the stack for -O0.

Sent from my iPhone

On Jul 4, 2008, at 14:04, "msnkipa at mail dot ru" <[EMAIL PROTECTED] 
 > wrote:

> 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
>


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36733

Reply via email to