Search found 1647 matches

by Gerd Isenberg
Sat May 30, 2020 4:21 pm
Forum: Computer Chess Club: Programming and Technical Discussions
Topic: Ryzen 2 and BMI2?
Replies: 41
Views: 7199

Re: Ryzen 2 and BMI2?

I tried to emulate PEXT in software and that runs faster as the native CPU instruction. Do you have a fast implementation that you'd want to make public domain? https://www.chessprogramming.org/BMI2 The serial implementation of PEXT and PDEP look quite similar. Very well possible, but I'm sure I di...
by Gerd Isenberg
Sat May 30, 2020 9:31 am
Forum: Computer Chess Club: General Topics
Topic: Marcel van Kervinck
Replies: 18
Views: 1662

Re: Marcel van Kervinck

Hi, May 25, 2020 Marcel van Kervinck passed away. Marcel was the developer of Rookie, MSCP and Floyd. From December 2012 until November 2014, he was a member of the board of the CSVN (Dutch computer chess association). There will be a virtual funeral this saturday. Please send me an e-mail if you w...
by Gerd Isenberg
Sat May 30, 2020 8:00 am
Forum: Computer Chess Club: Programming and Technical Discussions
Topic: Ryzen 2 and BMI2?
Replies: 41
Views: 7199

Re: Ryzen 2 and BMI2?

Gian-Carlo Pascutto wrote:
Fri May 29, 2020 8:40 pm
I tried to emulate PEXT in software and that runs faster as the native CPU instruction.
Do you have a fast implementation that you'd want to make public domain?
https://www.chessprogramming.org/BMI2

The serial implementation of PEXT and PDEP look quite similar.
by Gerd Isenberg
Sun May 10, 2020 11:36 am
Forum: Computer Chess Club: Programming and Technical Discussions
Topic: Generating all the moves on a board
Replies: 2
Views: 599

Re: Generating all the moves on a board

Move enumeration: 22678 per side considering target square occupancy and disjoint capture target piece. See
https://www.chessprogramming.org/Encodi ... numeration
by Gerd Isenberg
Tue Mar 10, 2020 8:16 pm
Forum: Computer Chess Club: Programming and Technical Discussions
Topic: Removing Large Arrays
Replies: 36
Views: 6037

Re: Removing Large Arrays

Often, I test the speed of different function methods. The results indicate the fixed array PushToEdges[] seems to be faster on average: 10 second test ... PushToEdges 16519006400 push_to_edge 16610155136 In a real chess program with many instances fighting for the caches, things may turn out diffe...
by Gerd Isenberg
Thu Feb 27, 2020 8:57 pm
Forum: Computer Chess Club: Programming and Technical Discussions
Topic: Don't understand CarryRippler
Replies: 14
Views: 1906

Re: Don't understand CarryRippler

Unary minus operator of unsigned integers (short, long) in C/C++ is defined as two's complement, which is the increment of the ones' complement. If you add a value and its ones' complement, the sum has all bits set without any intermediate bitwise overflows. If you further add 1, an overflow occurs ...
by Gerd Isenberg
Thu Feb 20, 2020 9:32 am
Forum: Computer Chess Club: Programming and Technical Discussions
Topic: Zobrist key independence
Replies: 38
Views: 4489

Re: Zobrist key independence

Do you remember whether he discussed methods to reduce collisions by improving key independence? Or was it just about measuring the frequency of collisions within real chess trees? Tony Warnock, Burton Wendroff (1988) . Search Tables in Computer Chess . ICCA Journal, Vol. 11, No. 1 Its about BCH Ha...
by Gerd Isenberg
Mon Feb 17, 2020 4:58 pm
Forum: Computer Chess Club: Programming and Technical Discussions
Topic: Split Index Super Set Yielding (SISSY) Bitboards
Replies: 45
Views: 5749

Re: Split Index Super Set Yielding (SISSY) Bitboards

You are right, there is no r8h (... r15h), only r8l (Intel style) or r8b (MASM STYLE), so one has to use rax, rbx, rcx, rdx with appropriate l/h byte partial registers for that purpose, and maybe ror reg64 16 instead of shift - or better trust the compiler. https://software.intel.com/en-us/articles/...
by Gerd Isenberg
Mon Feb 17, 2020 10:32 am
Forum: Computer Chess Club: Programming and Technical Discussions
Topic: Split Index Super Set Yielding (SISSY) Bitboards
Replies: 45
Views: 5749

Re: Split Index Super Set Yielding (SISSY) Bitboards

Turns out that a union is of benefit after all. _DATA SEGMENT bbs STRUCT r1 BYTE ? r2 BYTE ? r3 BYTE ? r4 BYTE ? r5 BYTE ? r6 BYTE ? r7 BYTE ? r8 BYTE ? bbs ENDS bbu UNION bbs<> b64 QWORD ? bbu ENDS occ bbu<> _DATA ENDS _TEXT SEGMENT RayAttacks PROC ; rcx = sq ; rdx = address of rss ; r8 = occ shl ...
by Gerd Isenberg
Sat Feb 15, 2020 8:07 pm
Forum: Computer Chess Club: Programming and Technical Discussions
Topic: Split Index Super Set Yielding (SISSY) Bitboards
Replies: 45
Views: 5749

Re: Split Index Super Set Yielding (SISSY) Bitboards

Hey Martin and Gerd of course there is the possibility that handwritten assembler would be a benefit. It seems that x86-64 Clang -O3 is hard to beat. The union version prepares many registers with some shift at the beginning to and with 255 aka 16320 = 255 << 6. The explicit shift/and version uses ...