#include "tensorflow/lite/kernels/internal/reference/maximum_minimum.h"
#include <stdint.h>
#include "tensorflow/lite/core/c/common.h"
#include "tensorflow/lite/kernels/internal/compatibility.h"
#include "tensorflow/lite/kernels/internal/optimized/optimized_ops.h"
#include "tensorflow/lite/kernels/internal/reference/process_broadcast_shapes.h"
#include "tensorflow/lite/kernels/internal/reference/reference_ops.h"
#include "tensorflow/lite/kernels/internal/tensor.h"
#include "tensorflow/lite/kernels/internal/tensor_ctypes.h"
#include "tensorflow/lite/kernels/internal/types.h"
#include "tensorflow/lite/kernels/kernel_util.h"
#ifdef TFLITE_KERNEL_USE_XNNPACK
#include <algorithm>
#include <array>
#include <limits>
#include "xnnpack.h"
#include "tensorflow/lite/kernels/cpu_backend_context.h"
#include "tensorflow/lite/minimal_logging.h"
#endif
namespace tflite {
namespace ops {
namespace builtin {
namespace maximum_minimum {
enum KernelType { … };
constexpr int kInputTensor1 = …;
constexpr int kInputTensor2 = …;
constexpr int kOutputTensor = …;
struct OpContext { … };
TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { … }
struct MaximumOp { … };
struct MinimumOp { … };
template <KernelType kernel_type, typename data_type, typename op_type>
void TFLiteOperation(TfLiteContext* context, TfLiteNode* node,
const OpContext& op_context) { … }
template <>
void TFLiteOperation<maximum_minimum::kGenericOptimized, int8, MaximumOp>(
TfLiteContext* context, TfLiteNode* node, const OpContext& op_context) { … }
template <>
void TFLiteOperation<maximum_minimum::kGenericOptimized, int8, MinimumOp>(
TfLiteContext* context, TfLiteNode* node, const OpContext& op_context) { … }
template <KernelType kernel_type, typename OpType>
TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { … }
}
TfLiteRegistration* Register_MAXIMUM_REF() { … }
TfLiteRegistration* Register_MAXIMUM_GENERIC_OPT() { … }
TfLiteRegistration* Register_MINIMUM_REF() { … }
TfLiteRegistration* Register_MINIMUM_GENERIC_OPT() { … }
TfLiteRegistration* Register_MAXIMUM() { … }
TfLiteRegistration* Register_MINIMUM() { … }
}
}
}