------- Additional Comments From uros at kss-loka dot si  2005-09-27 11:41 
-------
I think that following example wins the contest:

vector float f(void) { return (vector float){ a, a, b, b}; }

gcc -O2 -msse -fomit-frame-pointer

        subl    $28, %esp
        movss   a, %xmm0
        movss   %xmm0, 4(%esp)
        movss   b, %xmm0
        movd    4(%esp), %mm0
        punpckldq       %mm0, %mm0
        movss   %xmm0, 4(%esp)
        movq    %mm0, 16(%esp)
        movd    4(%esp), %mm0
        punpckldq       %mm0, %mm0
        movq    %mm0, 8(%esp)
        movlps  16(%esp), %xmm1
        movhps  8(%esp), %xmm1
        addl    $28, %esp
        movaps  %xmm1, %xmm0
        ret

Note the usage of MMX registers.

-- 


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

Reply via email to