[Bug target/16111] generates invalid SSE movdqa instruction (instead of movaps)

djp at volny dot cz gcc-bugzilla@gcc.gnu.org
Mon Jun 21 17:18:00 GMT 2004


------- 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



More information about the Gcc-bugs mailing list