--- Comment #13 from hubicka at gcc dot gnu dot org 2006-05-09 11:59
---
The simplified testcase seems to be solved now (on mainline and Athlon):
[EMAIL PROTECTED]:/aux/hubicka/gcc/build/gcc$ gcc-2.95 -O3 t.C -march=i686
[EMAIL PROTECTED]:/aux/hubicka/gcc/build/gcc$ ./a.out
[EMAIL PROTECTED]:/aux/hubicka/gcc/build/gcc$ time ./a.out
real0m1.809s
user0m1.798s
sys 0m0.000s
[EMAIL PROTECTED]:/aux/hubicka/gcc/build/gcc$ time ./a.out
real0m1.841s
user0m1.796s
sys 0m0.002s
[EMAIL PROTECTED]:/aux/hubicka/gcc/build/gcc$ /aux/hubicka/egcs-mainline/bin/g++
-O3 t.C -static -march=i686
[EMAIL PROTECTED]:/aux/hubicka/gcc/build/gcc$ time ./a.out
real0m1.713s
user0m1.676s
sys 0m0.003s
[EMAIL PROTECTED]:/aux/hubicka/gcc/build/gcc$ time ./a.out
real0m1.719s
user0m1.700s
sys 0m0.000s
[EMAIL PROTECTED]:/aux/hubicka/gcc/build/gcc$ /aux/hubicka/egcs-mainline/bin/g++
-O3 t.C -static -march=athlon
[EMAIL PROTECTED]:/aux/hubicka/gcc/build/gcc$ time ./a.out
real0m1.353s
user0m1.347s
sys 0m0.002s
[EMAIL PROTECTED]:/aux/hubicka/gcc/build/gcc$
The assembly looks comparable to 2.95 one (instruction count wise, form is
closer to 4.0)
.L29:
andl$-16, %edx
cmpb$80, %dl
jne .L27
decl%ecx
je .L28
.L18:
movl$86, %edx
movb$86, b_rec
movl%edx, %eax
andl$7, %eax
cmpb$6, %al
je .L29
.L27:
callabort
Since no direct testcase for code in comment 5 is attached, can I ask if the
problem presist with generic model? It looks like the benchmark was executed
on different core than i686 but compiled with i686. With generic we should now
assume the partial memory stores and thus avoid the integer moves by halves of
destination.
Honza
--
hubicka at gcc dot gnu dot org changed:
What|Removed |Added
Status|NEW |WAITING
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22563