Hello!

> I am using MMX built-ins and gcc-4.0-20050825 and I am experiencing generation
> of uneeded movq (at least I guess so, I am no assembler pro). I don't know
> which gcc snapshot introduced this, but a I know that some pre-release gcc 4.0
> didn't show this bad behaviour. (It's been some time I played with this...)

> Just shout, if you need anything else.

Yes, a bugreport would be nice. Please look at http://gcc.gnu.org/bugs.html .

I have extracted a testcase from your source/assembly mix and with
'gcc version 4.1.0 20050716 (experimental)' the code looks OK to me:

gcc -O3 -march=athlon-xp:

MixAudio16_MMX_T:
        pushl   %ebp
        movl    %esp, %ebp
        movl    8(%ebp), %eax
        movq    (%eax), %mm3
        movl    m.1485, %eax
        movq    %mm3, %mm4
        movq    (%eax), %mm1
        movq    %mm1, %mm0
        movq    (%eax), %mm2
        movl    12(%ebp), %eax
        pand    %mm3, %mm0
        pcmpeqw %mm2, %mm0
        punpcklwd       %mm0, %mm4
        punpckhwd       %mm0, %mm3
        movq    (%eax), %mm0
        pand    %mm0, %mm1
        movl    16(%ebp), %eax
        pcmpeqw %mm1, %mm2
        movq    %mm0, %mm1
        punpckhwd       %mm2, %mm0
        punpcklwd       %mm2, %mm1
        paddd   %mm3, %mm0
        paddd   %mm4, %mm1
        packssdw        %mm0, %mm1
        movq    %mm1, (%eax)
        femms
        leave
        ret

(Sorry, I have no gcc 4.0.x here.)

Uros.

Reply via email to