Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Volume: Add volume SIMD build option #8682

Merged
merged 1 commit into from
Jan 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/audio/volume/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

if COMP_VOLUME

rsource "Kconfig.simd"

config COMP_VOLUME_WINDOWS_FADE
bool "Windows Fade shape volume transitions support"
help
Expand Down
34 changes: 34 additions & 0 deletions src/audio/volume/Kconfig.simd
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# SPDX-License-Identifier: BSD-3-Clause

comment "volume optimization level select"

choice "VOLUME_SIMD_LEVEL_SELECT"
prompt "choose which SIMD level used for volume module"
depends on COMP_VOLUME
default VOLUME_HIFI_MAX

config VOLUME_HIFI_MAX
prompt "SIMD will selected by toolchain pre-defined header"
bool
btian1 marked this conversation as resolved.
Show resolved Hide resolved
help
When this was selected, optimization level will be determined
by toolchain pre-defined macros in core isa header file.

config VOLUME_HIFI_4
prompt "choose HIFI4 intrinsic optimized volume module"
bool
help
This option used to build HIFI4 optimized volume code

config VOLUME_HIFI_3
prompt "choose HIFI3 intrinsic optimized volume module"
bool
btian1 marked this conversation as resolved.
Show resolved Hide resolved
help
This option used to build HIFI3 intrinsic optimized volume code

config VOLUME_HIFI_NONE
prompt "choose generic C volume module, no HIFI SIMD involved"
bool
help
This option used to build volume generic code.
endchoice
4 changes: 2 additions & 2 deletions src/audio/volume/volume.c
Original file line number Diff line number Diff line change
Expand Up @@ -587,7 +587,7 @@ static int volume_process(struct processing_module *mod,
cd->peak_cnt = 0;
peak_vol_update(cd);
memset(cd->peak_regs.peak_meter, 0, sizeof(cd->peak_regs.peak_meter));
#ifdef VOLUME_HIFI4
#if SOF_USE_HIFI(4, VOLUME) || SOF_USE_HIFI(5, VOLUME)
memset(cd->peak_vol, 0, sizeof(int32_t) * SOF_IPC_MAX_CHANNELS * 4);
#endif
}
Expand Down Expand Up @@ -622,7 +622,7 @@ static vol_zc_func vol_get_zc_function(struct comp_dev *dev,
static void volume_set_alignment(struct audio_stream *source,
struct audio_stream *sink)
{
#if XCHAL_HAVE_HIFI3 || XCHAL_HAVE_HIFI4
#if SOF_USE_HIFI(3, VOLUME) || SOF_USE_HIFI(4, VOLUME) || SOF_USE_HIFI(5, VOLUME)
/* Both source and sink buffer in HiFi 3 or HiFi4 processing version,
* xtensa intrinsics ask for 8-byte aligned. 5.1 format SSE audio
* requires 16-byte aligned.
Expand Down
13 changes: 0 additions & 13 deletions src/audio/volume/volume.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,6 @@
struct comp_buffer;
struct sof_ipc_ctrl_value_chan;

#if defined(__XCC__)
# include <xtensa/config/core-isa.h>
# if XCHAL_HAVE_HIFI4
# define VOLUME_HIFI4
# elif XCHAL_HAVE_HIFI3
# define VOLUME_HIFI3
# else
# define VOLUME_GENERIC
# endif
#else
# define VOLUME_GENERIC
#endif

/**
* \brief In IPC3 volume is in Q8.16 format, in IPC4 in Q1.31, but is converted
* by firmware to Q1.23 format.
Expand Down
2 changes: 1 addition & 1 deletion src/audio/volume/volume_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ LOG_MODULE_DECLARE(volume_generic, CONFIG_SOF_LOG_LEVEL);

#include "volume.h"

#ifdef VOLUME_GENERIC
#if SOF_USE_HIFI(NONE, VOLUME)

#if (!CONFIG_COMP_PEAK_VOL)

Expand Down
2 changes: 1 addition & 1 deletion src/audio/volume/volume_generic_with_peakvol.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ LOG_MODULE_DECLARE(volume_generic, CONFIG_SOF_LOG_LEVEL);

#include "volume.h"

#ifdef VOLUME_GENERIC
#if SOF_USE_HIFI(NONE, VOLUME)

#if CONFIG_COMP_PEAK_VOL

Expand Down
2 changes: 1 addition & 1 deletion src/audio/volume/volume_hifi3.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ LOG_MODULE_DECLARE(volume_hifi3, CONFIG_SOF_LOG_LEVEL);

#include "volume.h"

#ifdef VOLUME_HIFI3
#if SOF_USE_HIFI(3, VOLUME)

#if (!CONFIG_COMP_PEAK_VOL)

Expand Down
2 changes: 1 addition & 1 deletion src/audio/volume/volume_hifi3_with_peakvol.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ LOG_MODULE_DECLARE(volume_hifi3, CONFIG_SOF_LOG_LEVEL);

#include "volume.h"

#ifdef VOLUME_HIFI3
#if SOF_USE_HIFI(3, VOLUME)

#if CONFIG_COMP_PEAK_VOL

Expand Down
2 changes: 1 addition & 1 deletion src/audio/volume/volume_hifi4.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ LOG_MODULE_DECLARE(volume_hifi4, CONFIG_SOF_LOG_LEVEL);

#include "volume.h"

#ifdef VOLUME_HIFI4
#if SOF_USE_HIFI(4, VOLUME) || SOF_USE_HIFI(5, VOLUME)
btian1 marked this conversation as resolved.
Show resolved Hide resolved

#if (!CONFIG_COMP_PEAK_VOL)

Expand Down
2 changes: 1 addition & 1 deletion src/audio/volume/volume_hifi4_with_peakvol.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ LOG_MODULE_DECLARE(volume_hifi4, CONFIG_SOF_LOG_LEVEL);

#include "volume.h"

#ifdef VOLUME_HIFI4
#if SOF_USE_HIFI(4, VOLUME) || SOF_USE_HIFI(5, VOLUME)

#if CONFIG_COMP_PEAK_VOL
#include <xtensa/tie/xt_hifi4.h>
Expand Down
Loading