| OLD | NEW |
| 1 /* Copyright (c) 2003-2008 Jean-Marc Valin | 1 /* Copyright (c) 2003-2008 Jean-Marc Valin |
| 2 Copyright (c) 2007-2008 CSIRO | 2 Copyright (c) 2007-2008 CSIRO |
| 3 Copyright (c) 2007-2009 Xiph.Org Foundation | 3 Copyright (c) 2007-2009 Xiph.Org Foundation |
| 4 Written by Jean-Marc Valin */ | 4 Written by Jean-Marc Valin */ |
| 5 /** | 5 /** |
| 6 @file arch.h | 6 @file arch.h |
| 7 @brief Various architecture definitions for CELT | 7 @brief Various architecture definitions for CELT |
| 8 */ | 8 */ |
| 9 /* | 9 /* |
| 10 Redistribution and use in source and binary forms, with or without | 10 Redistribution and use in source and binary forms, with or without |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 | 39 |
| 40 # if !defined(__GNUC_PREREQ) | 40 # if !defined(__GNUC_PREREQ) |
| 41 # if defined(__GNUC__)&&defined(__GNUC_MINOR__) | 41 # if defined(__GNUC__)&&defined(__GNUC_MINOR__) |
| 42 # define __GNUC_PREREQ(_maj,_min) \ | 42 # define __GNUC_PREREQ(_maj,_min) \ |
| 43 ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) | 43 ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) |
| 44 # else | 44 # else |
| 45 # define __GNUC_PREREQ(_maj,_min) 0 | 45 # define __GNUC_PREREQ(_maj,_min) 0 |
| 46 # endif | 46 # endif |
| 47 # endif | 47 # endif |
| 48 | 48 |
| 49 #if OPUS_GNUC_PREREQ(3, 0) |
| 50 #define opus_likely(x) (__builtin_expect(!!(x), 1)) |
| 51 #define opus_unlikely(x) (__builtin_expect(!!(x), 0)) |
| 52 #else |
| 53 #define opus_likely(x) (!!(x)) |
| 54 #define opus_unlikely(x) (!!(x)) |
| 55 #endif |
| 56 |
| 49 #define CELT_SIG_SCALE 32768.f | 57 #define CELT_SIG_SCALE 32768.f |
| 50 | 58 |
| 51 #define celt_fatal(str) _celt_fatal(str, __FILE__, __LINE__); | 59 #define celt_fatal(str) _celt_fatal(str, __FILE__, __LINE__); |
| 52 #ifdef ENABLE_ASSERTIONS | 60 #ifdef ENABLE_ASSERTIONS |
| 53 #include <stdio.h> | 61 #include <stdio.h> |
| 54 #include <stdlib.h> | 62 #include <stdlib.h> |
| 55 #ifdef __GNUC__ | 63 #ifdef __GNUC__ |
| 56 __attribute__((noreturn)) | 64 __attribute__((noreturn)) |
| 57 #endif | 65 #endif |
| 58 static OPUS_INLINE void _celt_fatal(const char *str, const char *file, int line) | 66 static OPUS_INLINE void _celt_fatal(const char *str, const char *file, int line) |
| (...skipping 27 matching lines...) Expand all Loading... |
| 86 #else | 94 #else |
| 87 #define OPUS_FAST_INT64 0 | 95 #define OPUS_FAST_INT64 0 |
| 88 #endif | 96 #endif |
| 89 | 97 |
| 90 #define PRINT_MIPS(file) | 98 #define PRINT_MIPS(file) |
| 91 | 99 |
| 92 #ifdef FIXED_POINT | 100 #ifdef FIXED_POINT |
| 93 | 101 |
| 94 typedef opus_int16 opus_val16; | 102 typedef opus_int16 opus_val16; |
| 95 typedef opus_int32 opus_val32; | 103 typedef opus_int32 opus_val32; |
| 104 typedef opus_int64 opus_val64; |
| 96 | 105 |
| 97 typedef opus_val32 celt_sig; | 106 typedef opus_val32 celt_sig; |
| 98 typedef opus_val16 celt_norm; | 107 typedef opus_val16 celt_norm; |
| 99 typedef opus_val32 celt_ener; | 108 typedef opus_val32 celt_ener; |
| 100 | 109 |
| 101 #define Q15ONE 32767 | 110 #define Q15ONE 32767 |
| 102 | 111 |
| 103 #define SIG_SHIFT 12 | 112 #define SIG_SHIFT 12 |
| 113 /* Safe saturation value for 32-bit signals. Should be less than |
| 114 2^31*(1-0.85) to avoid blowing up on DC at deemphasis.*/ |
| 115 #define SIG_SAT (300000000) |
| 104 | 116 |
| 105 #define NORM_SCALING 16384 | 117 #define NORM_SCALING 16384 |
| 106 | 118 |
| 107 #define DB_SHIFT 10 | 119 #define DB_SHIFT 10 |
| 108 | 120 |
| 109 #define EPSILON 1 | 121 #define EPSILON 1 |
| 110 #define VERY_SMALL 0 | 122 #define VERY_SMALL 0 |
| 111 #define VERY_LARGE16 ((opus_val16)32767) | 123 #define VERY_LARGE16 ((opus_val16)32767) |
| 112 #define Q15_ONE ((opus_val16)32767) | 124 #define Q15_ONE ((opus_val16)32767) |
| 113 | 125 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 140 #elif defined (TI_C6X_ASM) | 152 #elif defined (TI_C6X_ASM) |
| 141 #include "fixed_c6x.h" | 153 #include "fixed_c6x.h" |
| 142 #endif | 154 #endif |
| 143 | 155 |
| 144 #endif | 156 #endif |
| 145 | 157 |
| 146 #else /* FIXED_POINT */ | 158 #else /* FIXED_POINT */ |
| 147 | 159 |
| 148 typedef float opus_val16; | 160 typedef float opus_val16; |
| 149 typedef float opus_val32; | 161 typedef float opus_val32; |
| 162 typedef float opus_val64; |
| 150 | 163 |
| 151 typedef float celt_sig; | 164 typedef float celt_sig; |
| 152 typedef float celt_norm; | 165 typedef float celt_norm; |
| 153 typedef float celt_ener; | 166 typedef float celt_ener; |
| 154 | 167 |
| 155 #ifdef FLOAT_APPROX | 168 #ifdef FLOAT_APPROX |
| 156 /* This code should reliably detect NaN/inf even when -ffast-math is used. | 169 /* This code should reliably detect NaN/inf even when -ffast-math is used. |
| 157 Assumes IEEE 754 format. */ | 170 Assumes IEEE 754 format. */ |
| 158 static OPUS_INLINE int celt_isnan(float x) | 171 static OPUS_INLINE int celt_isnan(float x) |
| 159 { | 172 { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 179 | 192 |
| 180 /* This appears to be the same speed as C99's fabsf() but it's more portable. */ | 193 /* This appears to be the same speed as C99's fabsf() but it's more portable. */ |
| 181 #define ABS16(x) ((float)fabs(x)) | 194 #define ABS16(x) ((float)fabs(x)) |
| 182 #define ABS32(x) ((float)fabs(x)) | 195 #define ABS32(x) ((float)fabs(x)) |
| 183 | 196 |
| 184 #define QCONST16(x,bits) (x) | 197 #define QCONST16(x,bits) (x) |
| 185 #define QCONST32(x,bits) (x) | 198 #define QCONST32(x,bits) (x) |
| 186 | 199 |
| 187 #define NEG16(x) (-(x)) | 200 #define NEG16(x) (-(x)) |
| 188 #define NEG32(x) (-(x)) | 201 #define NEG32(x) (-(x)) |
| 202 #define NEG32_ovflw(x) (-(x)) |
| 189 #define EXTRACT16(x) (x) | 203 #define EXTRACT16(x) (x) |
| 190 #define EXTEND32(x) (x) | 204 #define EXTEND32(x) (x) |
| 191 #define SHR16(a,shift) (a) | 205 #define SHR16(a,shift) (a) |
| 192 #define SHL16(a,shift) (a) | 206 #define SHL16(a,shift) (a) |
| 193 #define SHR32(a,shift) (a) | 207 #define SHR32(a,shift) (a) |
| 194 #define SHL32(a,shift) (a) | 208 #define SHL32(a,shift) (a) |
| 195 #define PSHR32(a,shift) (a) | 209 #define PSHR32(a,shift) (a) |
| 196 #define VSHR32(a,shift) (a) | 210 #define VSHR32(a,shift) (a) |
| 197 | 211 |
| 198 #define PSHR(a,shift) (a) | 212 #define PSHR(a,shift) (a) |
| 199 #define SHR(a,shift) (a) | 213 #define SHR(a,shift) (a) |
| 200 #define SHL(a,shift) (a) | 214 #define SHL(a,shift) (a) |
| 201 #define SATURATE(x,a) (x) | 215 #define SATURATE(x,a) (x) |
| 202 #define SATURATE16(x) (x) | 216 #define SATURATE16(x) (x) |
| 203 | 217 |
| 204 #define ROUND16(a,shift) (a) | 218 #define ROUND16(a,shift) (a) |
| 219 #define SROUND16(a,shift) (a) |
| 205 #define HALF16(x) (.5f*(x)) | 220 #define HALF16(x) (.5f*(x)) |
| 206 #define HALF32(x) (.5f*(x)) | 221 #define HALF32(x) (.5f*(x)) |
| 207 | 222 |
| 208 #define ADD16(a,b) ((a)+(b)) | 223 #define ADD16(a,b) ((a)+(b)) |
| 209 #define SUB16(a,b) ((a)-(b)) | 224 #define SUB16(a,b) ((a)-(b)) |
| 210 #define ADD32(a,b) ((a)+(b)) | 225 #define ADD32(a,b) ((a)+(b)) |
| 211 #define SUB32(a,b) ((a)-(b)) | 226 #define SUB32(a,b) ((a)-(b)) |
| 227 #define ADD32_ovflw(a,b) ((a)+(b)) |
| 228 #define SUB32_ovflw(a,b) ((a)-(b)) |
| 212 #define MULT16_16_16(a,b) ((a)*(b)) | 229 #define MULT16_16_16(a,b) ((a)*(b)) |
| 213 #define MULT16_16(a,b) ((opus_val32)(a)*(opus_val32)(b)) | 230 #define MULT16_16(a,b) ((opus_val32)(a)*(opus_val32)(b)) |
| 214 #define MAC16_16(c,a,b) ((c)+(opus_val32)(a)*(opus_val32)(b)) | 231 #define MAC16_16(c,a,b) ((c)+(opus_val32)(a)*(opus_val32)(b)) |
| 215 | 232 |
| 216 #define MULT16_32_Q15(a,b) ((a)*(b)) | 233 #define MULT16_32_Q15(a,b) ((a)*(b)) |
| 217 #define MULT16_32_Q16(a,b) ((a)*(b)) | 234 #define MULT16_32_Q16(a,b) ((a)*(b)) |
| 218 | 235 |
| 219 #define MULT32_32_Q31(a,b) ((a)*(b)) | 236 #define MULT32_32_Q31(a,b) ((a)*(b)) |
| 220 | 237 |
| 221 #define MAC16_32_Q15(c,a,b) ((c)+(a)*(b)) | 238 #define MAC16_32_Q15(c,a,b) ((c)+(a)*(b)) |
| (...skipping 14 matching lines...) Expand all Loading... |
| 236 | 253 |
| 237 #define SCALEIN(a) ((a)*CELT_SIG_SCALE) | 254 #define SCALEIN(a) ((a)*CELT_SIG_SCALE) |
| 238 #define SCALEOUT(a) ((a)*(1/CELT_SIG_SCALE)) | 255 #define SCALEOUT(a) ((a)*(1/CELT_SIG_SCALE)) |
| 239 | 256 |
| 240 #define SIG2WORD16(x) (x) | 257 #define SIG2WORD16(x) (x) |
| 241 | 258 |
| 242 #endif /* !FIXED_POINT */ | 259 #endif /* !FIXED_POINT */ |
| 243 | 260 |
| 244 #ifndef GLOBAL_STACK_SIZE | 261 #ifndef GLOBAL_STACK_SIZE |
| 245 #ifdef FIXED_POINT | 262 #ifdef FIXED_POINT |
| 246 #define GLOBAL_STACK_SIZE 100000 | 263 #define GLOBAL_STACK_SIZE 120000 |
| 247 #else | 264 #else |
| 248 #define GLOBAL_STACK_SIZE 100000 | 265 #define GLOBAL_STACK_SIZE 120000 |
| 249 #endif | 266 #endif |
| 250 #endif | 267 #endif |
| 251 | 268 |
| 252 #endif /* ARCH_H */ | 269 #endif /* ARCH_H */ |
| OLD | NEW |