Blame libcelt/arch.h

Packit 664db3
/* Copyright (C) 2003-2008 Jean-Marc Valin */
Packit 664db3
/**
Packit 664db3
   @file arch.h
Packit 664db3
   @brief Various architecture definitions for CELT
Packit 664db3
*/
Packit 664db3
/*
Packit 664db3
   Redistribution and use in source and binary forms, with or without
Packit 664db3
   modification, are permitted provided that the following conditions
Packit 664db3
   are met:
Packit 664db3
   
Packit 664db3
   - Redistributions of source code must retain the above copyright
Packit 664db3
   notice, this list of conditions and the following disclaimer.
Packit 664db3
   
Packit 664db3
   - Redistributions in binary form must reproduce the above copyright
Packit 664db3
   notice, this list of conditions and the following disclaimer in the
Packit 664db3
   documentation and/or other materials provided with the distribution.
Packit 664db3
   
Packit 664db3
   - Neither the name of the Xiph.org Foundation nor the names of its
Packit 664db3
   contributors may be used to endorse or promote products derived from
Packit 664db3
   this software without specific prior written permission.
Packit 664db3
   
Packit 664db3
   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Packit 664db3
   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit 664db3
   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
Packit 664db3
   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
Packit 664db3
   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
Packit 664db3
   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
Packit 664db3
   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
Packit 664db3
   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
Packit 664db3
   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
Packit 664db3
   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
Packit 664db3
   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit 664db3
*/
Packit 664db3
Packit 664db3
#ifndef ARCH_H
Packit 664db3
#define ARCH_H
Packit 664db3
Packit 664db3
#include "celt_types.h"
Packit 664db3
Packit 664db3
Packit 664db3
#define celt_fatal(str) _celt_fatal(str, __FILE__, __LINE__);
Packit 664db3
#ifdef ENABLE_ASSERTIONS
Packit 664db3
#define celt_assert(cond) {if (!(cond)) {celt_fatal("assertion failed: " #cond);}}
Packit 664db3
#define celt_assert2(cond, message) {if (!(cond)) {celt_fatal("assertion failed: " #cond "\n" message);}}
Packit 664db3
#else
Packit 664db3
#define celt_assert(cond)
Packit 664db3
#define celt_assert2(cond, message)
Packit 664db3
#endif
Packit 664db3
Packit 664db3
#define IMUL32(a,b) ((a)*(b))
Packit 664db3
Packit 664db3
#define ABS(x) ((x) < 0 ? (-(x)) : (x))      /**< Absolute integer value. */
Packit 664db3
#define ABS16(x) ((x) < 0 ? (-(x)) : (x))    /**< Absolute 16-bit value.  */
Packit 664db3
#define MIN16(a,b) ((a) < (b) ? (a) : (b))   /**< Maximum 16-bit value.   */
Packit 664db3
#define MAX16(a,b) ((a) > (b) ? (a) : (b))   /**< Maximum 16-bit value.   */
Packit 664db3
#define ABS32(x) ((x) < 0 ? (-(x)) : (x))    /**< Absolute 32-bit value.  */
Packit 664db3
#define MIN32(a,b) ((a) < (b) ? (a) : (b))   /**< Maximum 32-bit value.   */
Packit 664db3
#define MAX32(a,b) ((a) > (b) ? (a) : (b))   /**< Maximum 32-bit value.   */
Packit 664db3
#define IMAX(a,b) ((a) > (b) ? (a) : (b))   /**< Maximum int value.   */
Packit 664db3
#define UADD32(a,b) ((a)+(b))
Packit 664db3
#define USUB32(a,b) ((a)-(b))
Packit 664db3
Packit 664db3
#define PRINT_MIPS(file)
Packit 664db3
Packit 664db3
#ifdef FIXED_POINT
Packit 664db3
Packit 664db3
typedef celt_int16_t celt_word16_t;
Packit 664db3
typedef celt_int32_t celt_word32_t;
Packit 664db3
Packit 664db3
typedef celt_word32_t celt_sig_t;
Packit 664db3
typedef celt_word16_t celt_norm_t;
Packit 664db3
typedef celt_word32_t celt_ener_t;
Packit 664db3
typedef celt_word16_t celt_pgain_t;
Packit 664db3
typedef celt_word32_t celt_mask_t;
Packit 664db3
Packit 664db3
#define Q15ONE 32767
Packit 664db3
#define Q30ONE 1073741823
Packit 664db3
Packit 664db3
#define SIG_SHIFT 12
Packit 664db3
Packit 664db3
#define NORM_SCALING 16384
Packit 664db3
#define NORM_SCALING_1 (1.f/16384.f)
Packit 664db3
#define NORM_SHIFT 14
Packit 664db3
Packit 664db3
#define ENER_SCALING 16384.f
Packit 664db3
#define ENER_SCALING_1 (1.f/16384.f)
Packit 664db3
#define ENER_SHIFT 14
Packit 664db3
Packit 664db3
#define PGAIN_SCALING 32768.f
Packit 664db3
#define PGAIN_SCALING_1 (1.f/32768.f)
Packit 664db3
#define PGAIN_SHIFT 15
Packit 664db3
Packit 664db3
#define DB_SCALING 256.f
Packit 664db3
#define DB_SCALING_1 (1.f/256.f)
Packit 664db3
Packit 664db3
#define EPSILON 1
Packit 664db3
#define VERY_SMALL 0
Packit 664db3
#define VERY_LARGE32 ((celt_word32_t)2147483647)
Packit 664db3
#define VERY_LARGE16 ((celt_word16_t)32767)
Packit 664db3
#define Q15_ONE ((celt_word16_t)32767)
Packit 664db3
#define Q15_ONE_1 (1.f/32768.f)
Packit 664db3
Packit 664db3
#define SCALEIN(a)	(a)
Packit 664db3
#define SCALEOUT(a)	(a)
Packit 664db3
Packit 664db3
#ifdef FIXED_DEBUG
Packit 664db3
#include "fixed_debug.h"
Packit 664db3
#else
Packit 664db3
Packit 664db3
#include "fixed_generic.h"
Packit 664db3
Packit 664db3
#ifdef ARM5E_ASM
Packit 664db3
#include "fixed_arm5e.h"
Packit 664db3
#elif defined (ARM4_ASM)
Packit 664db3
#include "fixed_arm4.h"
Packit 664db3
#elif defined (BFIN_ASM)
Packit 664db3
#include "fixed_bfin.h"
Packit 664db3
#elif defined (TI_C5X_ASM)
Packit 664db3
#include "fixed_c5x.h"
Packit 664db3
#elif defined (TI_C6X_ASM)
Packit 664db3
#include "fixed_c6x.h"
Packit 664db3
#endif
Packit 664db3
Packit 664db3
#endif
Packit 664db3
Packit 664db3
Packit 664db3
#else /* FIXED_POINT */
Packit 664db3
Packit 664db3
typedef float celt_word16_t;
Packit 664db3
typedef float celt_word32_t;
Packit 664db3
Packit 664db3
typedef float celt_sig_t;
Packit 664db3
typedef float celt_norm_t;
Packit 664db3
typedef float celt_ener_t;
Packit 664db3
typedef float celt_pgain_t;
Packit 664db3
typedef float celt_mask_t;
Packit 664db3
Packit 664db3
#define Q15ONE 1.0f
Packit 664db3
#define Q30ONE 1.0f
Packit 664db3
Packit 664db3
#define NORM_SCALING 1.f
Packit 664db3
#define NORM_SCALING_1 1.f
Packit 664db3
#define ENER_SCALING 1.f
Packit 664db3
#define ENER_SCALING_1 1.f
Packit 664db3
#define PGAIN_SCALING 1.f
Packit 664db3
#define PGAIN_SCALING_1 1.f
Packit 664db3
Packit 664db3
#define DB_SCALING 1.f
Packit 664db3
#define DB_SCALING_1 1.f
Packit 664db3
Packit 664db3
#define EPSILON 1e-15f
Packit 664db3
#define VERY_SMALL 1e-15f
Packit 664db3
#define VERY_LARGE32 1e15f
Packit 664db3
#define VERY_LARGE16 1e15f
Packit 664db3
#define Q15_ONE ((celt_word16_t)1.f)
Packit 664db3
#define Q15_ONE_1 ((celt_word16_t)1.f)
Packit 664db3
Packit 664db3
#define QCONST16(x,bits) (x)
Packit 664db3
#define QCONST32(x,bits) (x)
Packit 664db3
Packit 664db3
#define NEG16(x) (-(x))
Packit 664db3
#define NEG32(x) (-(x))
Packit 664db3
#define EXTRACT16(x) (x)
Packit 664db3
#define EXTEND32(x) (x)
Packit 664db3
#define SHR16(a,shift) (a)
Packit 664db3
#define SHL16(a,shift) (a)
Packit 664db3
#define SHR32(a,shift) (a)
Packit 664db3
#define SHL32(a,shift) (a)
Packit 664db3
#define PSHR16(a,shift) (a)
Packit 664db3
#define PSHR32(a,shift) (a)
Packit 664db3
#define VSHR32(a,shift) (a)
Packit 664db3
#define SATURATE16(x,a) (x)
Packit 664db3
#define SATURATE32(x,a) (x)
Packit 664db3
Packit 664db3
#define PSHR(a,shift)   (a)
Packit 664db3
#define SHR(a,shift)    (a)
Packit 664db3
#define SHL(a,shift)    (a)
Packit 664db3
#define SATURATE(x,a)   (x)
Packit 664db3
Packit 664db3
#define ROUND16(a,shift)  (a)
Packit 664db3
#define HALF32(x)       (.5f*(x))
Packit 664db3
Packit 664db3
#define ADD16(a,b) ((a)+(b))
Packit 664db3
#define SUB16(a,b) ((a)-(b))
Packit 664db3
#define ADD32(a,b) ((a)+(b))
Packit 664db3
#define SUB32(a,b) ((a)-(b))
Packit 664db3
#define MULT16_16_16(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_16(a,b)     ((celt_word32_t)(a)*(celt_word32_t)(b))
Packit 664db3
#define MAC16_16(c,a,b)     ((c)+(celt_word32_t)(a)*(celt_word32_t)(b))
Packit 664db3
Packit 664db3
#define MULT16_32_Q11(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_32_Q13(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_32_Q14(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_32_Q15(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_32_Q16(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_32_P15(a,b)     ((a)*(b))
Packit 664db3
Packit 664db3
#define MULT32_32_Q31(a,b)     ((a)*(b))
Packit 664db3
Packit 664db3
#define MAC16_32_Q11(c,a,b)     ((c)+(a)*(b))
Packit 664db3
#define MAC16_32_Q15(c,a,b)     ((c)+(a)*(b))
Packit 664db3
Packit 664db3
#define MAC16_16_Q11(c,a,b)     ((c)+(a)*(b))
Packit 664db3
#define MAC16_16_Q13(c,a,b)     ((c)+(a)*(b))
Packit 664db3
#define MAC16_16_P13(c,a,b)     ((c)+(a)*(b))
Packit 664db3
#define MULT16_16_Q11_32(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_16_Q13(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_16_Q14(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_16_Q15(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_16_P15(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_16_P13(a,b)     ((a)*(b))
Packit 664db3
#define MULT16_16_P14(a,b)     ((a)*(b))
Packit 664db3
Packit 664db3
#define DIV32_16(a,b)     (((celt_word32_t)(a))/(celt_word16_t)(b))
Packit 664db3
#define PDIV32_16(a,b)     (((celt_word32_t)(a))/(celt_word16_t)(b))
Packit 664db3
#define DIV32(a,b)     (((celt_word32_t)(a))/(celt_word32_t)(b))
Packit 664db3
#define PDIV32(a,b)     (((celt_word32_t)(a))/(celt_word32_t)(b))
Packit 664db3
Packit 664db3
#define SCALEIN(a)	((a)*32768.)
Packit 664db3
#define SCALEOUT(a)	((a)*(1/32768.))
Packit 664db3
Packit 664db3
#endif /* !FIXED_POINT */
Packit 664db3
Packit 664db3
Packit 664db3
#if defined (CONFIG_TI_C54X) || defined (CONFIG_TI_C55X)
Packit 664db3
Packit 664db3
/* 2 on TI C5x DSP */
Packit 664db3
#define BYTES_PER_CHAR 2 
Packit 664db3
#define BITS_PER_CHAR 16
Packit 664db3
#define LOG2_BITS_PER_CHAR 4
Packit 664db3
Packit 664db3
#else /* CONFIG_TI_C54X */
Packit 664db3
Packit 664db3
#define BYTES_PER_CHAR 1
Packit 664db3
#define BITS_PER_CHAR 8
Packit 664db3
#define LOG2_BITS_PER_CHAR 3
Packit 664db3
Packit 664db3
#endif /* !CONFIG_TI_C54X */
Packit 664db3
Packit 664db3
#ifndef GLOBAL_STACK_SIZE 
Packit 664db3
#ifdef FIXED_POINT
Packit 664db3
#define GLOBAL_STACK_SIZE 25000
Packit 664db3
#else
Packit 664db3
#define GLOBAL_STACK_SIZE 40000
Packit 664db3
#endif
Packit 664db3
#endif 
Packit 664db3
Packit 664db3
#endif /* ARCH_H */