9#define _DC_CPU_FEATURES(F) \
33#define _DC_FEATURE_DECLARE(name, _) dc_cpu_feature name;
35#undef _DC_FEATURE_DECLARE
40#define _DC_FEATURE_DETECT(feature_name, runtime_name) \
41 .feature_name = {.name = runtime_name, \
42 .compiled_with = DC_IS_DEFINED(__##feature_name##__), \
43 .runtime_supported = (bool)__builtin_cpu_supports(runtime_name)},
45#undef _DC_FEATURE_DETECT
52 fprintf(
stream,
"| %-12s | %-8s | %-8s |\n",
"feature",
"compiler",
"runtime");
53 fprintf(
stream,
"| %-12s | %-8s | %-8s |\n",
"------------",
"--------",
"--------");
54#define _DC_FEATURE_ROW(feature, _) \
55 fprintf(stream, "| %-12s | %-8s | %-8s |\n", self->feature.name, \
56 self->feature.compiled_with ? "yes" : "no", \
57 self->feature.runtime_supported ? "yes" : "no");
static dc_cpu_features dc_cpu_features_get()
#define _DC_FEATURE_DETECT(feature_name, runtime_name)
static DC_PUBLIC void dc_cpu_features_dump(FILE *stream)
#define _DC_FEATURE_ROW(feature, _)
static DC_PUBLIC void dc_cpu_features_debug(dc_cpu_features const *self, dc_debug_fmt fmt, FILE *stream)
#define _DC_CPU_FEATURES(F)
#define _DC_FEATURE_DECLARE(name, _)
static DC_PUBLIC dc_debug_fmt dc_debug_fmt_new()
bool const runtime_supported
Debug format helpers for debug printin data structures.
static DC_PUBLIC FILE * stream(SELF *self)