X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftypes.h;h=1440f73b44cca14e8513ef58debee582414600f2;hp=eebd69e506c2cb19bd9f2390056dad41a2d383e1;hb=0b944c718631cdbdd8fae46eaf96a099f48ad5a4;hpb=0af24a14455bbcde181fff7632722ce55419991e diff --git a/src/types.h b/src/types.h index eebd69e5..1440f73b 100644 --- a/src/types.h +++ b/src/types.h @@ -2,6 +2,7 @@ Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad + Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -58,14 +59,13 @@ /// _WIN32 Building on Windows (any) /// _WIN64 Building on Windows 64 bit -#if defined(_WIN64) && !defined(IS_64BIT) // Last condition means Makefile is not used -# include // MSVC popcnt and bsfq instrinsics +#if defined(_WIN64) && defined(_MSC_VER) // No Makefile used +# include // Microsoft header for _BitScanForward64() # define IS_64BIT -# define USE_BSFQ #endif -#if defined(USE_POPCNT) && defined(__INTEL_COMPILER) && defined(_MSC_VER) -# include // Intel header for _mm_popcnt_u64() intrinsic +#if defined(USE_POPCNT) && (defined(__INTEL_COMPILER) || defined(_MSC_VER)) +# include // Intel and Microsoft header for _mm_popcnt_u64() #endif #if !defined(NO_PREFETCH) && (defined(__INTEL_COMPILER) || defined(_MSC_VER)) @@ -79,14 +79,6 @@ # define pext(b, m) (0) #endif -#ifdef _MSC_VER -# define FORCE_INLINE __forceinline -#elif defined(__GNUC__) -# define FORCE_INLINE inline __attribute__((always_inline)) -#else -# define FORCE_INLINE inline -#endif - #ifdef USE_POPCNT const bool HasPopCnt = true; #else @@ -192,10 +184,10 @@ enum Value : int { VALUE_MATED_IN_MAX_PLY = -VALUE_MATE + 2 * MAX_PLY, PawnValueMg = 198, PawnValueEg = 258, - KnightValueMg = 817, KnightValueEg = 846, - BishopValueMg = 836, BishopValueEg = 857, - RookValueMg = 1270, RookValueEg = 1278, - QueenValueMg = 2521, QueenValueEg = 2558, + KnightValueMg = 817, KnightValueEg = 896, + BishopValueMg = 836, BishopValueEg = 907, + RookValueMg = 1270, RookValueEg = 1356, + QueenValueMg = 2521, QueenValueEg = 2658, MidgameLimit = 15581, EndgameLimit = 3998 }; @@ -217,15 +209,17 @@ enum Depth { ONE_PLY = 1, - DEPTH_ZERO = 0, - DEPTH_QS_CHECKS = 0, - DEPTH_QS_NO_CHECKS = -1, - DEPTH_QS_RECAPTURES = -5, + DEPTH_ZERO = 0 * ONE_PLY, + DEPTH_QS_CHECKS = 0 * ONE_PLY, + DEPTH_QS_NO_CHECKS = -1 * ONE_PLY, + DEPTH_QS_RECAPTURES = -5 * ONE_PLY, - DEPTH_NONE = -6, - DEPTH_MAX = MAX_PLY + DEPTH_NONE = -6 * ONE_PLY, + DEPTH_MAX = MAX_PLY * ONE_PLY }; +static_assert(!(ONE_PLY & (ONE_PLY - 1)), "ONE_PLY is not a power of 2"); + enum Square { SQ_A1, SQ_B1, SQ_C1, SQ_D1, SQ_E1, SQ_F1, SQ_G1, SQ_H1, SQ_A2, SQ_B2, SQ_C2, SQ_D2, SQ_E2, SQ_F2, SQ_G2, SQ_H2, @@ -362,7 +356,7 @@ inline Piece make_piece(Color c, PieceType pt) { return Piece((c << 3) | pt); } -inline PieceType type_of(Piece pc) { +inline PieceType type_of(Piece pc) { return PieceType(pc & 7); }