namespace {
-/// Version number or dev.
+// Version number or dev.
constexpr std::string_view version = "dev";
-/// Our fancy logging facility. The trick here is to replace cin.rdbuf() and
-/// cout.rdbuf() with two Tie objects that tie cin and cout to a file stream. We
-/// can toggle the logging of std::cout and std:cin at runtime whilst preserving
-/// usual I/O functionality, all without changing a single line of code!
-/// Idea from http://groups.google.com/group/comp.lang.c++/msg/1d941c0f26ea0d81
+// Our fancy logging facility. The trick here is to replace cin.rdbuf() and
+// cout.rdbuf() with two Tie objects that tie cin and cout to a file stream. We
+// can toggle the logging of std::cout and std:cin at runtime whilst preserving
+// usual I/O functionality, all without changing a single line of code!
+// Idea from http://groups.google.com/group/comp.lang.c++/msg/1d941c0f26ea0d81
struct Tie: public std::streambuf { // MSVC requires split streambuf for cin and cout
} // namespace
-/// engine_info() returns the full name of the current Stockfish version.
-/// For local dev compiles we try to append the commit sha and commit date
-/// from git if that fails only the local compilation date is set and "nogit" is specified:
-/// Stockfish dev-YYYYMMDD-SHA
-/// or
-/// Stockfish dev-YYYYMMDD-nogit
-///
-/// For releases (non dev builds) we only include the version number:
-/// Stockfish version
+// engine_info() returns the full name of the current Stockfish version.
+// For local dev compiles we try to append the commit sha and commit date
+// from git if that fails only the local compilation date is set and "nogit" is specified:
+// Stockfish dev-YYYYMMDD-SHA
+// or
+// Stockfish dev-YYYYMMDD-nogit
+//
+// For releases (non-dev builds) we only include the version number:
+// Stockfish version
std::string engine_info(bool to_uci) {
std::stringstream ss;
}
-/// compiler_info() returns a string trying to describe the compiler we use
+// compiler_info() returns a string trying to describe the compiler we use
std::string compiler_info() {
#define make_version_string(major, minor, patch) stringify(major) "." stringify(minor) "." stringify(patch)
-/// Predefined macros hell:
-///
-/// __GNUC__ Compiler is GCC, Clang or ICX
-/// __clang__ Compiler is Clang or ICX
-/// __INTEL_LLVM_COMPILER Compiler is ICX
-/// _MSC_VER Compiler is MSVC
-/// _WIN32 Building on Windows (any)
-/// _WIN64 Building on Windows 64 bit
+// Predefined macros hell:
+//
+// __GNUC__ Compiler is GCC, Clang or ICX
+// __clang__ Compiler is Clang or ICX
+// __INTEL_LLVM_COMPILER Compiler is ICX
+// _MSC_VER Compiler is MSVC
+// _WIN32 Building on Windows (any)
+// _WIN64 Building on Windows 64 bit
std::string compiler = "\nCompiled by : ";
}
-/// Debug functions used mainly to collect run-time statistics
+// Debug functions used mainly to collect run-time statistics
constexpr int MaxDebugSlots = 32;
namespace {
}
-/// Used to serialize access to std::cout to avoid multiple threads writing at
-/// the same time.
+// Used to serialize access to std::cout to avoid multiple threads writing at
+// the same time.
std::ostream& operator<<(std::ostream& os, SyncCout sc) {
}
-/// Trampoline helper to avoid moving Logger to misc.h
+// Trampoline helper to avoid moving Logger to misc.h
void start_logger(const std::string& fname) { Logger::start(fname); }
-/// prefetch() preloads the given address in L1/L2 cache. This is a non-blocking
-/// function that doesn't stall the CPU waiting for data to be loaded from memory,
-/// which can be quite slow.
+// prefetch() preloads the given address in L1/L2 cache. This is a non-blocking
+// function that doesn't stall the CPU waiting for data to be loaded from memory,
+// which can be quite slow.
#ifdef NO_PREFETCH
void prefetch(void*) {}
#endif
-/// std_aligned_alloc() is our wrapper for systems where the c++17 implementation
-/// does not guarantee the availability of aligned_alloc(). Memory allocated with
-/// std_aligned_alloc() must be freed with std_aligned_free().
+// std_aligned_alloc() is our wrapper for systems where the c++17 implementation
+// does not guarantee the availability of aligned_alloc(). Memory allocated with
+// std_aligned_alloc() must be freed with std_aligned_free().
void* std_aligned_alloc(size_t alignment, size_t size) {
#endif
}
-/// aligned_large_pages_alloc() will return suitably aligned memory, if possible using large pages.
+// aligned_large_pages_alloc() will return suitably aligned memory, if possible using large pages.
#if defined(_WIN32)
// Try to allocate large pages
void* mem = aligned_large_pages_alloc_windows(allocSize);
- // Fall back to regular, page aligned, allocation if necessary
+ // Fall back to regular, page-aligned, allocation if necessary
if (!mem)
mem = VirtualAlloc(nullptr, allocSize, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
#endif
-/// aligned_large_pages_free() will free the previously allocated ttmem
+// aligned_large_pages_free() will free the previously allocated ttmem
#if defined(_WIN32)
#else
-/// best_node() retrieves logical processor information using Windows specific
-/// API and returns the best node id for the thread with index idx. Original
-/// code from Texel by Peter Ă–sterlund.
+// best_node() retrieves logical processor information using Windows specific
+// API and returns the best node id for the thread with index idx. Original
+// code from Texel by Peter Ă–sterlund.
static int best_node(size_t idx) {
std::vector<int> groups;
- // Run as many threads as possible on the same node until core limit is
- // reached, then move on filling the next node.
+ // Run as many threads as possible on the same node until the core limit is
+ // reached, then move on to filling the next node.
for (int n = 0; n < nodes; n++)
for (int i = 0; i < cores / nodes; i++)
groups.push_back(n);
}
-/// bindThisThread() set the group affinity of the current thread
+// bindThisThread() sets the group affinity of the current thread
void bindThisThread(size_t idx) {
pathSeparator = "\\";
#ifdef _MSC_VER
// Under windows argv[0] may not have the extension. Also _get_pgmptr() had
- // issues in some windows 10 versions, so check returned values carefully.
+ // issues in some Windows 10 versions, so check returned values carefully.
char* pgmptr = nullptr;
if (!_get_pgmptr(&pgmptr) && pgmptr != nullptr && *pgmptr)
argv0 = pgmptr;