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.