52#include "platforms/arm/is_arm.h"
53#include "platforms/avr/is_avr.h"
62#if !(defined(__GNUC__) && defined(FL_IS_ARM) && !defined(__thumb__) && !defined(__thumb2__) && !defined(FL_IS_AVR))
63#define COMPILE_CPP_POLYPHASE
71#define DEF_NFRACBITS (DQ_FRACBITS_OUT - 2 - 2 - 15)
84 if (
sign != (x32 >> 15))
85 x32 =
sign ^ ((1L << 15) - 1);
91 c1 = *coef; coef++; c2 = *coef; coef++; \
92 vLo = *(vb1+(x)); vHi = *(vb1+(23-(x))); \
93 sum1L = MADD64(sum1L, vLo, c1); sum1L = MADD64(sum1L, vHi, -c2); \
99 sum1L = MADD64(sum1L, vLo, c1); \
103 c1 = *coef; coef++; c2 = *coef; coef++; \
104 vLo = *(vb1+(x)); vHi = *(vb1+(23-(x))); \
105 sum1L = MADD64(sum1L, vLo, c1); sum2L = MADD64(sum2L, vLo, c2); \
106 sum1L = MADD64(sum1L, vHi, -c2); sum2L = MADD64(sum2L, vHi, c1); \
109#ifdef COMPILE_CPP_POLYPHASE
135 int vLo, vHi, c1, c2;
136 Word64 sum1L, sum2L, rndVal;
157 coef = coefBase + 256;
173 coef = coefBase + 16;
178 for (i = 15; i > 0; i--) {
179 sum1L = sum2L = rndVal;
198 c1 = *coef; coef++; c2 = *coef; coef++; \
199 vLo = *(vb1+(x)); vHi = *(vb1+(23-(x))); \
200 sum1L = MADD64(sum1L, vLo, c1); sum1L = MADD64(sum1L, vHi, -c2); \
201 vLo = *(vb1+32+(x)); vHi = *(vb1+32+(23-(x))); \
202 sum1R = MADD64(sum1R, vLo, c1); sum1R = MADD64(sum1R, vHi, -c2); \
206 c1 = *coef; coef++; \
208 sum1L = MADD64(sum1L, vLo, c1); \
209 vLo = *(vb1+32+(x)); \
210 sum1R = MADD64(sum1R, vLo, c1); \
214 c1 = *coef; coef++; c2 = *coef; coef++; \
215 vLo = *(vb1+(x)); vHi = *(vb1+(23-(x))); \
216 sum1L = MADD64(sum1L, vLo, c1); sum2L = MADD64(sum2L, vLo, c2); \
217 sum1L = MADD64(sum1L, vHi, -c2); sum2L = MADD64(sum2L, vHi, c1); \
218 vLo = *(vb1+32+(x)); vHi = *(vb1+32+(23-(x))); \
219 sum1R = MADD64(sum1R, vLo, c1); sum2R = MADD64(sum2R, vLo, c2); \
220 sum1R = MADD64(sum1R, vHi, -c2); sum2R = MADD64(sum2R, vHi, c1); \
248 int vLo, vHi, c1, c2;
249 Word64 sum1L, sum2L, sum1R, sum2R, rndVal;
256 sum1L = sum1R = rndVal;
271 coef = coefBase + 256;
273 sum1L = sum1R = rndVal;
288 coef = coefBase + 16;
293 for (i = 15; i > 0; i--) {
294 sum1L = sum2L = rndVal;
295 sum1R = sum2R = rndVal;
static __inline short ClipToShort(int x, int fracBits) FL_NOEXCEPT
void PolyphaseMono(short *pcm, int32_t *vbuf, const int32_t *coefBase)
__inline Word64 SAR64(Word64 x, int n) FL_NOEXCEPT
Shift right.
void PolyphaseStereo(short *pcm, int32_t *vbuf, const int32_t *coefBase)
constexpr enable_if< is_fixed_point< T >::value, int >::type sign(T x) FL_NOEXCEPT
Base definition for an LED controller.