29 lines
983 B
C
29 lines
983 B
C
#pragma once
|
|
|
|
/// Include file for portable usage of __attribute__
|
|
|
|
#ifdef __MINGW32__
|
|
#define ATTRIBUTE_FORMAT_PRINTF(stringIndex, firstToCheck) __attribute__((format(__MINGW_PRINTF_FORMAT, stringIndex, firstToCheck)))
|
|
#elif defined(__GNUC__)
|
|
#define ATTRIBUTE_FORMAT_PRINTF(stringIndex, firstToCheck) __attribute__((format(printf, stringIndex, firstToCheck)))
|
|
#else
|
|
#define ATTRIBUTE_FORMAT_PRINTF(stringIndex, firstToCheck)
|
|
#endif
|
|
|
|
#ifdef __GNUC__
|
|
|
|
#define ATTRIBUTE_HOT __attribute__((hot))
|
|
#define ATTRIBUTE_OPTIMIZE(optString) __attribute__((optimize(optString)))
|
|
#define LIKELY(condition) __builtin_expect((condition), 1)
|
|
#define UNLIKELY(condition) __builtin_expect((condition), 0)
|
|
#define PREFETCH(address, isWrite, locality) __builtin_prefetch((address), (isWrite), (locality))
|
|
|
|
#else
|
|
|
|
#define ATTRIBUTE_HOT
|
|
#define ATTRIBUTE_OPTIMIZE(optString)
|
|
#define LIKELY(condition) condition
|
|
#define UNLIKELY(condition) condition
|
|
#define PREFETCH(address, isWrite, locality)
|
|
|
|
#endif
|