From 5fca99bc78de163c43b72bd4a4bbb0bb5da72ec9 Mon Sep 17 00:00:00 2001 From: jzlv Date: Tue, 6 Jul 2021 16:09:51 +0800 Subject: [PATCH] [feat][math] add math library --- common/CMakeLists.txt | 2 ++ common/bl_math/arm_dsp_wrapper.c | 52 ++++++++++++++++++++++++++++++++ common/bl_math/arm_dsp_wrapper.h | 44 +++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 common/bl_math/arm_dsp_wrapper.c create mode 100644 common/bl_math/arm_dsp_wrapper.h diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index b6889ee9..8d08b7a5 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -11,6 +11,7 @@ list(APPEND ADD_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/list" "${CMAKE_CURRENT_SOURCE_DIR}/device" "${CMAKE_CURRENT_SOURCE_DIR}/partition" +"${CMAKE_CURRENT_SOURCE_DIR}/bl_math" ) ####################################################### @@ -28,6 +29,7 @@ file(GLOB_RECURSE sources "${CMAKE_CURRENT_SOURCE_DIR}/misc/*.c" "${CMAKE_CURRENT_SOURCE_DIR}/device/*.c" "${CMAKE_CURRENT_SOURCE_DIR}/partition/*.c" +"${CMAKE_CURRENT_SOURCE_DIR}/bl_math/*.c" ) #aux_source_directory(. sources) diff --git a/common/bl_math/arm_dsp_wrapper.c b/common/bl_math/arm_dsp_wrapper.c new file mode 100644 index 00000000..75c3c2d1 --- /dev/null +++ b/common/bl_math/arm_dsp_wrapper.c @@ -0,0 +1,52 @@ +/** + * @file arm_dsp_wrapper.h + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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 + * + * http://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. + * + */ + +#include "arm_dsp_wrapper.h" + +#include "arm_dsp_wrapper.h" + +void arm_fill_f32(float32_t value, float32_t *pDst, uint32_t blockSize) +{ + uint32_t blkCnt = blockSize >> 2u; + + float32_t in1 = value; + float32_t in2 = value; + float32_t in3 = value; + float32_t in4 = value; + + while (blkCnt > 0u) { + *pDst++ = in1; + *pDst++ = in2; + *pDst++ = in3; + *pDst++ = in4; + + blkCnt--; + } + + blkCnt = blockSize % 0x4u; + + while (blkCnt > 0u) { + *pDst++ = value; + blkCnt--; + } +} diff --git a/common/bl_math/arm_dsp_wrapper.h b/common/bl_math/arm_dsp_wrapper.h new file mode 100644 index 00000000..29373b35 --- /dev/null +++ b/common/bl_math/arm_dsp_wrapper.h @@ -0,0 +1,44 @@ +/** + * @file arm_dsp_wrapper.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you 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 + * + * http://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 __MY_MATH_F_H__ +#define __MY_MATH_F_H__ + +#include "bflb_platform.h" +#include "math.h" + +typedef float float32_t; + +__INLINE__ float32_t arm_sqrt_f32(float32_t x) +{ + return sqrtf(x); +} + +__INLINE__ float32_t arm_cos_f32(float32_t x) +{ + return cosf(x); +} + +void arm_fill_f32(float32_t value, float32_t *pDst, uint32_t blockSize); + +#endif \ No newline at end of file