Home | History | Annotate | Download | only in basic_op
      1 /*
      2  ** Copyright 2003-2010, VisualOn, Inc.
      3  **
      4  ** Licensed under the Apache License, Version 2.0 (the "License");
      5  ** you may not use this file except in compliance with the License.
      6  ** You may obtain a copy of the License at
      7  **
      8  **     http://www.apache.org/licenses/LICENSE-2.0
      9  **
     10  ** Unless required by applicable law or agreed to in writing, software
     11  ** distributed under the License is distributed on an "AS IS" BASIS,
     12  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  ** See the License for the specific language governing permissions and
     14  ** limitations under the License.
     15  */
     16 /*******************************************************************************
     17 	File:		typedefs.h
     18 
     19 	Content:	type defined or const defined
     20 
     21 *******************************************************************************/
     22 
     23 #ifndef typedefs_h
     24 #define typedefs_h "$Id $"
     25 
     26 #ifndef CHAR_BIT
     27 #define CHAR_BIT      8         /* number of bits in a char */
     28 #endif
     29 
     30 #ifndef VOAAC_SHRT_MAX
     31 #define VOAAC_SHRT_MAX    (32767)        /* maximum (signed) short value */
     32 #endif
     33 
     34 #ifndef VOAAC_SHRT_MIN
     35 #define VOAAC_SHRT_MIN    (-32768)        /* minimum (signed) short value */
     36 #endif
     37 
     38 /* Define NULL pointer value */
     39 #ifndef NULL
     40 #ifdef __cplusplus
     41 #define NULL    0
     42 #else
     43 #define NULL    ((void *)0)
     44 #endif
     45 #endif
     46 
     47 #ifndef assert
     48 #define assert(_Expression)     ((void)0)
     49 #endif
     50 
     51 #define __inline static __inline
     52 
     53 #define INT_BITS   32
     54 /*
     55 ********************************************************************************
     56 *                         DEFINITION OF CONSTANTS
     57 ********************************************************************************
     58 */
     59 /*
     60  ********* define char type
     61  */
     62 typedef char Char;
     63 
     64 /*
     65  ********* define 8 bit signed/unsigned types & constants
     66  */
     67 typedef signed char Word8;
     68 typedef unsigned char UWord8;
     69 /*
     70  ********* define 16 bit signed/unsigned types & constants
     71  */
     72 typedef short Word16;
     73 typedef unsigned short UWord16;
     74 
     75 /*
     76  ********* define 32 bit signed/unsigned types & constants
     77  */
     78 typedef int Word32;
     79 typedef unsigned int UWord32;
     80 
     81 
     82 
     83 #ifndef _MSC_VER
     84 typedef long long Word64;
     85 typedef unsigned long long UWord64;
     86 #else
     87 typedef __int64 Word64;
     88 typedef unsigned __int64 UWord64;
     89 #endif
     90 
     91 #ifndef min
     92 #define min(a,b) ( (a) < (b) ? (a) : (b))
     93 #endif
     94 
     95 #ifndef max
     96 #define max(a,b) ( (a) > (b) ? (a) : (b))
     97 #endif
     98 
     99 #ifdef ARM_INASM
    100 #ifdef ARMV5_INASM
    101 #define ARMV5E_INASM	1
    102 #endif
    103 #define ARMV4_INASM		1
    104 #endif
    105 
    106 #if ARMV4_INASM
    107 	#define ARMV5TE_SAT           1
    108     #define ARMV5TE_ADD           1
    109     #define ARMV5TE_SUB           1
    110 	#define ARMV5TE_SHL           1
    111     #define ARMV5TE_SHR           1
    112 	#define ARMV5TE_L_SHL         1
    113     #define ARMV5TE_L_SHR         1
    114 #endif//ARMV4
    115 #if ARMV5E_INASM
    116     #define ARMV5TE_L_ADD         1
    117     #define ARMV5TE_L_SUB         1
    118     #define ARMV5TE_L_MULT        1
    119     #define ARMV5TE_L_MAC         1
    120     #define ARMV5TE_L_MSU         1
    121 
    122 
    123     #define ARMV5TE_DIV_S         1
    124     #define ARMV5TE_ROUND         1
    125     #define ARMV5TE_MULT          1
    126 
    127     #define ARMV5TE_NORM_S        1
    128     #define ARMV5TE_NORM_L        1
    129 	#define ARMV5TE_L_MPY_LS	  1
    130 #endif
    131 #if ARMV6_INASM
    132     #undef  ARMV5TE_ADD
    133     #define ARMV5TE_ADD           0
    134     #undef  ARMV5TE_SUB
    135     #define ARMV5TE_SUB           0
    136     #define ARMV6_SAT             1
    137 #endif
    138 
    139 //basic operation functions optimization flags
    140 #define SATRUATE_IS_INLINE              1   //define saturate as inline function
    141 #define SHL_IS_INLINE                   1  //define shl as inline function
    142 #define SHR_IS_INLINE                   1   //define shr as inline function
    143 #define L_MULT_IS_INLINE                1   //define L_mult as inline function
    144 #define L_MSU_IS_INLINE                 1   //define L_msu as inline function
    145 #define L_SUB_IS_INLINE                 1   //define L_sub as inline function
    146 #define L_SHL_IS_INLINE                 1   //define L_shl as inline function
    147 #define L_SHR_IS_INLINE                 1   //define L_shr as inline function
    148 #define ADD_IS_INLINE                   1   //define add as inline function //add, inline is the best
    149 #define SUB_IS_INLINE                   1   //define sub as inline function //sub, inline is the best
    150 #define DIV_S_IS_INLINE                 1   //define div_s as inline function
    151 #define MULT_IS_INLINE                  1   //define mult as inline function
    152 #define NORM_S_IS_INLINE                1   //define norm_s as inline function
    153 #define NORM_L_IS_INLINE                1   //define norm_l as inline function
    154 #define ROUND_IS_INLINE                 1   //define round as inline function
    155 #define L_MAC_IS_INLINE                 1   //define L_mac as inline function
    156 #define L_ADD_IS_INLINE                 1   //define L_add as inline function
    157 #define EXTRACT_H_IS_INLINE             1   //define extract_h as inline function
    158 #define EXTRACT_L_IS_INLINE             1   //define extract_l as inline function        //???
    159 #define MULT_R_IS_INLINE                1   //define mult_r as inline function
    160 #define SHR_R_IS_INLINE                 1   //define shr_r as inline function
    161 #define MAC_R_IS_INLINE                 1   //define mac_r as inline function
    162 #define MSU_R_IS_INLINE                 1   //define msu_r as inline function
    163 #define L_SHR_R_IS_INLINE               1   //define L_shr_r as inline function
    164 
    165 #define PREFIX				voAACEnc
    166 #define LINK0(x, y, z)		LINK1(x,y,z)
    167 #define LINK1(x,y,z)		x##y##z
    168 #define ADD_PREFIX(func)	LINK0(PREFIX, _, func)
    169 
    170 #define  L_Extract		ADD_PREFIX(L_Extract)
    171 #define  L_Comp			ADD_PREFIX(L_Comp)
    172 #define  Mpy_32			ADD_PREFIX(Mpy_32)
    173 #define  Mpy_32_16		ADD_PREFIX(Mpy_32_16)
    174 #define  Div_32			ADD_PREFIX(Div_32)
    175 #define  iLog4			ADD_PREFIX(iLog4)
    176 #define  rsqrt			ADD_PREFIX(rsqrt)
    177 #define  pow2_xy		ADD_PREFIX(pow2_xy)
    178 #define  L_mpy_ls		ADD_PREFIX(L_mpy_ls)
    179 #define  L_mpy_wx		ADD_PREFIX(L_mpy_wx)
    180 
    181 #define mem_malloc		ADD_PREFIX(mem_malloc)
    182 #define mem_free		ADD_PREFIX(mem_free)
    183 
    184 #endif
    185