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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 opus_int32 *p, /* I Polynomial, Q16
*/ | 64 opus_int32 *p, /* I Polynomial, Q16
*/ |
65 const opus_int32 x, /* I Evaluation point, Q12
*/ | 65 const opus_int32 x, /* I Evaluation point, Q12
*/ |
66 const opus_int dd /* I Order
*/ | 66 const opus_int dd /* I Order
*/ |
67 ) | 67 ) |
68 { | 68 { |
69 opus_int n; | 69 opus_int n; |
70 opus_int32 x_Q16, y32; | 70 opus_int32 x_Q16, y32; |
71 | 71 |
72 y32 = p[ dd ]; /* Q16 */ | 72 y32 = p[ dd ]; /* Q16 */ |
73 x_Q16 = silk_LSHIFT( x, 4 ); | 73 x_Q16 = silk_LSHIFT( x, 4 ); |
74 for( n = dd - 1; n >= 0; n-- ) { | 74 |
75 y32 = silk_SMLAWW( p[ n ], y32, x_Q16 ); /* Q16 */ | 75 if ( opus_likely( 8 == dd ) ) |
| 76 { |
| 77 y32 = silk_SMLAWW( p[ 7 ], y32, x_Q16 ); |
| 78 y32 = silk_SMLAWW( p[ 6 ], y32, x_Q16 ); |
| 79 y32 = silk_SMLAWW( p[ 5 ], y32, x_Q16 ); |
| 80 y32 = silk_SMLAWW( p[ 4 ], y32, x_Q16 ); |
| 81 y32 = silk_SMLAWW( p[ 3 ], y32, x_Q16 ); |
| 82 y32 = silk_SMLAWW( p[ 2 ], y32, x_Q16 ); |
| 83 y32 = silk_SMLAWW( p[ 1 ], y32, x_Q16 ); |
| 84 y32 = silk_SMLAWW( p[ 0 ], y32, x_Q16 ); |
| 85 } |
| 86 else |
| 87 { |
| 88 for( n = dd - 1; n >= 0; n-- ) { |
| 89 y32 = silk_SMLAWW( p[ n ], y32, x_Q16 ); /* Q16 */ |
| 90 } |
76 } | 91 } |
77 return y32; | 92 return y32; |
78 } | 93 } |
79 | 94 |
80 static OPUS_INLINE void silk_A2NLSF_init( | 95 static OPUS_INLINE void silk_A2NLSF_init( |
81 const opus_int32 *a_Q16, | 96 const opus_int32 *a_Q16, |
82 opus_int32 *P, | 97 opus_int32 *P, |
83 opus_int32 *Q, | 98 opus_int32 *Q, |
84 const opus_int dd | 99 const opus_int dd |
85 ) | 100 ) |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 ylo = silk_A2NLSF_eval_poly( p, xlo, dd ); | 258 ylo = silk_A2NLSF_eval_poly( p, xlo, dd ); |
244 root_ix = 1; /* Index of current root */ | 259 root_ix = 1; /* Index of current root */ |
245 } else { | 260 } else { |
246 root_ix = 0; /* Index of current root */ | 261 root_ix = 0; /* Index of current root */ |
247 } | 262 } |
248 k = 1; /* Reset loop counter */ | 263 k = 1; /* Reset loop counter */ |
249 } | 264 } |
250 } | 265 } |
251 } | 266 } |
252 } | 267 } |
OLD | NEW |