From 57331ba9756df043b5c665aa4952a0a7b38799e5 Mon Sep 17 00:00:00 2001 From: Nathan Ringo Date: Sat, 16 Nov 2024 12:38:37 -0600 Subject: Initial commit --- src/util.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/util.h (limited to 'src/util.h') diff --git a/src/util.h b/src/util.h new file mode 100644 index 0000000..569054b --- /dev/null +++ b/src/util.h @@ -0,0 +1,31 @@ +#ifndef IMB3_UTIL_H +#define IMB3_UTIL_H + +#include +#include + +static inline bool likely(bool cond) { return __builtin_expect(cond, true); } +static inline bool unlikely(bool cond) { return __builtin_expect(cond, false); } + +#ifndef NDEBUG +noreturn void assume__failed(const char *file, int line, const char *expr); +#endif // NDEBUG + +static inline void assume__impl(bool cond, const char *file, int line, + const char *expr) { +#ifndef NDEBUG + if (unlikely(!cond)) + assume__failed(file, line, expr); +#endif // NDEBUG + if (unlikely(!cond)) + __builtin_unreachable(); +} + +#define assume(COND) assume__impl(COND, __FILE__, __LINE__, #COND) + +__attribute__((format(printf, 3, 4))) noreturn void +todo__impl(const char *file, int line, const char *fmt, ...); + +#define todo(...) todo__impl(__FILE__, __LINE__, __VA_ARGS__) + +#endif // IMB3_UTIL_H -- cgit v1.2.3