Author: Dieter Buerssner
Date: 05:38:43 02/19/04
Go up one level in this thread
While looking at your code: int static __inline__ FirstOne(BITBOARD word) { int dummy, dummy2; asm ("movl $-1, %1" "\n\t" "bsr %3, %0" "\n\t" "cmovz %1, %0" "\n\t" "bsr %2, %1" "\n\t" "setnz %b3" "\n\t" "addl $32,%1" "\n\t" "testb %b3, %b3" "\n\t" "cmovz %0, %1" "\n\t" "movl $63, %0" "\n\t" "subl %1, %0" "\n\t" : "=&q" (dummy), "=&q" (dummy2) : "q" ((int) (word>>32)), "q" ((int) word) : "cc"); return (dummy); } This seems risky. You are changing %3 by setnz %b3 without notifying the compiler. It is probably better, to have another output var dummy3, to notify the compiler of this. Perhaps the & for dummy2 is not needed, because the input is already consumed, when you first need it.. Regards, Dieter
This page took 0.01 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.