44 #error You cannot compile as floating point and fixed point at the same time 47 #error SSE is only for floating-point 49 #if ((defined (ARM4_ASM)||defined (ARM4_ASM)) && defined(BFIN_ASM)) || (defined (ARM4_ASM)&&defined(ARM5E_ASM)) 50 #error Make up your mind. What CPU do you have? 53 #error Vorbis-psy model currently not implemented in fixed-point 58 #ifndef FLOATING_POINT 59 #error You now need to define either FIXED_POINT or FLOATING_POINT 61 #if defined (ARM4_ASM) || defined(ARM5E_ASM) || defined(BFIN_ASM) 62 #error I suppose you can have a [ARM4/ARM5E/Blackfin] that has float instructions? 64 #ifdef FIXED_POINT_DEBUG 65 #error "Don't you think enabling fixed-point is a good thing to do if you want to debug that?" 72 #include "speex/speexdsp_types.h" 75 #define ABS(x) ((x) < 0 ? (-(x)) : (x)) 76 #define ABS16(x) ((x) < 0 ? (-(x)) : (x)) 77 #define MIN16(a,b) ((a) < (b) ? (a) : (b)) 78 #define MAX16(a,b) ((a) > (b) ? (a) : (b)) 79 #define ABS32(x) ((x) < 0 ? (-(x)) : (x)) 80 #define MIN32(a,b) ((a) < (b) ? (a) : (b)) 81 #define MAX32(a,b) ((a) > (b) ? (a) : (b)) 94 #define LPC_SCALING 8192 95 #define SIG_SCALING 16384 96 #define LSP_SCALING 8192. 97 #define GAMMA_SCALING 32768. 98 #define GAIN_SCALING 64 99 #define GAIN_SCALING_1 0.015625 107 #define VERY_LARGE32 ((spx_word32_t)2147483647) 108 #define VERY_LARGE16 ((spx_word16_t)32767) 109 #define Q15_ONE ((spx_word16_t)32767) 113 #include "fixed_debug.h" 119 #include "fixed_arm5e.h" 120 #elif defined (ARM4_ASM) 121 #include "fixed_arm4.h" 122 #elif defined (BFIN_ASM) 123 #include "fixed_bfin.h" 139 #define LPC_SCALING 1.f 140 #define SIG_SCALING 1.f 141 #define LSP_SCALING 1.f 142 #define GAMMA_SCALING 1.f 143 #define GAIN_SCALING 1.f 144 #define GAIN_SCALING_1 1.f 147 #define VERY_SMALL 1e-15f 148 #define VERY_LARGE32 1e15f 149 #define VERY_LARGE16 1e15f 150 #define Q15_ONE ((spx_word16_t)1.f) 152 #define QCONST16(x,bits) (x) 153 #define QCONST32(x,bits) (x) 155 #define NEG16(x) (-(x)) 156 #define NEG32(x) (-(x)) 157 #define EXTRACT16(x) (x) 158 #define EXTEND32(x) (x) 159 #define SHR16(a,shift) (a) 160 #define SHL16(a,shift) (a) 161 #define SHR32(a,shift) (a) 162 #define SHL32(a,shift) (a) 163 #define PSHR16(a,shift) (a) 164 #define PSHR32(a,shift) (a) 165 #define VSHR32(a,shift) (a) 166 #define SATURATE16(x,a) (x) 167 #define SATURATE32(x,a) (x) 168 #define SATURATE32PSHR(x,shift,a) (x) 170 #define PSHR(a,shift) (a) 171 #define SHR(a,shift) (a) 172 #define SHL(a,shift) (a) 173 #define SATURATE(x,a) (x) 175 #define ADD16(a,b) ((a)+(b)) 176 #define SUB16(a,b) ((a)-(b)) 177 #define ADD32(a,b) ((a)+(b)) 178 #define SUB32(a,b) ((a)-(b)) 179 #define MULT16_16_16(a,b) ((a)*(b)) 180 #define MULT16_16(a,b) ((spx_word32_t)(a)*(spx_word32_t)(b)) 181 #define MAC16_16(c,a,b) ((c)+(spx_word32_t)(a)*(spx_word32_t)(b)) 183 #define MULT16_32_Q11(a,b) ((a)*(b)) 184 #define MULT16_32_Q13(a,b) ((a)*(b)) 185 #define MULT16_32_Q14(a,b) ((a)*(b)) 186 #define MULT16_32_Q15(a,b) ((a)*(b)) 187 #define MULT16_32_P15(a,b) ((a)*(b)) 189 #define MAC16_32_Q11(c,a,b) ((c)+(a)*(b)) 190 #define MAC16_32_Q15(c,a,b) ((c)+(a)*(b)) 192 #define MAC16_16_Q11(c,a,b) ((c)+(a)*(b)) 193 #define MAC16_16_Q13(c,a,b) ((c)+(a)*(b)) 194 #define MAC16_16_P13(c,a,b) ((c)+(a)*(b)) 195 #define MULT16_16_Q11_32(a,b) ((a)*(b)) 196 #define MULT16_16_Q13(a,b) ((a)*(b)) 197 #define MULT16_16_Q14(a,b) ((a)*(b)) 198 #define MULT16_16_Q15(a,b) ((a)*(b)) 199 #define MULT16_16_P15(a,b) ((a)*(b)) 200 #define MULT16_16_P13(a,b) ((a)*(b)) 201 #define MULT16_16_P14(a,b) ((a)*(b)) 203 #define DIV32_16(a,b) (((spx_word32_t)(a))/(spx_word16_t)(b)) 204 #define PDIV32_16(a,b) (((spx_word32_t)(a))/(spx_word16_t)(b)) 205 #define DIV32(a,b) (((spx_word32_t)(a))/(spx_word32_t)(b)) 206 #define PDIV32(a,b) (((spx_word32_t)(a))/(spx_word32_t)(b)) 212 #if defined (CONFIG_TI_C54X) || defined (CONFIG_TI_C55X) 215 #define BYTES_PER_CHAR 2 216 #define BITS_PER_CHAR 16 217 #define LOG2_BITS_PER_CHAR 4 221 #define BYTES_PER_CHAR 1 222 #define BITS_PER_CHAR 8 223 #define LOG2_BITS_PER_CHAR 3 230 extern long long spx_mips;
Generic fixed-point operations.