CMSIS-NN: arm_nnsupportfunctions.h File Reference

| CMSIS-NN Version 1.2.0 CMSIS NN Software Library

- Main Page
- Usage and Description
- Reference

All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
arm_nnsupportfunctions.h File Reference

## Data Structures
union | arm_nnword
| Union for SIMD access of Q31/Q15/Q7 types. More...

## Macros
#define | LEFT_SHIFT(_shift)
#define | RIGHT_SHIFT(_shift)
#define | Q31_MIN
#define | Q31_MAX
#define | NN_ROUND(out_shift)
| macro for adding rounding offset More...

## Enumerations
enum | arm_nn_activation_type
| Struct for specifying activation function types. More...

## Functions
void | arm_q7_to_q15_no_shift (const q7_t *pSrc, q15_t *pDst, uint32_t blockSize)
| Converts the elements of the Q7 vector to Q15 vector without left-shift. More...
void | arm_q7_to_q15_reordered_no_shift (const q7_t *pSrc, q15_t *pDst, uint32_t blockSize)
| Converts the elements of the Q7 vector to reordered Q15 vector without left-shift. More...
void | arm_nn_mult_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, const uint16_t out_shift, uint32_t blockSize)
| Q7 vector multiplication with variable output shifts. More...
void | arm_nn_mult_q7 (q7_t *pSrcA, q7_t *pSrcB, q7_t *pDst, const uint16_t out_shift, uint32_t blockSize)
| Q7 vector multiplication with variable output shifts. More...
__STATIC_FORCEINLINE q31_t | arm_nn_sat_doubling_high_mult (const q31_t m1, const q31_t m2)
| Saturating doubling high multiply. Result matches NEON instruction VQRDMULH. More...
__STATIC_FORCEINLINE q31_t | arm_nn_divide_by_power_of_two (const q31_t dividend, const q31_t exponent)
| Rounding divide by power of two. More...

## Macro Definition Documentation

#define LEFT_SHIFT | ( |  | _shift | ) |

Referenced by arm_depthwise_conv_u8_basic_ver1().

#define NN_ROUND | ( |  | out_shift | ) |

Referenced by arm_convolve_1x1_HWC_q7_fast_nonsquare(), arm_convolve_HWC_q15_basic(), arm_convolve_HWC_q15_fast(), arm_convolve_HWC_q15_fast_nonsquare(), arm_convolve_HWC_q7_basic(), arm_convolve_HWC_q7_basic_nonsquare(), arm_convolve_HWC_q7_fast(), arm_convolve_HWC_q7_fast_nonsquare(), arm_convolve_HWC_q7_RGB(), arm_depthwise_separable_conv_HWC_q7(), arm_depthwise_separable_conv_HWC_q7_nonsquare(), arm_fully_connected_mat_q7_vec_q15(), arm_fully_connected_mat_q7_vec_q15_opt(), arm_fully_connected_q15(), arm_fully_connected_q15_opt(), arm_fully_connected_q7(), arm_fully_connected_q7_opt(), arm_nn_mat_mult_kernel_q7_q15(), arm_nn_mat_mult_kernel_q7_q15_reordered(), arm_nn_mult_q15(), and arm_nn_mult_q7().

#define Q31_MAX

Referenced by arm_nn_sat_doubling_high_mult().

#define Q31_MIN

Referenced by arm_nn_sat_doubling_high_mult().

#define RIGHT_SHIFT | ( |  | _shift | ) |

Referenced by arm_depthwise_conv_u8_basic_ver1().

## Enumeration Type Documentation

enum arm_nn_activation_type

Enumerator
ARM_SIGMOID | Sigmoid activation function
ARM_TANH | Tanh activation function

## Function Documentation

__STATIC_FORCEINLINE q31_t arm_nn_divide_by_power_of_two | ( | const q31_t | dividend,
|  | const q31_t | exponent
| ) |  |

Parameters

  [in] | dividend | - Dividend
  [in] | exponent | - Divisor = power(2, exponent) Range: [0, 31]

Returns
  Rounded result of division. Midpoint is rounded away from zero.

Referenced by arm_depthwise_conv_u8_basic_ver1().

__STATIC_FORCEINLINE q31_t arm_nn_sat_doubling_high_mult | ( | const q31_t | m1,
|  | const q31_t | m2
| ) |  |

Parameters

  [in] | m1 | Multiplicand
  [in] | m2 | Multiplier

Returns
  Result of multiplication.

References Q31_MAX, and Q31_MIN.

Referenced by arm_depthwise_conv_u8_basic_ver1().