From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14860 invoked by alias); 21 Jun 2004 17:18:13 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 14853 invoked by uid 48); 21 Jun 2004 17:18:12 -0000 Date: Mon, 21 Jun 2004 17:18:00 -0000 Message-ID: <20040621171812.14852.qmail@sourceware.org> From: "djp at volny dot cz" To: gcc-bugs@gcc.gnu.org In-Reply-To: <20040621114206.16111.djp@volny.cz> References: <20040621114206.16111.djp@volny.cz> Reply-To: gcc-bugzilla@gcc.gnu.org Subject: [Bug target/16111] generates invalid SSE movdqa instruction (instead of movaps) X-Bugzilla-Reason: CC X-SW-Source: 2004-06/txt/msg02646.txt.bz2 List-Id: ------- Additional Comments From djp at volny dot cz 2004-06-21 17:18 ------- did you run the test on amd or intel? my results and more info: GCC 3.4.0 (mainline) /opt/gcc-3.4.0/bin/g++-3.4 -v -save-temps -O3 -msse -mfpmath=sse -fomit-frame-pointer -finline-limit=2000 "test.cxx" -o "test" -L/opt/gcc-3.4.0/lib ==> LD_LIBRARY_PATH="/opt/gcc-3.3.3/lib:$LD_LIBRARY_PATH" ./test extents (-27.500000 -27.500000 -0.000000 nan) GCC 3.3.3 (mainline) /opt/gcc-3.3.3/bin/g++-3.3 -v -save-temps -O3 -msse -mfpmath=sse -fomit-frame-pointer -finline-limit=2000 "test.cxx" -o "test" -L/opt/gcc-3.3.3/lib ==> LD_LIBRARY_PATH="/opt/gcc-3.4.0/lib:$LD_LIBRARY_PATH" ./test extents (-27.500000 -27.500000 -0.000000 -0.000000) root@vox:/proc# cat cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 6 model : 6 model name : AMD Athlon(tm) XP 2100+ stepping : 2 cpu MHz : 1737.340 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow bogomips : 3432.44 test.s from 3.4.0 ----------------- .type _Z3fooPfS_, @function _Z3fooPfS_: .LFB312: subl $4, %esp .LCFI0: movl 8(%esp), %eax movl $0x80000000, (%esp) movl 12(%esp), %edx movss (%esp), %xmm1 movups (%eax), %xmm6 movups (%edx), %xmm5 shufps $0, %xmm1, %xmm1 movdqa %xmm1, %xmm4 andnps %xmm6, %xmm4 xorps %xmm5, %xmm1 movaps %xmm4, %xmm0 mulps %xmm1, %xmm0 movhlps %xmm0, %xmm3 addps %xmm3, %xmm0 movaps %xmm0, %xmm2 shufps $1, %xmm0, %xmm2 addss %xmm2, %xmm0 movups %xmm0, (%eax) movups %xmm1, (%edx) popl %eax ret test.s from 3.3.3 ----------------- .type _Z3fooPfS_, @function _Z3fooPfS_: .LFB314: subl $4, %esp .LCFI0: movl 8(%esp), %edx movl $0x80000000, (%esp) movl 12(%esp), %ecx movss (%esp), %xmm5 movups (%edx), %xmm4 movups (%ecx), %xmm6 shufps $0, %xmm5, %xmm5 movaps %xmm5, %xmm2 andnps %xmm4, %xmm2 xorps %xmm6, %xmm5 movaps %xmm2, %xmm1 mulps %xmm5, %xmm1 movhlps %xmm1, %xmm3 addps %xmm3, %xmm1 movaps %xmm1, %xmm0 shufps $1, %xmm1, %xmm0 addss %xmm0, %xmm1 movups %xmm1, (%edx) movups %xmm5, (%ecx) popl %eax ret As you can see, the ONLY difference is movdqa %xmm1, %xmm4 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16111