1 /* Copyright (C) 2007 Hong Zhiqian */ 2 /** 3 @file profile_tm.h 4 @author Hong Zhiqian 5 @brief Various compatibility routines for Speex (TriMedia version) 6 */ 7 /* 8 Redistribution and use in source and binary forms, with or without 9 modification, are permitted provided that the following conditions 10 are met: 11 12 - Redistributions of source code must retain the above copyright 13 notice, this list of conditions and the following disclaimer. 14 15 - Redistributions in binary form must reproduce the above copyright 16 notice, this list of conditions and the following disclaimer in the 17 documentation and/or other materials provided with the distribution. 18 19 - Neither the name of the Xiph.org Foundation nor the names of its 20 contributors may be used to endorse or promote products derived from 21 this software without specific prior written permission. 22 23 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 26 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 27 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 28 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 29 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 30 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 31 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 32 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 33 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 */ 35 /** 36 * @remarks This file provide some capabilities to measure clock cycles. 37 * Use this if unable to compile with TriMedia profile options 38 */ 39 40 extern int __profile_begin; 41 extern int __profile_end; 42 43 #if TM_PROFILE 44 #define PROFILE_START() \ 45 { \ 46 __profile_begin = cycles(); \ 47 } \ 48 49 #define PROFILE_STOP() \ 50 { \ 51 __profile_end = cycles(); \ 52 printf("%s\t%d\n", __FUNCTION__, end - begin); \ 53 } \ 54 55 #else 56 #define PROFILE_START() 57 #define PROFILE_STOP() 58 #endif 59 60 #if TM_PROFILE_SPXAUTOCORR 61 #define _SPX_AUTOCORR_START() PROFILE_START() 62 #define _SPX_AUTOCORR_STOP() PROFILE_STOP() 63 #else 64 #define _SPX_AUTOCORR_START() 65 #define _SPX_AUTOCORR_STOP() 66 #endif 67 68 #if TM_PROFILE_INNERPROD 69 #define INNERPROD_START() PROFILE_START() 70 #define INNERPROD_STOP() PROFILE_STOP() 71 #else 72 #define INNERPROD_START() 73 #define INNERPROD_STOP() 74 #endif 75 76 #if TM_PROFILE_PITCHXCORR 77 #define PITCHXCORR_START() PROFILE_START() 78 #define PITCHXCORR_STOP() PROFILE_STOP() 79 #else 80 #define PITCHXCORR_START() 81 #define PITCHXCORR_STOP() 82 #endif 83 84 #if TM_PROFILE_COMPUTEPITCHERROR 85 #define COMPUTEPITCHERROR_START() PROFILE_START() 86 #define COMPUTEPITCHERROR_STOP() PROFILE_STOP() 87 #else 88 #define COMPUTEPITCHERROR_START() 89 #define COMPUTEPITCHERROR_STOP() 90 #endif 91 92 #if TM_PROFILE_PITCHGAINSEARCH3TAPVQ 93 #define PITCHGAINSEARCH3TAPVQ_START() PROFILE_START() 94 #define PITCHGAINSEARCH3TAPVQ_STOP() PROFILE_STOP() 95 #else 96 #define PITCHGAINSEARCH3TAPVQ_START() 97 #define PITCHGAINSEARCH3TAPVQ_STOP() 98 #endif 99 100 #if TM_PROFILE_OPENLOOPNBESTPITCH 101 #define OPENLOOPNBESTPITCH_START() PROFILE_START() 102 #define OPENLOOPNBESTPITCH_STOP() PROFILE_STOP() 103 #else 104 #define OPENLOOPNBESTPITCH_START() 105 #define OPENLOOPNBESTPITCH_STOP() 106 #endif 107 108 109 #if TM_PROFILE_LSP_INTERPOLATE 110 #define LSPINTERPOLATE_START() PROFILE_START() 111 #define LSPINTERPOLATE_STOP() PROFILE_STOP() 112 #else 113 #define LSPINTERPOLATE_START() 114 #define LSPINTERPOLATE_STOP() 115 #endif 116 117 #if TM_PROFILE_CHEBPOLYEVA 118 #define CHEBPOLYEVA_START() PROFILE_START() 119 #define CHEBPOLYEVA_STOP() PROFILE_STOP() 120 #else 121 #define CHEBPOLYEVA_START() 122 #define CHEBPOLYEVA_STOP() 123 #endif 124 125 126 #if TM_PROFILE_COMPUTEQUANTWEIGHTS 127 #define COMPUTEQUANTWEIGHTS_START() PROFILE_START() 128 #define COMPUTEQUANTWEIGHTS_STOP() PROFILE_STOP() 129 #else 130 #define COMPUTEQUANTWEIGHTS_START() 131 #define COMPUTEQUANTWEIGHTS_STOP() 132 #endif 133 134 #if TM_PROFILE_LSPQUANT 135 #define LSPQUANT_START() PROFILE_START() 136 #define LSPQUANT_STOP() PROFILE_STOP() 137 #else 138 #define LSPQUANT_START() 139 #define LSPQUANT_STOP() 140 #endif 141 142 #if TM_PROFILE_LSPWEIGHTQUANT 143 #define LSPWEIGHTQUANT_START() PROFILE_START() 144 #define LSPWEIGHTQUANT_STOP() PROFILE_STOP() 145 #else 146 #define LSPWEIGHTQUANT_START() 147 #define LSPWEIGHTQUANT_STOP() 148 #endif 149 150 #if TM_PROFILE_FIRMEM16 151 #define FIRMEM16_START() PROFILE_START() 152 #define FIRMEM16_STOP() PROFILE_STOP() 153 #else 154 #define FIRMEM16_START() 155 #define FIRMEM16_STOP() 156 #endif 157 158 #if TM_PROFILE_IIRMEM16 159 #define IIRMEM16_START() PROFILE_START() 160 #define IIRMEM16_STOP() PROFILE_STOP() 161 #else 162 #define IIRMEM16_START() 163 #define IIRMEM16_STOP() 164 #endif 165 166 #if TM_PROFILE_FILTERMEM16 167 #define FILTERMEM16_START() PROFILE_START() 168 #define FILTERMEM16_STOP() PROFILE_STOP() 169 #else 170 #define FILTERMEM16_START() 171 #define FILTERMEM16_STOP() 172 #endif 173 174 #if TM_PROFILE_COMPUTERMS16 175 #define COMPUTERMS16_START() PROFILE_START() 176 #define COMPUTERMS16_STOP() PROFILE_STOP() 177 #else 178 #define COMPUTERMS16_START() 179 #define COMPUTERMS16_STOP() 180 #endif 181 182 #if TM_PROFILE_NORMALIZE16 183 #define NORMALIZE16_START() PROFILE_START() 184 #define NORMALIZE16_STOP() PROFILE_STOP() 185 #else 186 #define NORMALIZE16_START() 187 #define NORMALIZE16_STOP() 188 #endif 189 190 #if TM_PROFILE_BWLPC 191 #define BWLPC_START() PROFILE_START() 192 #define BWLPC_STOP() PROFILE_STOP() 193 #else 194 #define BWLPC_START() 195 #define BWLPC_STOP() 196 #endif 197 198 #if TM_PROFILE_HIGHPASS 199 #define HIGHPASS_START() PROFILE_START() 200 #define HIGHPASS_STOP() PROFILE_STOP() 201 #else 202 #define HIGHPASS_START() 203 #define HIGHPASS_STOP() 204 #endif 205 206 #if TM_PROFILE_SIGNALMUL 207 #define SIGNALMUL_START() PROFILE_START() 208 #define SIGNALMUL_STOP() PROFILE_STOP() 209 #else 210 #define SIGNALMUL_START() 211 #define SIGNALMUL_STOP() 212 #endif 213 214 #if TM_PROFILE_SIGNALDIV 215 #define SIGNALDIV_START() PROFILE_START() 216 #define SIGNALDIV_STOP() PROFILE_STOP() 217 #else 218 #define SIGNALDIV_START() 219 #define SIGNALDIV_STOP() 220 #endif 221 222 #if TM_PROFILE_COMPUTEIMPULSERESPONSE 223 #define COMPUTEIMPULSERESPONSE_START() PROFILE_START() 224 #define COMPUTEIMPULSERESPONSE_STOP() PROFILE_STOP() 225 #else 226 #define COMPUTEIMPULSERESPONSE_START() 227 #define COMPUTEIMPULSERESPONSE_STOP() 228 #endif 229 230 #if TM_PROFILE_COMPUTEWEIGHTEDCODEBOOK 231 #define COMPUTEWEIGHTEDCODEBOOK_START() PROFILE_START() 232 #define COMPUTEWEIGHTEDCODEBOOK_STOP() PROFILE_STOP() 233 #else 234 #define COMPUTEWEIGHTEDCODEBOOK_START() 235 #define COMPUTEWEIGHTEDCODEBOOK_STOP() 236 #endif 237 238 #if TM_PROFILE_TARGETUPDATE 239 #define TARGETUPDATE_START() PROFILE_START() 240 #define TARGETUPDATE_STOP() PROFILE_STOP() 241 #else 242 #define TARGETUPDATE_START() 243 #define TARGETUPDATE_STOP() 244 #endif 245 246 247 #if TM_PROFILE_VQNBEST 248 #define VQNBEST_START() PROFILE_START() 249 #define VQNBEST_STOP() PROFILE_STOP() 250 #else 251 #define VQNBEST_START() 252 #define VQNBEST_STOP() 253 #endif 254 255 #if TM_PROFILE_VQNBESTSIGN 256 #define VQNBESTSIGN_START() PROFILE_START() 257 #define VQNBESTSIGN_STOP() PROFILE_STOP() 258 #else 259 #define VQNBESTSIGN_START() 260 #define VQNBESTSIGN_STOP() 261 #endif 262 263 #if TM_PROFILE_PREPROCESSANALYSIS 264 #define PREPROCESSANAYLSIS_START() PROFILE_START() 265 #define PREPROCESSANAYLSIS_STOP() PROFILE_STOP() 266 #else 267 #define PREPROCESSANAYLSIS_START() 268 #define PREPROCESSANAYLSIS_STOP() 269 #endif 270 271 #if TM_PROFILE_UPDATENOISEPROB 272 #define UPDATENOISEPROB_START() PROFILE_START() 273 #define UPDATENOISEPROB_STOP() PROFILE_STOP() 274 #else 275 #define UPDATENOISEPROB_START() 276 #define UPDATENOISEPROB_STOP() 277 #endif 278 279 #if TM_PROFILE_COMPUTEGAINFLOOR 280 #define COMPUTEGAINFLOOR_START() PROFILE_START() 281 #define COMPUTEGAINFLOOR_STOP() PROFILE_STOP() 282 #else 283 #define COMPUTEGAINFLOOR_START() 284 #define COMPUTEGAINFLOOR_STOP() 285 #endif 286 287 #if TM_PROFILE_FILTERDCNOTCH16 288 #define FILTERDCNOTCH16_START() PROFILE_START() 289 #define FILTERDCNOTCH16_STOP() PROFILE_STOP() 290 #else 291 #define FILTERDCNOTCH16_START() 292 #define FILTERDCNOTCH16_STOP() 293 #endif 294 295 #if TM_PROFILE_MDFINNERPROD 296 #define MDFINNERPROD_START() PROFILE_START() 297 #define MDFINNERPROD_STOP() PROFILE_STOP() 298 #else 299 #define MDFINNERPROD_START() 300 #define MDFINNERPROD_STOP() 301 #endif 302 303 #if TM_PROFILE_SPECTRALMULACCUM 304 #define SPECTRALMULACCUM_START() PROFILE_START() 305 #define SPECTRALMULACCUM_STOP() PROFILE_STOP() 306 #else 307 #define SPECTRALMULACCUM_START() 308 #define SPECTRALMULACCUM_STOP() 309 #endif 310 311 #if TM_PROFILE_WEIGHTEDSPECTRALMULCONJ 312 #define WEIGHTEDSPECTRALMULCONJ_START() PROFILE_START() 313 #define WEIGHTEDSPECTRALMULCONJ_STOP() PROFILE_STOP() 314 #else 315 #define WEIGHTEDSPECTRALMULCONJ_START() 316 #define WEIGHTEDSPECTRALMULCONJ_STOP() 317 #endif 318 319 #if TM_PROFILE_MDFADJUSTPROP 320 #define MDFADJUSTPROP_START() PROFILE_START() 321 #define MDFADJUSTPROP_STOP() PROFILE_STOP() 322 #else 323 #define MDFADJUSTPROP_START() 324 #define MDFADJUSTPROP_STOP() 325 #endif 326 327 #if TM_PROFILE_SPEEXECHOGETRESIDUAL 328 #define SPEEXECHOGETRESIDUAL_START() PROFILE_START() 329 #define SPEEXECHOGETRESIDUAL_STOP() PROFILE_STOP() 330 #else 331 #define SPEEXECHOGETRESIDUAL_START() 332 #define SPEEXECHOGETRESIDUAL_STOP() 333 #endif 334 335 #if TM_PROFILE_LSPENFORCEMARGIN 336 #define LSPENFORCEMARGIN_START() PROFILE_START() 337 #define LSPENFORCEMARGIN_STOP() PROFILE_STOP() 338 #else 339 #define LSPENFORCEMARGIN_START() 340 #define LSPENFORCEMARGIN_STOP() 341 #endif 342 343 #if TM_PROFILE_LSPTOLPC 344 #define LSPTOLPC_START() PROFILE_START() 345 #define LSPTOLPC_STOP() PROFILE_STOP() 346 #else 347 #define LSPTOLPC_START() 348 #define LSPTOLPC_STOP() 349 #endif 350 351 #if TM_PROFILE_MAXIMIZERANGE 352 #define MAXIMIZERANGE_START() PROFILE_START() 353 #define MAXIMIZERANGE_STOP() PROFILE_STOP() 354 #else 355 #define MAXIMIZERANGE_START() 356 #define MAXIMIZERANGE_STOP() 357 #endif 358 359 #if TM_PROFILE_RENORMRANGE 360 #define RENORMRANGE_START() PROFILE_START() 361 #define RENORMRANGE_STOP() PROFILE_STOP() 362 #else 363 #define RENORMRANGE_START() 364 #define RENORMRANGE_STOP() 365 #endif 366 367 #if TM_PROFILE_POWERSPECTRUM 368 #define POWERSPECTRUM_START() PROFILE_START() 369 #define POWERSPECTRUM_STOP() PROFILE_STOP() 370 #else 371 #define POWERSPECTRUM_START() 372 #define POWERSPECTRUM_STOP() 373 #endif 374 375 #if TM_PROFILE_QMFSYNTH 376 #define QMFSYNTH_START() PROFILE_START() 377 #define QMFSYNTH_STOP() PROFILE_STOP() 378 #else 379 #define QMFSYNTH_START() 380 #define QMFSYNTH_STOP() 381 #endif 382 383 #if TM_PROFILE_QMFDECOMP 384 #define QMFDECOMP_START() PROFILE_START() 385 #define QMFDECOMP_STOP() PROFILE_STOP() 386 #else 387 #define QMFDECOMP_START() 388 #define QMFDECOMP_STOP() 389 #endif 390 391 #if TM_PROFILE_FILTERBANKCOMPUTEBANK32 392 #define FILTERBANKCOMPUTEBANK32_START() PROFILE_START() 393 #define FILTERBANKCOMPUTEBANK32_STOP() PROFILE_STOP() 394 #else 395 #define FILTERBANKCOMPUTEBANK32_START() 396 #define FILTERBANKCOMPUTEBANK32_STOP() 397 #endif 398 399 #if TM_PROFILE_FILTERBANKCOMPUTEPSD16 400 #define FILTERBANKCOMPUTEPSD16_START() PROFILE_START() 401 #define FILTERBANKCOMPUTEPSD16_STOP() PROFILE_STOP() 402 #else 403 #define FILTERBANKCOMPUTEPSD16_START() 404 #define FILTERBANKCOMPUTEPSD16_STOP() 405 #endif 406 407 408