OLD | NEW |
1 /*********************************************************************** | 1 /*********************************************************************** |
2 Copyright (c) 2006-2011, Skype Limited. All rights reserved. | 2 Copyright (c) 2006-2011, Skype Limited. All rights reserved. |
3 Redistribution and use in source and binary forms, with or without | 3 Redistribution and use in source and binary forms, with or without |
4 modification, are permitted provided that the following conditions | 4 modification, are permitted provided that the following conditions |
5 are met: | 5 are met: |
6 - Redistributions of source code must retain the above copyright notice, | 6 - Redistributions of source code must retain the above copyright notice, |
7 this list of conditions and the following disclaimer. | 7 this list of conditions and the following disclaimer. |
8 - Redistributions in binary form must reproduce the above copyright | 8 - Redistributions in binary form must reproduce the above copyright |
9 notice, this list of conditions and the following disclaimer in the | 9 notice, this list of conditions and the following disclaimer in the |
10 documentation and/or other materials provided with the distribution. | 10 documentation and/or other materials provided with the distribution. |
(...skipping 14 matching lines...) Expand all Loading... |
25 POSSIBILITY OF SUCH DAMAGE. | 25 POSSIBILITY OF SUCH DAMAGE. |
26 ***********************************************************************/ | 26 ***********************************************************************/ |
27 | 27 |
28 #ifndef SILK_MACROS_H | 28 #ifndef SILK_MACROS_H |
29 #define SILK_MACROS_H | 29 #define SILK_MACROS_H |
30 | 30 |
31 #ifdef HAVE_CONFIG_H | 31 #ifdef HAVE_CONFIG_H |
32 #include "config.h" | 32 #include "config.h" |
33 #endif | 33 #endif |
34 | 34 |
35 /* This is an inline header file for general platform. */ | 35 #include "opus_types.h" |
| 36 #include "opus_defines.h" |
| 37 |
| 38 /* This is an OPUS_INLINE header file for general platform. */ |
36 | 39 |
37 /* (a32 * (opus_int32)((opus_int16)(b32))) >> 16 output have to be 32bit int */ | 40 /* (a32 * (opus_int32)((opus_int16)(b32))) >> 16 output have to be 32bit int */ |
38 #define silk_SMULWB(a32, b32) ((((a32) >> 16) * (opus_int32)((opus_in
t16)(b32))) + ((((a32) & 0x0000FFFF) * (opus_int32)((opus_int16)(b32))) >> 16)) | 41 #define silk_SMULWB(a32, b32) ((((a32) >> 16) * (opus_int32)((opus_in
t16)(b32))) + ((((a32) & 0x0000FFFF) * (opus_int32)((opus_int16)(b32))) >> 16)) |
39 | 42 |
40 /* a32 + (b32 * (opus_int32)((opus_int16)(c32))) >> 16 output have to be 32bit i
nt */ | 43 /* a32 + (b32 * (opus_int32)((opus_int16)(c32))) >> 16 output have to be 32bit i
nt */ |
41 #define silk_SMLAWB(a32, b32, c32) ((a32) + ((((b32) >> 16) * (opus_int32)
((opus_int16)(c32))) + ((((b32) & 0x0000FFFF) * (opus_int32)((opus_int16)(c32)))
>> 16))) | 44 #define silk_SMLAWB(a32, b32, c32) ((a32) + ((((b32) >> 16) * (opus_int32)
((opus_int16)(c32))) + ((((b32) & 0x0000FFFF) * (opus_int32)((opus_int16)(c32)))
>> 16))) |
42 | 45 |
43 /* (a32 * (b32 >> 16)) >> 16 */ | 46 /* (a32 * (b32 >> 16)) >> 16 */ |
44 #define silk_SMULWT(a32, b32) (((a32) >> 16) * ((b32) >> 16) + ((((a3
2) & 0x0000FFFF) * ((b32) >> 16)) >> 16)) | 47 #define silk_SMULWT(a32, b32) (((a32) >> 16) * ((b32) >> 16) + ((((a3
2) & 0x0000FFFF) * ((b32) >> 16)) >> 16)) |
45 | 48 |
(...skipping 25 matching lines...) Expand all Loading... |
71 #define silk_ADD_SAT32(a, b) ((((opus_uint32)(a) + (opus_uint32)(b))
& 0x80000000) == 0 ? \ | 74 #define silk_ADD_SAT32(a, b) ((((opus_uint32)(a) + (opus_uint32)(b))
& 0x80000000) == 0 ? \ |
72 ((((a) & (b)) & 0x80000000) != 0 ? silk_
int32_MIN : (a)+(b)) : \ | 75 ((((a) & (b)) & 0x80000000) != 0 ? silk_
int32_MIN : (a)+(b)) : \ |
73 ((((a) | (b)) & 0x80000000) == 0 ? silk_
int32_MAX : (a)+(b)) ) | 76 ((((a) | (b)) & 0x80000000) == 0 ? silk_
int32_MAX : (a)+(b)) ) |
74 | 77 |
75 #define silk_SUB_SAT32(a, b) ((((opus_uint32)(a)-(opus_uint32)(b)) &
0x80000000) == 0 ? \ | 78 #define silk_SUB_SAT32(a, b) ((((opus_uint32)(a)-(opus_uint32)(b)) &
0x80000000) == 0 ? \ |
76 (( (a) & ((b)^0x80000000) & 0x80000000)
? silk_int32_MIN : (a)-(b)) : \ | 79 (( (a) & ((b)^0x80000000) & 0x80000000)
? silk_int32_MIN : (a)-(b)) : \ |
77 ((((a)^0x80000000) & (b) & 0x80000000)
? silk_int32_MAX : (a)-(b)) ) | 80 ((((a)^0x80000000) & (b) & 0x80000000)
? silk_int32_MAX : (a)-(b)) ) |
78 | 81 |
79 #include "ecintrin.h" | 82 #include "ecintrin.h" |
80 | 83 |
81 static inline opus_int32 silk_CLZ16(opus_int16 in16) | 84 static OPUS_INLINE opus_int32 silk_CLZ16(opus_int16 in16) |
82 { | 85 { |
83 return 32 - EC_ILOG(in16<<16|0x8000); | 86 return 32 - EC_ILOG(in16<<16|0x8000); |
84 } | 87 } |
85 | 88 |
86 static inline opus_int32 silk_CLZ32(opus_int32 in32) | 89 static OPUS_INLINE opus_int32 silk_CLZ32(opus_int32 in32) |
87 { | 90 { |
88 return in32 ? 32 - EC_ILOG(in32) : 32; | 91 return in32 ? 32 - EC_ILOG(in32) : 32; |
89 } | 92 } |
90 | 93 |
91 /* Row based */ | 94 /* Row based */ |
92 #define matrix_ptr(Matrix_base_adr, row, column, N) \ | 95 #define matrix_ptr(Matrix_base_adr, row, column, N) \ |
93 (*((Matrix_base_adr) + ((row)*(N)+(column)))) | 96 (*((Matrix_base_adr) + ((row)*(N)+(column)))) |
94 #define matrix_adr(Matrix_base_adr, row, column, N) \ | 97 #define matrix_adr(Matrix_base_adr, row, column, N) \ |
95 ((Matrix_base_adr) + ((row)*(N)+(column))) | 98 ((Matrix_base_adr) + ((row)*(N)+(column))) |
96 | 99 |
97 /* Column based */ | 100 /* Column based */ |
98 #ifndef matrix_c_ptr | 101 #ifndef matrix_c_ptr |
99 # define matrix_c_ptr(Matrix_base_adr, row, column, M) \ | 102 # define matrix_c_ptr(Matrix_base_adr, row, column, M) \ |
100 (*((Matrix_base_adr) + ((row)+(M)*(column)))) | 103 (*((Matrix_base_adr) + ((row)+(M)*(column)))) |
101 #endif | 104 #endif |
102 | 105 |
103 #ifdef ARMv4_ASM | 106 #ifdef OPUS_ARM_INLINE_ASM |
104 #include "arm/macros_armv4.h" | 107 #include "arm/macros_armv4.h" |
105 #endif | 108 #endif |
106 | 109 |
107 #ifdef ARMv5E_ASM | 110 #ifdef OPUS_ARM_INLINE_EDSP |
108 #include "arm/macros_armv5e.h" | 111 #include "arm/macros_armv5e.h" |
109 #endif | 112 #endif |
110 | 113 |
111 #endif /* SILK_MACROS_H */ | 114 #endif /* SILK_MACROS_H */ |
112 | 115 |
OLD | NEW |