Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Interesting Assembly (OT)

Author: Graham Laight

Date: 04:16:55 01/04/03

Go up one level in this thread


On January 03, 2003 at 19:42:51, Matt Taylor wrote:

>On January 03, 2003 at 13:37:25, Robert Hyatt wrote:
>
>>On January 03, 2003 at 10:00:51, Graham Laight wrote:
>>
>>
>>Here is a snippet of assembly produced by gcc, for the test
>>
>>if (x[1]==3 || x[1]==7) return(1);
>>else return(0);
>>
>>        movl    x+4, %eax
>>        cmpl    $3, %eax
>>        sete    %dl
>>        cmpl    $7, %eax
>>        sete    %al
>>        orl     %edx, %eax
>>        testl   $1, %eax
>>        sete    %al
>>        movzbl  %al, %eax
>>        ret
><snip>
>
>Very interesting. I tried the same snippet using VC 7 and every optimization I
>could find and got atrocious code:
>
>        movl	x+4, %eax
>        cmpl	$3, %eax
>        je	L73439
>        cmpl	$7, %eax
>        je	L73439
>
>        xorl	%eax, %eax
>        ret
>
>L73439:
>        movl	$1, %eax
>        ret
>
>
>I'm also suprised that GCC missed saving these two cycles:
>        movl    x+4, %eax
>        cmpl    $3, %eax
>        sete    %dl
>        cmpl    $7, %eax
>        sete    %al
>
>        ; Should be using partial registers to avoid stall on P6/P7
>        ;orl     %edx, %eax
>        orb     %dl, %al
>
>        ; Omit (redundant)
>        ;testl   $1, %eax
>        ;sete    %al
>
>        movzbl  %al, %eax
>        ret
>
>I guess there is still room for hand-tweaking assembly code, though it is
>obviously not worthwhile unless you need to start squeezing cycles out of code.
>
>-Matt

Fritz is reputed to use assembly code inserts. It is worthwhile in a chess
program because so much depends on speed in loops (and recursions) which are
repeated a massive number of times.

The downside is that Fritz would be the most difficult program to port to a
non-intel computer. At future world championships, I think that Fritz will have
trouble against competitors who have ported to unix boxes with a large number of
processors.

-g



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.