blob: 1bc6364edd0927f38da6256fd7ab7ff177e913c9 [file] [log] [blame]
/* Copyright (c) 2022 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef SUBSYS_DSP_CMSIS_PUBLIC_ZDSP_BACKEND_F16_H_
#define SUBSYS_DSP_CMSIS_PUBLIC_ZDSP_BACKEND_F16_H_
#ifdef __cplusplus
extern "C" {
#endif
/* This include MUST be done before arm_math.h so we can let the arch specific
* logic set up the right #define values for arm_math.h
*/
#include <zephyr/kernel.h>
#include <arm_math_f16.h>
static inline void zdsp_mult_f16(const float16_t *src_a, const float16_t *src_b, float16_t *dst,
uint32_t block_size)
{
arm_mult_f16(src_a, src_b, dst, block_size);
}
static inline void zdsp_add_f16(const float16_t *src_a, const float16_t *src_b, float16_t *dst,
uint32_t block_size)
{
arm_add_f16(src_a, src_b, dst, block_size);
}
static inline void zdsp_sub_f16(const float16_t *src_a, const float16_t *src_b, float16_t *dst,
uint32_t block_size)
{
arm_sub_f16(src_a, src_b, dst, block_size);
}
static inline void zdsp_scale_f16(const float16_t *src, float16_t scale, float16_t *dst,
uint32_t block_size)
{
arm_scale_f16(src, scale, dst, block_size);
}
static inline void zdsp_abs_f16(const float16_t *src, float16_t *dst, uint32_t block_size)
{
arm_abs_f16(src, dst, block_size);
}
static inline void zdsp_dot_prod_f16(const float16_t *src_a, const float16_t *src_b,
uint32_t block_size, float16_t *result)
{
arm_dot_prod_f16(src_a, src_b, block_size, result);
}
static inline void zdsp_offset_f16(const float16_t *src, float16_t offset, float16_t *dst,
uint32_t block_size)
{
arm_offset_f16(src, offset, dst, block_size);
}
static inline void zdsp_negate_f16(const float16_t *src, float16_t *dst, uint32_t block_size)
{
arm_negate_f16(src, dst, block_size);
}
static inline void zdsp_clip_f16(const float16_t *src, float16_t *dst, float16_t low,
float16_t high, uint32_t num_samples)
{
arm_clip_f16(src, dst, low, high, num_samples);
}
#ifdef __cplusplus
}
#endif
#endif /* SUBSYS_DSP_CMSIS_PUBLIC_ZDSP_BACKEND_F16_H_ */