blob: 3eb3a7c68dabbe5f68f4bfb1ec919c68a185e50b [file] [log] [blame] [edit]
// Copyright (c) Facebook, Inc. and its affiliates.
// All rights reserved.
//
// Copyright 2019 Google LLC
//
// This source code is licensed under the BSD-style license found in the
// LICENSE file in the root directory of this source tree.
#pragma once
#include <inttypes.h>
#include <stdarg.h>
#include <stdlib.h>
#include <xnnpack.h>
#include <xnnpack/node-type.h>
#include <xnnpack/operator-type.h>
#include <xnnpack/ukernel-type.h>
#ifndef XNN_LOG_LEVEL
#error "Undefined XNN_LOG_LEVEL"
#endif
#define XNN_LOG_NONE 0
#define XNN_LOG_FATAL 1
#define XNN_LOG_ERROR 2
#define XNN_LOG_WARNING 3
#define XNN_LOG_INFO 4
#define XNN_LOG_DEBUG 5
#ifdef __cplusplus
extern "C" {
#endif
#if XNN_LOG_LEVEL >= XNN_LOG_DEBUG
void xnn_vlog_debug(const char* format, va_list args);
#endif
#if XNN_LOG_LEVEL >= XNN_LOG_INFO
void xnn_vlog_info(const char* format, va_list args);
#endif
#if XNN_LOG_LEVEL >= XNN_LOG_WARNING
void xnn_vlog_warning(const char* format, va_list args);
#endif
#if XNN_LOG_LEVEL >= XNN_LOG_ERROR
void xnn_vlog_error(const char* format, va_list args);
#endif
#if XNN_LOG_LEVEL >= XNN_LOG_FATAL
void xnn_vlog_fatal(const char* format, va_list args);
#endif
#if XNN_LOG_LEVEL == XNN_LOG_NONE
inline static const char* xnn_datatype_to_string(enum xnn_datatype type) {
return "Unknown";
}
inline static const char* xnn_node_type_to_string(enum xnn_node_type type) {
return "Unknown";
}
#else
const char* xnn_datatype_to_string(enum xnn_datatype type);
const char* xnn_node_type_to_string(enum xnn_node_type type);
#endif
const char* xnn_operator_type_to_string(enum xnn_operator_type type);
const char* xnn_ukernel_type_to_string(enum xnn_ukernel_type type);
#ifdef __cplusplus
} // extern "C"
#endif
#ifndef XNN_LOG_ARGUMENTS_FORMAT
#ifdef __GNUC__
#define XNN_LOG_ARGUMENTS_FORMAT __attribute__((__format__(__printf__, 1, 2)))
#else
#define XNN_LOG_ARGUMENTS_FORMAT
#endif
#endif
XNN_LOG_ARGUMENTS_FORMAT inline static void xnn_log_debug(const char* format, ...) {
#if XNN_LOG_LEVEL >= XNN_LOG_DEBUG
va_list args;
va_start(args, format);
xnn_vlog_debug(format, args);
va_end(args);
#endif
}
XNN_LOG_ARGUMENTS_FORMAT inline static void xnn_log_info(const char* format, ...) {
#if XNN_LOG_LEVEL >= XNN_LOG_INFO
va_list args;
va_start(args, format);
xnn_vlog_info(format, args);
va_end(args);
#endif
}
XNN_LOG_ARGUMENTS_FORMAT inline static void xnn_log_warning(const char* format, ...) {
#if XNN_LOG_LEVEL >= XNN_LOG_WARNING
va_list args;
va_start(args, format);
xnn_vlog_warning(format, args);
va_end(args);
#endif
}
XNN_LOG_ARGUMENTS_FORMAT inline static void xnn_log_error(const char* format, ...) {
#if XNN_LOG_LEVEL >= XNN_LOG_ERROR
va_list args;
va_start(args, format);
xnn_vlog_error(format, args);
va_end(args);
#endif
}
XNN_LOG_ARGUMENTS_FORMAT inline static void xnn_log_fatal(const char* format, ...) {
#if XNN_LOG_LEVEL >= XNN_LOG_FATAL
va_list args;
va_start(args, format);
xnn_vlog_fatal(format, args);
va_end(args);
#endif
abort();
}