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.