Initial commit
This commit is contained in:
commit
ce3dd83b9f
1470 changed files with 1054449 additions and 0 deletions
169
Drivers/CMSIS/NN/Include/arm_nn_math_types.h
Normal file
169
Drivers/CMSIS/NN/Include/arm_nn_math_types.h
Normal file
|
@ -0,0 +1,169 @@
|
|||
/******************************************************************************
|
||||
* @file arm_nn_math_types.h
|
||||
* @brief Compiler include and basic types
|
||||
* @version V1.1.0
|
||||
* @date 09 March 2022
|
||||
* Target Processor: Cortex-M
|
||||
******************************************************************************/
|
||||
/*
|
||||
* Copyright (c) 2010-2022 Arm Limited or its affiliates.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
Copied from CMSIS/DSP/arm_math_types.h and modified
|
||||
*/
|
||||
|
||||
#ifndef _ARM_NN_MATH_TYPES_H_
|
||||
|
||||
#define _ARM_NN_MATH_TYPES_H_
|
||||
|
||||
/* DSP inlcude for enum arm_status. */
|
||||
#include "arm_math_types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Compiler specific diagnostic adjustment */
|
||||
#if defined(__CC_ARM)
|
||||
|
||||
#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
|
||||
|
||||
#elif defined(__GNUC__)
|
||||
|
||||
#elif defined(__ICCARM__)
|
||||
|
||||
#elif defined(__TI_ARM__)
|
||||
|
||||
#elif defined(__CSMC__)
|
||||
|
||||
#elif defined(__TASKING__)
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
|
||||
#else
|
||||
#error Unknown compiler
|
||||
#endif
|
||||
|
||||
/* Included for instrinsics definitions */
|
||||
#if defined(_MSC_VER)
|
||||
#include <stdint.h>
|
||||
#ifndef __STATIC_FORCEINLINE
|
||||
#define __STATIC_FORCEINLINE static __forceinline
|
||||
#endif
|
||||
#ifndef __STATIC_INLINE
|
||||
#define __STATIC_INLINE static __inline
|
||||
#endif
|
||||
#ifndef __ALIGNED
|
||||
#define __ALIGNED(x) __declspec(align(x))
|
||||
#endif
|
||||
|
||||
#elif defined(__GNUC_PYTHON__)
|
||||
#include <stdint.h>
|
||||
#ifndef __ALIGNED
|
||||
#define __ALIGNED(x) __attribute__((aligned(x)))
|
||||
#endif
|
||||
#ifndef __STATIC_FORCEINLINE
|
||||
#define __STATIC_FORCEINLINE static inline __attribute__((always_inline))
|
||||
#endif
|
||||
#ifndef __STATIC_INLINE
|
||||
#define __STATIC_INLINE static inline
|
||||
#endif
|
||||
|
||||
#else
|
||||
#include "cmsis_compiler.h"
|
||||
#endif
|
||||
|
||||
#include <float.h>
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
/* evaluate ARM DSP feature */
|
||||
#if (defined(__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
|
||||
#ifndef ARM_MATH_DSP
|
||||
#define ARM_MATH_DSP 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if __ARM_FEATURE_MVE
|
||||
#ifndef ARM_MATH_MVEI
|
||||
#define ARM_MATH_MVEI
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Compiler specific diagnostic adjustment */
|
||||
#if defined(__CC_ARM)
|
||||
|
||||
#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
|
||||
|
||||
#elif defined(__GNUC__)
|
||||
// #pragma GCC diagnostic pop
|
||||
|
||||
#elif defined(__ICCARM__)
|
||||
|
||||
#elif defined(__TI_ARM__)
|
||||
|
||||
#elif defined(__CSMC__)
|
||||
|
||||
#elif defined(__TASKING__)
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
|
||||
#else
|
||||
#error Unknown compiler
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#if __ARM_FEATURE_MVE
|
||||
#include <arm_mve.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Add necessary typedefs
|
||||
*/
|
||||
|
||||
#define NN_Q31_MAX ((q31_t)(0x7FFFFFFFL))
|
||||
#define NN_Q15_MAX ((q15_t)(0x7FFF))
|
||||
#define NN_Q7_MAX ((q7_t)(0x7F))
|
||||
#define NN_Q31_MIN ((q31_t)(0x80000000L))
|
||||
#define NN_Q15_MIN ((q15_t)(0x8000))
|
||||
#define NN_Q7_MIN ((q7_t)(0x80))
|
||||
|
||||
/**
|
||||
* @brief Error status returned by some functions in the library.
|
||||
*/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ARM_CMSIS_NN_SUCCESS = 0, /**< No error */
|
||||
ARM_CMSIS_NN_ARG_ERROR = -1, /**< One or more arguments are incorrect */
|
||||
ARM_CMSIS_NN_NO_IMPL_ERROR = -2, /**< No implementation available */
|
||||
} arm_cmsis_nn_status;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*ifndef _ARM_NN_MATH_TYPES_H_ */
|
56
Drivers/CMSIS/NN/Include/arm_nn_tables.h
Normal file
56
Drivers/CMSIS/NN/Include/arm_nn_tables.h
Normal file
|
@ -0,0 +1,56 @@
|
|||
/* ----------------------------------------------------------------------
|
||||
* Project: CMSIS NN Library
|
||||
* Title: arm_nn_tables.h
|
||||
* Description: Extern declaration for NN tables
|
||||
*
|
||||
* $Date: 17. August 2021
|
||||
* $Revision: V.1.0.2
|
||||
*
|
||||
* Target Processor: Cortex-M cores
|
||||
* -------------------------------------------------------------------- */
|
||||
/*
|
||||
* Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _ARM_NN_TABLES_H
|
||||
#define _ARM_NN_TABLES_H
|
||||
|
||||
#include "arm_nn_math_types.h"
|
||||
|
||||
/**
|
||||
* @brief tables for various activation functions
|
||||
*
|
||||
*/
|
||||
|
||||
extern const q15_t sigmoidTable_q15[256];
|
||||
extern const q7_t sigmoidTable_q7[256];
|
||||
|
||||
extern const q7_t tanhTable_q7[256];
|
||||
extern const q15_t tanhTable_q15[256];
|
||||
|
||||
/**
|
||||
* @brief 2-way tables for various activation functions
|
||||
*
|
||||
* 2-way table, H table for value larger than 1/4
|
||||
* L table for value smaller than 1/4, H table for remaining
|
||||
* We have this only for the q15_t version. It does not make
|
||||
* sense to have it for q7_t type
|
||||
*/
|
||||
extern const q15_t sigmoidHTable_q15[192];
|
||||
extern const q15_t sigmoidLTable_q15[128];
|
||||
|
||||
#endif /* ARM_NN_TABLES_H */
|
137
Drivers/CMSIS/NN/Include/arm_nn_types.h
Normal file
137
Drivers/CMSIS/NN/Include/arm_nn_types.h
Normal file
|
@ -0,0 +1,137 @@
|
|||
/*
|
||||
* Copyright (C) 2020-2022 Arm Limited or its affiliates. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
* Project: CMSIS NN Library
|
||||
* Title: arm_nn_types.h
|
||||
* Description: Public header file to contain the CMSIS-NN structs for the
|
||||
* TensorFlowLite micro compliant functions
|
||||
*
|
||||
* $Date: 22. Februari 2022
|
||||
* $Revision: V.2.1.0
|
||||
*
|
||||
* Target Processor: Cortex-M cores
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#ifndef _ARM_NN_TYPES_H
|
||||
#define _ARM_NN_TYPES_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/** CMSIS-NN object to contain the width and height of a tile */
|
||||
typedef struct
|
||||
{
|
||||
int32_t w; /**< Width */
|
||||
int32_t h; /**< Height */
|
||||
} cmsis_nn_tile;
|
||||
|
||||
/** CMSIS-NN object used for the function context. */
|
||||
typedef struct
|
||||
{
|
||||
void *buf; /**< Pointer to a buffer needed for the optimization */
|
||||
int32_t size; /**< Buffer size */
|
||||
} cmsis_nn_context;
|
||||
|
||||
/** CMSIS-NN object to contain the dimensions of the tensors */
|
||||
typedef struct
|
||||
{
|
||||
int32_t n; /**< Generic dimension to contain either the batch size or output channels.
|
||||
Please refer to the function documentation for more information */
|
||||
int32_t h; /**< Height */
|
||||
int32_t w; /**< Width */
|
||||
int32_t c; /**< Input channels */
|
||||
} cmsis_nn_dims;
|
||||
|
||||
/** CMSIS-NN object for the per-channel quantization parameters */
|
||||
typedef struct
|
||||
{
|
||||
int32_t *multiplier; /**< Multiplier values */
|
||||
int32_t *shift; /**< Shift values */
|
||||
} cmsis_nn_per_channel_quant_params;
|
||||
|
||||
/** CMSIS-NN object for the per-tensor quantization parameters */
|
||||
typedef struct
|
||||
{
|
||||
int32_t multiplier; /**< Multiplier value */
|
||||
int32_t shift; /**< Shift value */
|
||||
} cmsis_nn_per_tensor_quant_params;
|
||||
|
||||
/** CMSIS-NN object for the quantized Relu activation */
|
||||
typedef struct
|
||||
{
|
||||
int32_t min; /**< Min value used to clamp the result */
|
||||
int32_t max; /**< Max value used to clamp the result */
|
||||
} cmsis_nn_activation;
|
||||
|
||||
/** CMSIS-NN object for the convolution layer parameters */
|
||||
typedef struct
|
||||
{
|
||||
int32_t input_offset; /**< Zero value for the input tensor */
|
||||
int32_t output_offset; /**< Zero value for the output tensor */
|
||||
cmsis_nn_tile stride;
|
||||
cmsis_nn_tile padding;
|
||||
cmsis_nn_tile dilation;
|
||||
cmsis_nn_activation activation;
|
||||
} cmsis_nn_conv_params;
|
||||
|
||||
/** CMSIS-NN object for Depthwise convolution layer parameters */
|
||||
typedef struct
|
||||
{
|
||||
int32_t input_offset; /**< Zero value for the input tensor */
|
||||
int32_t output_offset; /**< Zero value for the output tensor */
|
||||
int32_t ch_mult; /**< Channel Multiplier. ch_mult * in_ch = out_ch */
|
||||
cmsis_nn_tile stride;
|
||||
cmsis_nn_tile padding;
|
||||
cmsis_nn_tile dilation;
|
||||
cmsis_nn_activation activation;
|
||||
} cmsis_nn_dw_conv_params;
|
||||
/** CMSIS-NN object for pooling layer parameters */
|
||||
typedef struct
|
||||
{
|
||||
cmsis_nn_tile stride;
|
||||
cmsis_nn_tile padding;
|
||||
cmsis_nn_activation activation;
|
||||
} cmsis_nn_pool_params;
|
||||
|
||||
/** CMSIS-NN object for Fully Connected layer parameters */
|
||||
typedef struct
|
||||
{
|
||||
int32_t input_offset; /**< Zero value for the input tensor */
|
||||
int32_t filter_offset; /**< Zero value for the filter tensor. Not used */
|
||||
int32_t output_offset; /**< Zero value for the output tensor */
|
||||
cmsis_nn_activation activation;
|
||||
} cmsis_nn_fc_params;
|
||||
|
||||
/** CMSIS-NN object for SVDF layer parameters */
|
||||
typedef struct
|
||||
{
|
||||
int32_t rank;
|
||||
int32_t input_offset; /**< Zero value for the input tensor */
|
||||
int32_t output_offset; /**< Zero value for the output tensor */
|
||||
cmsis_nn_activation input_activation;
|
||||
cmsis_nn_activation output_activation;
|
||||
} cmsis_nn_svdf_params;
|
||||
|
||||
/** CMSIS-NN object for Softmax s16 layer parameters */
|
||||
typedef struct
|
||||
{
|
||||
const int16_t *exp_lut;
|
||||
const int16_t *one_by_one_lut;
|
||||
} cmsis_nn_softmax_lut_s16;
|
||||
|
||||
#endif // _ARM_NN_TYPES_H
|
2532
Drivers/CMSIS/NN/Include/arm_nnfunctions.h
Normal file
2532
Drivers/CMSIS/NN/Include/arm_nnfunctions.h
Normal file
File diff suppressed because it is too large
Load diff
1186
Drivers/CMSIS/NN/Include/arm_nnsupportfunctions.h
Normal file
1186
Drivers/CMSIS/NN/Include/arm_nnsupportfunctions.h
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue