mirror of
https://github.com/openmv/openmv.git
synced 2025-09-26 23:09:13 +08:00
231 lines
5.0 KiB
C
231 lines
5.0 KiB
C
/**
|
|
******************************************************************************
|
|
* @file lite_convert_dqnn.h
|
|
* @author AIS
|
|
* @brief header file of AI platform lite convert kernel datatypes
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* Copyright (c) 2021 STMicroelectronics.
|
|
* All rights reserved.
|
|
*
|
|
* This software is licensed under terms that can be found in the LICENSE file
|
|
* in the root directory of this software component.
|
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
#ifndef LITE_CONVERT_DQNN_H
|
|
#define LITE_CONVERT_DQNN_H
|
|
|
|
|
|
#include "ai_lite_interface.h"
|
|
|
|
/******************************************************************************/
|
|
/* Forward Functions Section */
|
|
/******************************************************************************/
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_is1os8(
|
|
const ai_pbits *p_in,
|
|
ai_i8 *p_out,
|
|
const ai_i32 n_channels,
|
|
const ai_i32 n_pixels,
|
|
const ai_i8 *n_values);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_is1os16(
|
|
const ai_pbits *p_in,
|
|
ai_i16 *p_out,
|
|
const ai_i32 n_channels,
|
|
const ai_i32 n_pixels,
|
|
const ai_i16 *n_values);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_is1of32(
|
|
const ai_pbits *p_in,
|
|
ai_float *p_out,
|
|
const ai_i32 n_channels,
|
|
const ai_i32 n_pixels,
|
|
const ai_float *n_values);
|
|
|
|
|
|
/*!
|
|
* @brief Handles data conversion from 8-bits signed input to signed binary
|
|
* outputs - Lite API version
|
|
* @ingroup lite_pw_dqnn
|
|
*/
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_is8os1(
|
|
const ai_i8 *p_in,
|
|
ai_pbits *p_out,
|
|
const ai_i32 n_channels,
|
|
const ai_i32 n_pixels,
|
|
const ai_i8 zp,
|
|
const ai_i8 pad);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_is16os1(
|
|
const ai_i16 *p_in,
|
|
ai_pbits *p_out,
|
|
const ai_i32 n_channels,
|
|
const ai_i32 n_pixels,
|
|
const ai_i8 zp,
|
|
const ai_i8 pad);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_if32os1(
|
|
const ai_float *p_in,
|
|
ai_pbits *p_out,
|
|
const ai_i32 n_channels,
|
|
const ai_i32 n_pixels,
|
|
const ai_i8 zp,
|
|
const ai_i8 pad);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_integer_if32os8(
|
|
const ai_float *p_in,
|
|
ai_i8 *p_out,
|
|
const ai_u32 size,
|
|
const ai_float out_scale,
|
|
const ai_i8 out_zeropoint);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_integer_if32ou8(
|
|
const ai_float *p_in,
|
|
ai_u8 *p_out,
|
|
const ai_u32 size,
|
|
const ai_float out_scale,
|
|
const ai_u8 out_zeropoint);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_integer_is8of32(
|
|
const ai_i8 *p_in,
|
|
ai_float *p_out,
|
|
const ai_u32 size,
|
|
const ai_float in_scale,
|
|
const ai_i8 in_zeropoint);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_integer_iu8of32(
|
|
const ai_u8 *p_in,
|
|
ai_float *p_out,
|
|
const ai_u32 size,
|
|
const ai_float in_scale,
|
|
const ai_u8 in_zeropoint);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_if32os16(
|
|
const ai_float *p_in,
|
|
ai_i16 *p_out,
|
|
const ai_u32 size,
|
|
const ai_float out_scale,
|
|
const ai_i16 out_zeropoint);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_if32ou16(
|
|
const ai_float *p_in,
|
|
ai_u16 *p_out,
|
|
const ai_u32 size,
|
|
const ai_float out_scale,
|
|
const ai_u16 out_zeropoint);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_is16of32(
|
|
const ai_i16 *p_in,
|
|
ai_float *p_out,
|
|
const ai_u32 size,
|
|
const ai_float in_scale,
|
|
const ai_i16 in_zeropoint);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_iu16of32(
|
|
const ai_u16 *p_in,
|
|
ai_float *p_out,
|
|
const ai_u32 size,
|
|
const ai_float in_scale,
|
|
const ai_u16 in_zeropoint);
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_integer_is8os8(
|
|
const ai_i8 *p_in,
|
|
ai_i8 *p_out,
|
|
const ai_i32 n_elems,
|
|
const ai_float scale_ratio,
|
|
const ai_i16 in_zp,
|
|
const ai_i16 out_zp);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_integer_iu8ou8(
|
|
const ai_u8 *p_in,
|
|
ai_u8 *p_out,
|
|
const ai_i32 n_elems,
|
|
const ai_float scale_ratio,
|
|
const ai_u8 in_zp,
|
|
const ai_u8 out_zp);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_integer_iu8os8(
|
|
const ai_u8 *p_in,
|
|
ai_i8 *p_out,
|
|
const ai_i32 n_elems,
|
|
const ai_float scale_ratio,
|
|
const ai_u8 in_zp,
|
|
const ai_i8 out_zp);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_integer_iu8os8_fast(
|
|
const ai_u8 *p_in,
|
|
ai_i8 *p_out,
|
|
const ai_i32 n_elems,
|
|
const ai_float scale_ratio,
|
|
const ai_u8 in_zp,
|
|
const ai_i8 out_zp);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_integer_is8ou8(
|
|
const ai_i8 *p_in,
|
|
ai_u8 *p_out,
|
|
const ai_i32 n_elems,
|
|
const ai_float scale_ratio,
|
|
const ai_i8 in_zp,
|
|
const ai_u8 out_zp);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_integer_is8ou8_fast(
|
|
const ai_i8 *p_in,
|
|
ai_u8 *p_out,
|
|
const ai_i32 n_elems,
|
|
const ai_float scale_ratio,
|
|
const ai_i8 in_zp,
|
|
const ai_u8 out_zp);
|
|
|
|
|
|
LITE_API_ENTRY
|
|
void forward_lite_node_convert_is16ou16(
|
|
const ai_i16 *p_in,
|
|
ai_u16 *p_out,
|
|
const ai_i32 n_elems,
|
|
const ai_float scale_ratio,
|
|
const ai_i16 in_zp,
|
|
const ai_u16 out_zp);
|
|
|
|
#endif /*LITE_CONVERT_DQNN_H*/
|