|
|
|
@ -16,6 +16,7 @@
|
|
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
|
#include "nnacl/op_base.h"
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
@ -28,6 +29,10 @@ extern void IndirectGemmInt8_24x4_dp(int8_t *dst, const int8_t *src, const int8_
|
|
|
|
|
|
|
|
|
|
extern void MatMulOptR4Int8Neon64(const int8_t *a, const int8_t *b, int *dst, int row4, int col4, int deep16,
|
|
|
|
|
const int *input_sum, const int *bias);
|
|
|
|
|
extern void MatmulInt8DpNeon64(const int8_t *a, const int8_t *b, int8_t *dst, int row8, int col8, int deep4,
|
|
|
|
|
const int *a_sums, const int *bias, int act_min, int act_max, int out_zp, int multiplier,
|
|
|
|
|
int left_shift, int right_shift, int row, int col, int stride);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
@ -51,6 +56,7 @@ void MatMulRInt8_optimize_handler(const int8_t *a, const int8_t *b, int8_t *dst,
|
|
|
|
|
size_t stride, const int32_t *input_sum, const int32_t *bias, int32_t *left_shift,
|
|
|
|
|
int32_t *right_shift, int32_t *multiplier, int32_t output_zp, int32_t mini,
|
|
|
|
|
int32_t maxi, bool per_channel) {
|
|
|
|
|
return;
|
|
|
|
|
return MatmulInt8DpNeon64(a, b, dst, UP_ROUND(row, 8), UP_ROUND(col, 8), deep_4, input_sum, bias, mini, maxi,
|
|
|
|
|
output_zp, multiplier[0], left_shift[0], right_shift[0], row, col, col);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|