This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: gcc 4.0.x: MMX built-ins regression
- From: Uros Bizjak <uros dot bizjak at kss-loka dot si>
- To: Prakash Punnoor <prakash at punnoor dot de>
- Cc: gcc at gcc dot gnu dot org
- Date: Tue, 30 Aug 2005 08:32:40 +0200
- Subject: Re: gcc 4.0.x: MMX built-ins regression
- Reply-to: ubizjak at gmail dot com
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.