From b0855b3c4d508b6527f5bfb99d5767a0eef4abc6 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Sun, 3 Jan 2016 23:09:06 -0800 Subject: [PATCH] Pass buffers by reference to save significant text section code size. 752 bytes! --- firmware/baseband/dsp_decimate.cpp | 36 +++++++++++++-------------- firmware/baseband/dsp_decimate.hpp | 40 +++++++++++++++--------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/firmware/baseband/dsp_decimate.cpp b/firmware/baseband/dsp_decimate.cpp index 6bc2c9b3c..b3dd91749 100644 --- a/firmware/baseband/dsp_decimate.cpp +++ b/firmware/baseband/dsp_decimate.cpp @@ -199,8 +199,8 @@ void FIRC8xR16x24FS4Decim4::configure( } buffer_c16_t FIRC8xR16x24FS4Decim4::execute( - buffer_c8_t src, - buffer_c16_t dst + const buffer_c8_t& src, + const buffer_c16_t& dst ) { vec2_s16* const z = static_cast(__builtin_assume_aligned(z_.data(), 4)); const vec2_s16* const t = static_cast(__builtin_assume_aligned(taps_.data(), 4)); @@ -264,8 +264,8 @@ void FIRC8xR16x24FS4Decim8::configure( } buffer_c16_t FIRC8xR16x24FS4Decim8::execute( - buffer_c8_t src, - buffer_c16_t dst + const buffer_c8_t& src, + const buffer_c16_t& dst ) { vec2_s16* const z = static_cast(__builtin_assume_aligned(z_.data(), 4)); const vec2_s16* const t = static_cast(__builtin_assume_aligned(taps_.data(), 4)); @@ -322,8 +322,8 @@ void FIRC16xR16x16Decim2::configure( } buffer_c16_t FIRC16xR16x16Decim2::execute( - buffer_c16_t src, - buffer_c16_t dst + const buffer_c16_t& src, + const buffer_c16_t& dst ) { vec2_s16* const z = static_cast(__builtin_assume_aligned(z_.data(), 4)); const vec2_s16* const t = static_cast(__builtin_assume_aligned(taps_.data(), 4)); @@ -376,8 +376,8 @@ void FIRC16xR16x32Decim8::configure( } buffer_c16_t FIRC16xR16x32Decim8::execute( - buffer_c16_t src, - buffer_c16_t dst + const buffer_c16_t& src, + const buffer_c16_t& dst ) { vec2_s16* const z = static_cast(__builtin_assume_aligned(z_.data(), 4)); const vec2_s16* const t = static_cast(__builtin_assume_aligned(taps_.data(), 4)); @@ -423,7 +423,7 @@ buffer_c16_t FIRC16xR16x32Decim8::execute( }; } -buffer_c16_t Complex8DecimateBy2CIC3::execute(buffer_c8_t src, buffer_c16_t dst) { +buffer_c16_t Complex8DecimateBy2CIC3::execute(const buffer_c8_t& src, const buffer_c16_t& dst) { /* Decimates by two using a non-recursive third-order CIC filter. */ @@ -480,7 +480,7 @@ buffer_c16_t Complex8DecimateBy2CIC3::execute(buffer_c8_t src, buffer_c16_t dst) return { dst.p, src.count / 2, src.sampling_rate / 2 }; } -buffer_c16_t TranslateByFSOver4AndDecimateBy2CIC3::execute(buffer_c8_t src, buffer_c16_t dst) { +buffer_c16_t TranslateByFSOver4AndDecimateBy2CIC3::execute(const buffer_c8_t& src, const buffer_c16_t& dst) { /* Translates incoming complex samples by -fs/4, * decimates by two using a non-recursive third-order CIC filter. */ @@ -565,8 +565,8 @@ buffer_c16_t TranslateByFSOver4AndDecimateBy2CIC3::execute(buffer_c8_t src, buff } buffer_c16_t DecimateBy2CIC3::execute( - buffer_c16_t src, - buffer_c16_t dst + const buffer_c16_t& src, + const buffer_c16_t& dst ) { /* Complex non-recursive 3rd-order CIC filter (taps 1,3,3,1). * Gain of 8. @@ -625,8 +625,8 @@ void FIR64AndDecimateBy2Real::configure( } buffer_s16_t FIR64AndDecimateBy2Real::execute( - buffer_s16_t src, - buffer_s16_t dst + const buffer_s16_t& src, + const buffer_s16_t& dst ) { /* int16_t input (sample count "n" must be multiple of 4) * -> int16_t output, decimated by 2. @@ -658,8 +658,8 @@ buffer_s16_t FIR64AndDecimateBy2Real::execute( } buffer_c16_t FIRAndDecimateComplex::execute( - buffer_c16_t src, - buffer_c16_t dst + const buffer_c16_t& src, + const buffer_c16_t& dst ) { /* int16_t input (sample count "n" must be multiple of decimation_factor) * -> int16_t output, decimated by decimation_factor. @@ -768,8 +768,8 @@ buffer_c16_t FIRAndDecimateComplex::execute( } buffer_s16_t DecimateBy2CIC4Real::execute( - buffer_s16_t src, - buffer_s16_t dst + const buffer_s16_t& src, + const buffer_s16_t& dst ) { auto src_p = src.p; auto dst_p = dst.p; diff --git a/firmware/baseband/dsp_decimate.hpp b/firmware/baseband/dsp_decimate.hpp index 6922999b6..ac5c927fc 100644 --- a/firmware/baseband/dsp_decimate.hpp +++ b/firmware/baseband/dsp_decimate.hpp @@ -39,8 +39,8 @@ namespace decimate { class Complex8DecimateBy2CIC3 { public: buffer_c16_t execute( - buffer_c8_t src, - buffer_c16_t dst + const buffer_c8_t& src, + const buffer_c16_t& dst ); private: @@ -51,8 +51,8 @@ private: class TranslateByFSOver4AndDecimateBy2CIC3 { public: buffer_c16_t execute( - buffer_c8_t src, - buffer_c16_t dst + const buffer_c8_t& src, + const buffer_c16_t& dst ); private: @@ -63,8 +63,8 @@ private: class DecimateBy2CIC3 { public: buffer_c16_t execute( - buffer_c16_t src, - buffer_c16_t dst + const buffer_c16_t& src, + const buffer_c16_t& dst ); private: @@ -81,8 +81,8 @@ public: ); buffer_s16_t execute( - buffer_s16_t src, - buffer_s16_t dst + const buffer_s16_t& src, + const buffer_s16_t& dst ); private: @@ -112,8 +112,8 @@ public: ); buffer_c16_t execute( - buffer_c8_t src, - buffer_c16_t dst + const buffer_c8_t& src, + const buffer_c16_t& dst ); private: @@ -144,8 +144,8 @@ public: ); buffer_c16_t execute( - buffer_c8_t src, - buffer_c16_t dst + const buffer_c8_t& src, + const buffer_c16_t& dst ); private: @@ -170,8 +170,8 @@ public: ); buffer_c16_t execute( - buffer_c16_t src, - buffer_c16_t dst + const buffer_c16_t& src, + const buffer_c16_t& dst ); private: @@ -196,8 +196,8 @@ public: ); buffer_c16_t execute( - buffer_c16_t src, - buffer_c16_t dst + const buffer_c16_t& src, + const buffer_c16_t& dst ); private: @@ -235,8 +235,8 @@ public: } buffer_c16_t execute( - buffer_c16_t src, - buffer_c16_t dst + const buffer_c16_t& src, + const buffer_c16_t& dst ); private: @@ -251,8 +251,8 @@ private: class DecimateBy2CIC4Real { public: buffer_s16_t execute( - buffer_s16_t src, - buffer_s16_t dst + const buffer_s16_t& src, + const buffer_s16_t& dst ); private: