L1/L2 friendly PhaseTable[]
authorMarco Costalba <mcostalba@gmail.com>
Sat, 15 Aug 2009 14:18:17 +0000 (15:18 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 15 Aug 2009 15:09:10 +0000 (16:09 +0100)
commite0c47a6cebbea453a1e74ca8ce1f5f8219b9b3f8
tree3d7401d802a613ce90cc0f7e98ce2aadcc50b01e
parentf3d0b76feb2f27e78832950e54702e81901ddbbc
L1/L2 friendly PhaseTable[]

In Movepicker c'tor we access during initialization one of
MainSearchPhaseIndex..QsearchWithoutChecksPhaseIndex globals.

Postpone definition of PhaseTable[] just after them so that
when PhaseTable[] will be accessed later in get_next_move()
it will be already present in L1/L2.

It works like an implicit prefetching of PhaseTable[].

Also shrink PhaseTable[] to fit an L1 cache line of 16 bytes
using uint8_t instead of int.

This apparentely innocuous patch gives an astonish speed
up of 1.6% under MSVC 2010 beta, pgo optimized !

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/movepick.cpp
src/types.h