Re: i686 quirk for AMD Geode

Matteo Croce
2009-11-08T17:47:01Z

On Sun, Nov 8, 2009 at 6:37 PM, Pavel Machek <pavel@ucw.cz> wrote:
> On Fri 2009-11-06 23:18:06, Matteo Croce wrote:
>> On Fri, Nov 6, 2009 at 5:44 PM, H. Peter Anvin <hpa@zytor.com> wrote:
>> > On 11/06/2009 06:59 AM, Matteo Croce wrote:
>> >> indeed it has MMX, MMXEXT and CMOV, just lacks the long NOP instruction (NOPL).
>> >
>> > MMX and MMXEXT are hardly hallmarks of i686, which leaves only cmov.
>> > I'm somewhat wondering about the general value of this patch; is i686
>> > code really that much faster on Geode that it's worth it?
>> >
>> > ? ? ? ?-hpa
>> >
>> > --
>> > H. Peter Anvin, Intel Open Source Technology Center
>> > I work for Intel. ?I don't speak on their behalf.
>> >
>> >
>>
>> yes, I did some test like gzip, bzip2, lame etc and they give more or less
>> the same results of dhrystone
>>
>> root@alix:/usr/src# CFLAGS='-march=i586' ./dry.c
>> Microseconds for one run through Dhrystone:        1.4
>> Dhrystones per Second:                          740741
> ...
>> root@alix:/usr/src# CFLAGS='-march=i686' ./dry.c
>> Trying 5000000 runs through Dhrystone:
>> Microseconds for one run through Dhrystone:        1.2
>> Dhrystones per Second:                          841751
>
> Teach gcc that geodelx exists? No need to break kernel for that... and
> you probably can gain even bigger gains.
>                                                                        Pavel

Gcc 4.4 already knows about it, just sucks at optimizing:

# CFLAGS='-march=geode' ./dry.c
gcc -c -O3 -march=geode ./dry.c -o dry1.o
gcc -DPASS2 -O3 -march=geode ./dry.c dry1.o -o dry2

Dhrystone Benchmark, Version C, Version 2.2
Program compiled without 'register' attribute
Using times(), HZ=100

Trying 5000000 runs through Dhrystone:
Microseconds for one run through Dhrystone: 1.4
Dhrystones per Second: 719424