namespace Eval::NNUE {
- const uint32_t kpp_board_index[PIECE_NB][COLOR_NB] = {
+ constexpr uint32_t kpp_board_index[PIECE_NB][COLOR_NB] = {
// convention: W - us, B - them
// viewed from other side, W and B are reversed
{ PS_NONE, PS_NONE },
{ PS_W_BISHOP, PS_B_BISHOP },
{ PS_W_ROOK, PS_B_ROOK },
{ PS_W_QUEEN, PS_B_QUEEN },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
{ PS_W_KING, PS_B_KING },
{ PS_NONE, PS_NONE },
{ PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
{ PS_B_PAWN, PS_W_PAWN },
{ PS_B_KNIGHT, PS_W_KNIGHT },
{ PS_B_BISHOP, PS_W_BISHOP },
{ PS_B_ROOK, PS_W_ROOK },
{ PS_B_QUEEN, PS_W_QUEEN },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
{ PS_B_KING, PS_W_KING },
- { PS_NONE, PS_NONE }
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
+ { PS_NONE, PS_NONE },
};
+ static_assert(kpp_board_index[make_piece(WHITE, PAWN)][WHITE] == PS_W_PAWN);
+ static_assert(kpp_board_index[make_piece(WHITE, KING)][WHITE] == PS_W_KING);
+ static_assert(kpp_board_index[make_piece(BLACK, PAWN)][WHITE] == PS_B_PAWN);
+ static_assert(kpp_board_index[make_piece(BLACK, KING)][WHITE] == PS_B_KING);
// Input feature converter
LargePagePtr<FeatureTransformer> feature_transformer;