24 #ifndef ARM_COMPUTE_TEST_GEMMLOWP_H
25 #define ARM_COMPUTE_TEST_GEMMLOWP_H
38 template <
typename T1,
typename T2,
typename T3>
39 SimpleTensor<T1>
gemmlowp_matrix_multiply_core(
const SimpleTensor<T2> &a,
const SimpleTensor<T3> &
b, TensorShape shape_c, int32_t a_offset, int32_t b_offset);
41 template <
typename T1,
typename T2,
typename T3 = T2>
42 SimpleTensor<T1>
gemmlowp(
const SimpleTensor<T2> &a,
const SimpleTensor<T3> &
b, TensorShape shape_c);
44 template <
typename TIn,
typename TOut>
45 SimpleTensor<uint8_t>
gemmlowp_quantize_down_scale(
const SimpleTensor<TIn> &in, int32_t result_offset, std::vector<int32_t> result_mult_int, std::vector<int32_t> result_shift);
47 template <
typename TIn,
typename TOut>
48 SimpleTensor<TOut>
gemmlowp_quantize_down_scale(
const SimpleTensor<TIn> &in, int32_t result_offset, std::vector<int32_t> result_mult_int, std::vector<int32_t> result_shift,
49 int32_t min = 0, int32_t max = 0);
51 template <
typename TIn,
typename TOut>
52 SimpleTensor<TOut>
gemmlowp_quantize_down_scale(
const SimpleTensor<TIn> &in,
const SimpleTensor<TIn> &
bias, int32_t result_offset, std::vector<int32_t> result_mult_int,
53 std::vector<int32_t> result_shift, int32_t min = 0, int32_t max = 0);
55 template <
typename TIn,
typename TOut>
57 int32_t result_offset_after_shift, int32_t min = 0, int32_t max = 0);
59 template <
typename TIn,
typename TOut>
61 std::vector<int32_t> result_shift, int32_t result_offset_after_shift, int32_t min = 0, int32_t max = 0);
63 template <
typename TIn,
typename TOut>
65 std::vector<float_t> result_real_multiplier, int32_t result_offset, int32_t min = 0, int32_t max = 0);
67 template <
typename TIn,
typename TOut>
69 std::vector<float_t> result_real_multiplier, int32_t result_offset, int32_t min = 0, int32_t max = 0);