From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16505 invoked by alias); 29 Dec 2009 22:49:11 -0000 Received: (qmail 16465 invoked by uid 48); 29 Dec 2009 22:48:59 -0000 Date: Tue, 29 Dec 2009 22:49:00 -0000 Subject: [Bug target/42549] New: Incorrect 3DNow! code generated X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "debian-gcc at lists dot debian dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2009-12/txt/msg02723.txt.bz2 [forwarded from http://bugs.debian.org/560812] With the following simple test file, the 3DNow! generated code is incorrect, with final _m_pfsub generated as pfsubr %mm0,%mm0, thus producing completely incorrect result. seen with current branches and trunk. Matthias *** main.c #include void Butterfly_3(__m64 *D,__m64 SC,unsigned int IStep,unsigned int Off) { __m64 T,T1,T2; T = _m_pfmul(D[Off+1], SC); T1 = D[Off+0]; D[Off+0] = _m_pfadd(T1, T); D[Off+1] = _m_pfsub(T1, T); } The command line is: gcc -march=athlon -S -O3 main.c The generated code is: *** main.s .file "main.c" .text .p2align 4,,15 .globl Butterfly_3 .type Butterfly_3, @function Butterfly_3: pushl %ebp movl %esp, %ebp movl 8(%ebp), %edx movl 16(%ebp), %ecx leal 8(%edx,%ecx,8), %eax leal (%edx,%ecx,8), %edx pfmul (%eax), %mm0 movq (%edx), %mm1 movq %mm1, %mm2 pfadd %mm0, %mm2 pfsubr %mm0, %mm0 movq %mm2, (%edx) movq %mm0, (%eax) leave ret .size Butterfly_3, .-Butterfly_3 .ident "GCC: (Debian 4.4.2-4) 4.4.2" .section .note.GNU-stack,"",@progbits -- Summary: Incorrect 3DNow! code generated Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: debian-gcc at lists dot debian dot org GCC target triplet: i486-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42549