|
1 //Portions Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. |
|
2 /* |
|
3 Copyright 2002,2003,2004,2005 David A. Schleef <ds@schleef.org> |
|
4 All rights reserved. |
|
5 |
|
6 Redistribution and use in source and binary forms, with or without |
|
7 modification, are permitted provided that the following conditions |
|
8 are met: |
|
9 1. Redistributions of source code must retain the above copyright |
|
10 notice, this list of conditions and the following disclaimer. |
|
11 2. Redistributions in binary form must reproduce the above copyright |
|
12 notice, this list of conditions and the following disclaimer in the |
|
13 documentation and/or other materials provided with the distribution. |
|
14 |
|
15 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
|
16 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
17 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
18 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, |
|
19 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
|
20 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
|
21 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
22 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
|
23 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
|
24 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
25 POSSIBILITY OF SUCH DAMAGE. |
|
26 */ |
|
27 #include <liboil/liboilfunction.h> |
|
28 #include <liboil/liboiltest.h> |
|
29 #include <liboil/liboilrandom.h> |
|
30 |
|
31 |
|
32 static void |
|
33 wavelet_test (OilTest *test) |
|
34 { |
|
35 int16_t *data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC1); |
|
36 int i; |
|
37 |
|
38 for(i=0;i<test->n;i++){ |
|
39 data[i] = oil_rand_u8(); |
|
40 } |
|
41 } |
|
42 |
|
43 static void |
|
44 rshift_test (OilTest *test) |
|
45 { |
|
46 int16_t *data; |
|
47 int i; |
|
48 |
|
49 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC1); |
|
50 for(i=0;i<test->n;i++){ |
|
51 data[i] = oil_rand_s16()>>1; |
|
52 } |
|
53 |
|
54 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC2); |
|
55 data[0] = (1<<3); |
|
56 data[1] = 4; |
|
57 } |
|
58 |
|
59 static void |
|
60 lshift_test (OilTest *test) |
|
61 { |
|
62 int16_t *data; |
|
63 |
|
64 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC2); |
|
65 data[0] = 12; |
|
66 } |
|
67 |
|
68 static void |
|
69 combine2_test (OilTest *test) |
|
70 { |
|
71 int16_t *data; |
|
72 |
|
73 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC3); |
|
74 data[0] = 1; |
|
75 data[1] = 1; |
|
76 data[2] = 1; |
|
77 data[3] = 1; |
|
78 } |
|
79 |
|
80 static void |
|
81 combine4_test (OilTest *test) |
|
82 { |
|
83 int16_t *data; |
|
84 |
|
85 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC5); |
|
86 data[0] = 4; |
|
87 data[1] = 4; |
|
88 data[2] = 4; |
|
89 data[3] = 4; |
|
90 data[4] = 8; |
|
91 data[5] = 4; |
|
92 } |
|
93 |
|
94 static void |
|
95 add2_test (OilTest *test) |
|
96 { |
|
97 int16_t *data; |
|
98 int i; |
|
99 |
|
100 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC1); |
|
101 for(i=0;i<test->n;i++){ |
|
102 data[i] = oil_rand_s16()>>4; |
|
103 } |
|
104 |
|
105 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC2); |
|
106 for(i=0;i<test->n;i++){ |
|
107 data[i] = oil_rand_s16()>>4; |
|
108 } |
|
109 |
|
110 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC3); |
|
111 for(i=0;i<test->n;i++){ |
|
112 data[i] = oil_rand_s16()>>4; |
|
113 } |
|
114 |
|
115 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC4); |
|
116 data[0] = 1; |
|
117 data[1] = 1; |
|
118 } |
|
119 |
|
120 OIL_DEFINE_CLASS_FULL (deinterleave, |
|
121 "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test); |
|
122 OIL_DEFINE_CLASS (deinterleave2_s16, |
|
123 "int16_t *d1_n, int16_t *d2_n, int16_t *s_2xn, int n"); |
|
124 OIL_DEFINE_CLASS_FULL (interleave, |
|
125 "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test); |
|
126 OIL_DEFINE_CLASS (interleave2_s16, |
|
127 "int16_t *d_2xn, int16_t *s1_n, int16_t *s2_n, int n"); |
|
128 OIL_DEFINE_CLASS_FULL (synth_daub97, |
|
129 "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test); |
|
130 OIL_DEFINE_CLASS_FULL (split_daub97, |
|
131 "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test); |
|
132 OIL_DEFINE_CLASS_FULL (split_approx97, |
|
133 "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test); |
|
134 OIL_DEFINE_CLASS_FULL (synth_approx97, |
|
135 "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test); |
|
136 OIL_DEFINE_CLASS_FULL (split_53, |
|
137 "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test); |
|
138 OIL_DEFINE_CLASS_FULL (synth_53, |
|
139 "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test); |
|
140 OIL_DEFINE_CLASS_FULL (split_135, |
|
141 "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test); |
|
142 OIL_DEFINE_CLASS_FULL (synth_135, |
|
143 "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test); |
|
144 OIL_DEFINE_CLASS_FULL (add_const_rshift_s16, |
|
145 "int16_t *d1, int16_t *s1, int16_t *s2_2, int n", rshift_test); |
|
146 OIL_DEFINE_CLASS_FULL (lshift_s16, |
|
147 "int16_t *d1, int16_t *s1, int16_t *s2_1, int n", lshift_test); |
|
148 OIL_DEFINE_CLASS (multiply_and_add_s16, |
|
149 "int16_t *d, int16_t *src1, int16_t *src2, int16_t *src3, int n"); |
|
150 OIL_DEFINE_CLASS (multiply_and_add_s16_u8, |
|
151 "int16_t *d, int16_t *src1, int16_t *src2, uint8_t *src3, int n"); |
|
152 OIL_DEFINE_CLASS (multiply_and_acc_6xn_s16_u8, "int16_t *i1_6xn, int is1, " |
|
153 "int16_t *s1_6xn, int ss1, uint8_t *s2_6xn, int ss2, int n"); |
|
154 OIL_DEFINE_CLASS (multiply_and_acc_8xn_s16_u8, "int16_t *i1_8xn, int is1, " |
|
155 "int16_t *s1_8xn, int ss1, uint8_t *s2_8xn, int ss2, int n"); |
|
156 OIL_DEFINE_CLASS (multiply_and_acc_12xn_s16_u8, "int16_t *i1_12xn, int is1, " |
|
157 "int16_t *s1_12xn, int ss1, uint8_t *s2_12xn, int ss2, int n"); |
|
158 OIL_DEFINE_CLASS (multiply_and_acc_16xn_s16_u8, "int16_t *i1_16xn, int is1, " |
|
159 "int16_t *s1_16xn, int ss1, uint8_t *s2_16xn, int ss2, int n"); |
|
160 OIL_DEFINE_CLASS (multiply_and_acc_24xn_s16_u8, "int16_t *i1_24xn, int is1, " |
|
161 "int16_t *s1_24xn, int ss1, uint8_t *s2_24xn, int ss2, int n"); |
|
162 OIL_DEFINE_CLASS_FULL (combine2_8xn_u8, "uint8_t *d_8xn, int ds1, " |
|
163 "uint8_t *s1_8xn, int ss1, uint8_t *s2_8xn, int ss2, int16_t *s3_4, int n", combine2_test); |
|
164 OIL_DEFINE_CLASS_FULL (combine2_12xn_u8, "uint8_t *d_12xn, int ds1, " |
|
165 "uint8_t *s1_12xn, int ss1, uint8_t *s2_12xn, int ss2, int16_t *s3_4, int n", combine2_test); |
|
166 OIL_DEFINE_CLASS_FULL (combine2_16xn_u8, "uint8_t *d_16xn, int ds1, " |
|
167 "uint8_t *s1_16xn, int ss1, uint8_t *s2_16xn, int ss2, int16_t *s3_4, int n", combine2_test); |
|
168 OIL_DEFINE_CLASS_FULL (combine4_8xn_u8, "uint8_t *d_8xn, int ds1, " |
|
169 "uint8_t *s1_8xn, int ss1, uint8_t *s2_8xn, int ss2, uint8_t *s3_8xn, " |
|
170 "int ss3, uint8_t *s4_8xn, int ss4, int16_t *s5_6, int n", combine4_test); |
|
171 OIL_DEFINE_CLASS_FULL (combine4_12xn_u8, "uint8_t *d_12xn, int ds1, " |
|
172 "uint8_t *s1_12xn, int ss1, uint8_t *s2_12xn, int ss2, uint8_t *s3_12xn, " |
|
173 "int ss3, uint8_t *s4_12xn, int ss4, int16_t *s5_6, int n", combine4_test); |
|
174 OIL_DEFINE_CLASS_FULL (combine4_16xn_u8, "uint8_t *d_16xn, int ds1, " |
|
175 "uint8_t *s1_16xn, int ss1, uint8_t *s2_16xn, int ss2, uint8_t *s3_16xn, " |
|
176 "int ss3, uint8_t *s4_16xn, int ss4, int16_t *s5_6, int n", combine4_test); |
|
177 OIL_DEFINE_CLASS_FULL (add2_rshift_add_s16, "int16_t *d, int16_t *s1, " |
|
178 "int16_t *s2, int16_t *s3, int16_t *s4_2, int n", add2_test); |
|
179 OIL_DEFINE_CLASS_FULL (add2_rshift_sub_s16, "int16_t *d, int16_t *s1, " |
|
180 "int16_t *s2, int16_t *s3, int16_t *s4_2, int n", add2_test); |
|
181 OIL_DEFINE_CLASS (avg2_8xn_u8, "uint8_t *d_8xn, int ds1, " |
|
182 "uint8_t *s1_8xn, int ss1, uint8_t *s2_8xn, int ss2, int n"); |
|
183 OIL_DEFINE_CLASS (avg2_12xn_u8, "uint8_t *d_12xn, int ds1, " |
|
184 "uint8_t *s1_12xn, int ss1, uint8_t *s2_12xn, int ss2, int n"); |
|
185 OIL_DEFINE_CLASS (avg2_16xn_u8, "uint8_t *d_16xn, int ds1, " |
|
186 "uint8_t *s1_16xn, int ss1, uint8_t *s2_16xn, int ss2, int n"); |
|
187 |
|
188 |
|
189 #ifdef __SYMBIAN32__ |
|
190 |
|
191 #endif |
|
192 void |
|
193 deinterleave_ref (int16_t *d_2xn, int16_t *s_2xn, int n) |
|
194 { |
|
195 int i; |
|
196 |
|
197 for(i=0;i<n;i++) { |
|
198 d_2xn[i] = s_2xn[2*i]; |
|
199 d_2xn[n + i] = s_2xn[2*i + 1]; |
|
200 } |
|
201 } |
|
202 OIL_DEFINE_IMPL_REF (deinterleave_ref, deinterleave); |
|
203 |
|
204 #ifdef __SYMBIAN32__ |
|
205 |
|
206 #endif |
|
207 void |
|
208 deinterleave2_s16_ref (int16_t *d1_n, int16_t *d2_n, int16_t *s_2xn, int n) |
|
209 { |
|
210 int i; |
|
211 |
|
212 for(i=0;i<n;i++) { |
|
213 d1_n[i] = s_2xn[2*i]; |
|
214 d2_n[i] = s_2xn[2*i + 1]; |
|
215 } |
|
216 } |
|
217 OIL_DEFINE_IMPL_REF (deinterleave2_s16_ref, deinterleave2_s16); |
|
218 |
|
219 #ifdef __SYMBIAN32__ |
|
220 |
|
221 #endif |
|
222 void |
|
223 interleave_ref (int16_t *d_2xn, int16_t *s_2xn, int n) |
|
224 { |
|
225 int i; |
|
226 |
|
227 for(i=0;i<n;i++) { |
|
228 d_2xn[2*i] = s_2xn[i]; |
|
229 d_2xn[2*i + 1] = s_2xn[n + i]; |
|
230 } |
|
231 } |
|
232 OIL_DEFINE_IMPL_REF (interleave_ref, interleave); |
|
233 |
|
234 #ifdef __SYMBIAN32__ |
|
235 |
|
236 #endif |
|
237 void |
|
238 interleave2_s16_ref (int16_t *d_2xn, int16_t *s1_n, int16_t *s2_n, int n) |
|
239 { |
|
240 int i; |
|
241 |
|
242 for(i=0;i<n;i++) { |
|
243 d_2xn[2*i] = s1_n[i]; |
|
244 d_2xn[2*i + 1] = s2_n[i]; |
|
245 } |
|
246 } |
|
247 OIL_DEFINE_IMPL_REF (interleave2_s16_ref, interleave2_s16); |
|
248 |
|
249 #ifdef __SYMBIAN32__ |
|
250 |
|
251 #endif |
|
252 void |
|
253 synth_daub97_ref (int16_t *d_2xn, int16_t *s_2xn, int n) |
|
254 { |
|
255 int i; |
|
256 |
|
257 if (n==0) return; |
|
258 /* predict */ |
|
259 d_2xn[0] = s_2xn[0] - ((1817 * s_2xn[1]) >> 11); |
|
260 for(i=2;i<n*2;i+=2){ |
|
261 d_2xn[i] = s_2xn[i] - ((1817 * (s_2xn[i-1] + s_2xn[i+1])) >> 12); |
|
262 } |
|
263 for(i=1;i<n*2-2;i+=2){ |
|
264 d_2xn[i] = s_2xn[i] - ((3616 * (d_2xn[i-1] + d_2xn[i+1])) >> 12); |
|
265 } |
|
266 d_2xn[n*2-1] = s_2xn[n*2-1] - ((3616 * d_2xn[n*2-2]) >> 11); |
|
267 |
|
268 /* update */ |
|
269 d_2xn[0] += (217 * d_2xn[1]) >> 11; |
|
270 for(i=2;i<n*2;i+=2){ |
|
271 d_2xn[i] += (217 * (d_2xn[i-1] + d_2xn[i+1])) >> 12; |
|
272 } |
|
273 for(i=1;i<n*2-2;i+=2){ |
|
274 d_2xn[i] += (6497 * (d_2xn[i-1] + d_2xn[i+1])) >> 12; |
|
275 } |
|
276 d_2xn[n*2-1] += (6497 * d_2xn[n*2-2]) >> 11; |
|
277 } |
|
278 OIL_DEFINE_IMPL_REF (synth_daub97_ref, synth_daub97); |
|
279 |
|
280 #ifdef __SYMBIAN32__ |
|
281 |
|
282 #endif |
|
283 void |
|
284 split_daub97_ref (int16_t *d_2xn, int16_t *s_2xn, int n) |
|
285 { |
|
286 int i; |
|
287 |
|
288 if (n==0) return; |
|
289 /* predict */ |
|
290 for(i=1;i<n*2-2;i+=2){ |
|
291 d_2xn[i] = s_2xn[i] - ((6497 * (s_2xn[i-1] + s_2xn[i+1])) >> 12); |
|
292 } |
|
293 d_2xn[n*2-1] = s_2xn[n*2-1] - ((6497 * s_2xn[n*2-2]) >> 11); |
|
294 d_2xn[0] = s_2xn[0] - ((217 * d_2xn[1]) >> 11); |
|
295 for(i=2;i<n*2;i+=2){ |
|
296 d_2xn[i] = s_2xn[i] - ((217 * (d_2xn[i-1] + d_2xn[i+1])) >> 12); |
|
297 } |
|
298 |
|
299 /* update */ |
|
300 for(i=1;i<n*2-2;i+=2){ |
|
301 d_2xn[i] += (3616 * (d_2xn[i-1] + d_2xn[i+1])) >> 12; |
|
302 } |
|
303 d_2xn[n*2-1] += (3616 * d_2xn[n*2-2]) >> 11; |
|
304 d_2xn[0] += (1817 * d_2xn[1]) >> 11; |
|
305 for(i=2;i<n*2;i+=2){ |
|
306 d_2xn[i] += (1817 * (d_2xn[i-1] + d_2xn[i+1])) >> 12; |
|
307 } |
|
308 } |
|
309 OIL_DEFINE_IMPL_REF (split_daub97_ref, split_daub97); |
|
310 |
|
311 |
|
312 #ifdef __SYMBIAN32__ |
|
313 |
|
314 #endif |
|
315 void |
|
316 split_approx97_ref (int16_t *d_2xn, int16_t *s_2xn, int n) |
|
317 { |
|
318 int i; |
|
319 |
|
320 if (n==0) return; |
|
321 if (n==1) { |
|
322 d_2xn[1] = s_2xn[1] - s_2xn[0]; |
|
323 d_2xn[0] = s_2xn[0] + (d_2xn[1] >> 1); |
|
324 } else if (n==2) { |
|
325 /* predict */ |
|
326 d_2xn[1] = s_2xn[1] - ((9*(s_2xn[0] + s_2xn[2]) - (s_2xn[2] + s_2xn[2])) >> 4); |
|
327 d_2xn[3] = s_2xn[3] - ((9*s_2xn[2] - s_2xn[0]) >> 3); |
|
328 |
|
329 /* update */ |
|
330 d_2xn[0] = s_2xn[0] + (d_2xn[1] >> 1); |
|
331 d_2xn[2] = s_2xn[2] + ((d_2xn[1] + d_2xn[3]) >> 2); |
|
332 } else { |
|
333 /* predict */ |
|
334 d_2xn[1] = s_2xn[1] - ((9*(s_2xn[0] + s_2xn[2]) - (s_2xn[2] + s_2xn[4])) >> 4); |
|
335 for(i=3;i<n*2-4;i+=2){ |
|
336 d_2xn[i] = s_2xn[i] - ((9*(s_2xn[i-1] + s_2xn[i+1]) - (s_2xn[i-3] + s_2xn[i+3])) >> 4); |
|
337 } |
|
338 d_2xn[n*2-3] = s_2xn[n*2-3] - ((9*(s_2xn[n*2-4] + s_2xn[n*2-2]) - (s_2xn[n*2-6] + s_2xn[n*2-2])) >> 4); |
|
339 d_2xn[n*2-1] = s_2xn[n*2-1] - ((9*s_2xn[n*2-2] - s_2xn[n*2-4]) >> 3); |
|
340 |
|
341 /* update */ |
|
342 d_2xn[0] = s_2xn[0] + (d_2xn[1] >> 1); |
|
343 for(i=2;i<n*2;i+=2){ |
|
344 d_2xn[i] = s_2xn[i] + ((d_2xn[i-1] + d_2xn[i+1]) >> 2); |
|
345 } |
|
346 } |
|
347 |
|
348 } |
|
349 OIL_DEFINE_IMPL_REF (split_approx97_ref, split_approx97); |
|
350 |
|
351 #ifdef __SYMBIAN32__ |
|
352 |
|
353 #endif |
|
354 void |
|
355 synth_approx97_ref (int16_t *d_2xn, int16_t *s_2xn, int n) |
|
356 { |
|
357 int i; |
|
358 |
|
359 if (n==0) return; |
|
360 if (n==1) { |
|
361 d_2xn[0] = s_2xn[0] - (s_2xn[1] >> 1); |
|
362 d_2xn[1] = s_2xn[1] + d_2xn[0]; |
|
363 } else if (n==2) { |
|
364 /* predict */ |
|
365 d_2xn[0] = s_2xn[0] - (s_2xn[1] >> 1); |
|
366 d_2xn[2] = s_2xn[2] - ((s_2xn[1] + s_2xn[3]) >> 2); |
|
367 |
|
368 /* update */ |
|
369 d_2xn[1] = s_2xn[1] + ((9*(d_2xn[0] + d_2xn[2]) - (d_2xn[2] + d_2xn[2])) >> 4); |
|
370 d_2xn[3] = s_2xn[3] + ((9*d_2xn[2] - d_2xn[0]) >> 3); |
|
371 } else { |
|
372 /* predict */ |
|
373 d_2xn[0] = s_2xn[0] - (s_2xn[1] >> 1); |
|
374 for(i=2;i<n*2;i+=2){ |
|
375 d_2xn[i] = s_2xn[i] - ((s_2xn[i-1] + s_2xn[i+1]) >> 2); |
|
376 } |
|
377 |
|
378 /* update */ |
|
379 d_2xn[1] = s_2xn[1] + ((9*(d_2xn[0] + d_2xn[2]) - (d_2xn[2] + d_2xn[4])) >> 4); |
|
380 for(i=3;i<n*2-4;i+=2){ |
|
381 d_2xn[i] = s_2xn[i] + ((9*(d_2xn[i-1] + d_2xn[i+1]) - (d_2xn[i-3] + d_2xn[i+3])) >> 4); |
|
382 } |
|
383 d_2xn[n*2-3] = s_2xn[n*2-3] + ((9*(d_2xn[n*2-4] + d_2xn[n*2-2]) - (d_2xn[n*2-6] + d_2xn[n*2-2])) >> 4); |
|
384 d_2xn[n*2-1] = s_2xn[n*2-1] + ((9*d_2xn[n*2-2] - d_2xn[n*2-4]) >> 3); |
|
385 } |
|
386 } |
|
387 OIL_DEFINE_IMPL_REF (synth_approx97_ref, synth_approx97); |
|
388 |
|
389 #ifdef __SYMBIAN32__ |
|
390 |
|
391 #endif |
|
392 void |
|
393 split_53_ref (int16_t *d_2xn, int16_t *s_2xn, int n) |
|
394 { |
|
395 int i; |
|
396 |
|
397 if (n==0) return; |
|
398 if (n == 1) { |
|
399 d_2xn[1] = s_2xn[1] - s_2xn[0]; |
|
400 d_2xn[0] = s_2xn[0] + (d_2xn[1] >> 1); |
|
401 } else { |
|
402 d_2xn[1] = s_2xn[1] - ((s_2xn[0] + s_2xn[2]) >> 1); |
|
403 d_2xn[0] = s_2xn[0] + (d_2xn[1] >> 1); |
|
404 for(i=2;i<n*2-2;i+=2){ |
|
405 d_2xn[i+1] = s_2xn[i+1] - ((s_2xn[i] + s_2xn[i+2]) >> 1); |
|
406 d_2xn[i] = s_2xn[i] + ((d_2xn[i-1] + d_2xn[i+1]) >> 2); |
|
407 } |
|
408 d_2xn[n*2-1] = s_2xn[n*2-1] - s_2xn[n*2-2]; |
|
409 d_2xn[n*2-2] = s_2xn[n*2-2] + ((d_2xn[n*2-3] + d_2xn[n*2-1]) >> 2); |
|
410 } |
|
411 } |
|
412 OIL_DEFINE_IMPL_REF (split_53_ref, split_53); |
|
413 |
|
414 #ifdef __SYMBIAN32__ |
|
415 |
|
416 #endif |
|
417 void |
|
418 synth_53_ref (int16_t *d_2xn, int16_t *s_2xn, int n) |
|
419 { |
|
420 int i; |
|
421 |
|
422 if (n==0) return; |
|
423 if (n == 1) { |
|
424 d_2xn[0] = s_2xn[0] - (s_2xn[1] >> 1); |
|
425 d_2xn[1] = s_2xn[1] + d_2xn[0]; |
|
426 } else { |
|
427 d_2xn[0] = s_2xn[0] - (s_2xn[1] >> 1); |
|
428 for(i=2;i<n*2-2;i+=2){ |
|
429 d_2xn[i] = s_2xn[i] - ((s_2xn[i-1] + s_2xn[i+1]) >> 2); |
|
430 d_2xn[i-1] = s_2xn[i-1] + ((d_2xn[i] + d_2xn[i-2]) >> 1); |
|
431 } |
|
432 d_2xn[n*2-2] = s_2xn[n*2-2] - ((s_2xn[n*2-3] + s_2xn[n*2-1]) >> 2); |
|
433 d_2xn[n*2-3] = s_2xn[n*2-3] + ((d_2xn[n*2-2] + d_2xn[n*2-4]) >> 1); |
|
434 d_2xn[n*2-1] = s_2xn[n*2-1] + d_2xn[n*2-2]; |
|
435 } |
|
436 } |
|
437 OIL_DEFINE_IMPL_REF (synth_53_ref, synth_53); |
|
438 |
|
439 |
|
440 #ifdef __SYMBIAN32__ |
|
441 |
|
442 #endif |
|
443 void |
|
444 split_135_ref (int16_t *d_2xn, int16_t *s_2xn, int n) |
|
445 { |
|
446 int i; |
|
447 |
|
448 if (n==0) return; |
|
449 if (n==1) { |
|
450 d_2xn[1] = s_2xn[1] - (s_2xn[0]); |
|
451 d_2xn[0] = s_2xn[0] + (d_2xn[1]>>1); |
|
452 } else if (n==2) { |
|
453 /* predict */ |
|
454 d_2xn[1] = s_2xn[1] - ((9*(s_2xn[0] + s_2xn[2]) - (s_2xn[2] + s_2xn[2])) >> 4); |
|
455 d_2xn[3] = s_2xn[3] - ((9*s_2xn[2] - s_2xn[0]) >> 3); |
|
456 |
|
457 /* update */ |
|
458 d_2xn[0] = s_2xn[0] + ((9*d_2xn[1] - d_2xn[3]) >> 4); |
|
459 d_2xn[2] = s_2xn[2] + ((9*(d_2xn[1] + d_2xn[3]) - (d_2xn[1] + d_2xn[1])) >> 5); |
|
460 } else { |
|
461 /* predict */ |
|
462 d_2xn[1] = s_2xn[1] - ((9*(s_2xn[0] + s_2xn[2]) - (s_2xn[2] + s_2xn[4])) >> 4); |
|
463 for(i=3;i<n*2-4;i+=2){ |
|
464 d_2xn[i] = s_2xn[i] - ((9*(s_2xn[i-1] + s_2xn[i+1]) - (s_2xn[i-3] + s_2xn[i+3])) >> 4); |
|
465 } |
|
466 d_2xn[n*2-3] = s_2xn[n*2-3] - ((9*(s_2xn[n*2-4] + s_2xn[n*2-2]) - (s_2xn[n*2-6] + s_2xn[n*2-2])) >> 4); |
|
467 d_2xn[n*2-1] = s_2xn[n*2-1] - ((9*s_2xn[n*2-2] - s_2xn[n*2-4]) >> 3); |
|
468 |
|
469 /* update */ |
|
470 d_2xn[0] = s_2xn[0] + ((9*d_2xn[1] - d_2xn[3]) >> 4); |
|
471 d_2xn[2] = s_2xn[2] + ((9*(d_2xn[1] + d_2xn[3]) - (d_2xn[1] + d_2xn[5])) >> 5); |
|
472 for(i=4;i<n*2-2;i+=2){ |
|
473 d_2xn[i] = s_2xn[i] + ((9*(d_2xn[i-1] + d_2xn[i+1]) - (d_2xn[i-3] + d_2xn[i+3])) >> 5); |
|
474 } |
|
475 d_2xn[n*2-2] = s_2xn[n*2-2] + ((9*(d_2xn[n*2-3] + d_2xn[n*2-1]) - (d_2xn[n*2-5] + d_2xn[n*2-1])) >> 5); |
|
476 } |
|
477 |
|
478 } |
|
479 OIL_DEFINE_IMPL_REF (split_135_ref, split_135); |
|
480 |
|
481 #ifdef __SYMBIAN32__ |
|
482 |
|
483 #endif |
|
484 void |
|
485 synth_135_ref (int16_t *d_2xn, int16_t *s_2xn, int n) |
|
486 { |
|
487 int i; |
|
488 |
|
489 if (n==0) return; |
|
490 if (n==1) { |
|
491 d_2xn[0] = s_2xn[0] - (s_2xn[1]>>1); |
|
492 d_2xn[1] = s_2xn[1] + (d_2xn[0]); |
|
493 } else if (n==2) { |
|
494 /* predict */ |
|
495 d_2xn[0] = s_2xn[0] - ((9*s_2xn[1] - s_2xn[3]) >> 4); |
|
496 d_2xn[2] = s_2xn[2] - ((9*(s_2xn[1] + s_2xn[3]) - (s_2xn[1] + s_2xn[1])) >> 5); |
|
497 |
|
498 /* update */ |
|
499 d_2xn[1] = s_2xn[1] + ((9*(d_2xn[0] + d_2xn[2]) - (d_2xn[2] + d_2xn[2])) >> 4); |
|
500 d_2xn[3] = s_2xn[3] + ((9*d_2xn[2] - d_2xn[0]) >> 3); |
|
501 } else { |
|
502 /* predict */ |
|
503 d_2xn[0] = s_2xn[0] - ((9*s_2xn[1] - s_2xn[3]) >> 4); |
|
504 d_2xn[2] = s_2xn[2] - ((9*(s_2xn[1] + s_2xn[3]) - (s_2xn[1] + s_2xn[5])) >> 5); |
|
505 for(i=4;i<n*2-2;i+=2){ |
|
506 d_2xn[i] = s_2xn[i] - ((9*(s_2xn[i-1] + s_2xn[i+1]) - (s_2xn[i-3] + s_2xn[i+3])) >> 5); |
|
507 } |
|
508 d_2xn[n*2-2] = s_2xn[n*2-2] - ((9*(s_2xn[n*2-3] + s_2xn[n*2-1]) - (s_2xn[n*2-5] + s_2xn[n*2-1])) >> 5); |
|
509 |
|
510 /* update */ |
|
511 d_2xn[1] = s_2xn[1] + ((9*(d_2xn[0] + d_2xn[2]) - (d_2xn[2] + d_2xn[4])) >> 4); |
|
512 for(i=3;i<n*2-4;i+=2){ |
|
513 d_2xn[i] = s_2xn[i] + ((9*(d_2xn[i-1] + d_2xn[i+1]) - (d_2xn[i-3] + d_2xn[i+3])) >> 4); |
|
514 } |
|
515 d_2xn[n*2-3] = s_2xn[n*2-3] + ((9*(d_2xn[n*2-4] + d_2xn[n*2-2]) - (d_2xn[n*2-6] + d_2xn[n*2-2])) >> 4); |
|
516 d_2xn[n*2-1] = s_2xn[n*2-1] + ((9*d_2xn[n*2-2] - d_2xn[n*2-4]) >> 3); |
|
517 } |
|
518 } |
|
519 OIL_DEFINE_IMPL_REF (synth_135_ref, synth_135); |
|
520 |
|
521 |
|
522 |
|
523 |
|
524 static void |
|
525 lift_test (OilTest *test) |
|
526 { |
|
527 int16_t *data; |
|
528 int i; |
|
529 |
|
530 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC1); |
|
531 for(i=0;i<test->n;i++){ |
|
532 data[i] = oil_rand_u8(); |
|
533 } |
|
534 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC2); |
|
535 for(i=0;i<test->n;i++){ |
|
536 data[i] = oil_rand_u8(); |
|
537 } |
|
538 data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC3); |
|
539 for(i=0;i<test->n;i++){ |
|
540 data[i] = oil_rand_u8(); |
|
541 } |
|
542 } |
|
543 |
|
544 OIL_DEFINE_CLASS_FULL (lift_add_shift1, |
|
545 "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n", lift_test); |
|
546 OIL_DEFINE_CLASS_FULL (lift_sub_shift1, |
|
547 "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n", lift_test); |
|
548 OIL_DEFINE_CLASS_FULL (lift_add_shift2, |
|
549 "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n", lift_test); |
|
550 OIL_DEFINE_CLASS_FULL (lift_sub_shift2, |
|
551 "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n", lift_test); |
|
552 OIL_DEFINE_CLASS_FULL (lift_add_mult_shift12, |
|
553 "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4_1, int n", lift_test); |
|
554 OIL_DEFINE_CLASS_FULL (lift_sub_mult_shift12, |
|
555 "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4_1, int n", lift_test); |
|
556 OIL_DEFINE_CLASS_FULL (lift_add_135, |
|
557 "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int16_t *s5, int n", lift_test); |
|
558 OIL_DEFINE_CLASS_FULL (lift_sub_135, |
|
559 "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int16_t *s5, int n", lift_test); |
|
560 |
|
561 |
|
562 #ifdef __SYMBIAN32__ |
|
563 |
|
564 #endif |
|
565 void |
|
566 lift_add_shift1_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n) |
|
567 { |
|
568 int i; |
|
569 for(i=0;i<n;i++) { |
|
570 d[i] = s1[i] + ((s2[i] + s3[i])>>1); |
|
571 } |
|
572 } |
|
573 OIL_DEFINE_IMPL_REF (lift_add_shift1_ref, lift_add_shift1); |
|
574 |
|
575 #ifdef __SYMBIAN32__ |
|
576 |
|
577 #endif |
|
578 void |
|
579 lift_sub_shift1_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n) |
|
580 { |
|
581 int i; |
|
582 for(i=0;i<n;i++) { |
|
583 d[i] = s1[i] - ((s2[i] + s3[i])>>1); |
|
584 } |
|
585 } |
|
586 OIL_DEFINE_IMPL_REF (lift_sub_shift1_ref, lift_sub_shift1); |
|
587 |
|
588 #ifdef __SYMBIAN32__ |
|
589 |
|
590 #endif |
|
591 void |
|
592 lift_add_shift2_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n) |
|
593 { |
|
594 int i; |
|
595 for(i=0;i<n;i++) { |
|
596 d[i] = s1[i] + ((s2[i] + s3[i])>>2); |
|
597 } |
|
598 } |
|
599 OIL_DEFINE_IMPL_REF (lift_add_shift2_ref, lift_add_shift2); |
|
600 |
|
601 #ifdef __SYMBIAN32__ |
|
602 |
|
603 #endif |
|
604 void |
|
605 lift_sub_shift2_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n) |
|
606 { |
|
607 int i; |
|
608 for(i=0;i<n;i++) { |
|
609 d[i] = s1[i] - ((s2[i] + s3[i])>>2); |
|
610 } |
|
611 } |
|
612 OIL_DEFINE_IMPL_REF (lift_sub_shift2_ref, lift_sub_shift2); |
|
613 |
|
614 #ifdef __SYMBIAN32__ |
|
615 |
|
616 #endif |
|
617 void |
|
618 lift_add_mult_shift12_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int n) |
|
619 { |
|
620 int i; |
|
621 for(i=0;i<n;i++) { |
|
622 d[i] = s1[i] + ((s4[0]*(s2[i] + s3[i]))>>12); |
|
623 } |
|
624 } |
|
625 OIL_DEFINE_IMPL_REF (lift_add_mult_shift12_ref, lift_add_mult_shift12); |
|
626 |
|
627 #ifdef __SYMBIAN32__ |
|
628 |
|
629 #endif |
|
630 void |
|
631 lift_sub_mult_shift12_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int n) |
|
632 { |
|
633 int i; |
|
634 for(i=0;i<n;i++) { |
|
635 d[i] = s1[i] - ((s4[0]*(s2[i] + s3[i]))>>12); |
|
636 } |
|
637 } |
|
638 OIL_DEFINE_IMPL_REF (lift_sub_mult_shift12_ref, lift_sub_mult_shift12); |
|
639 |
|
640 #ifdef __SYMBIAN32__ |
|
641 |
|
642 #endif |
|
643 void |
|
644 lift_add_135_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, |
|
645 int16_t *s4, int16_t *s5, int n) |
|
646 { |
|
647 int i; |
|
648 for(i=0;i<n;i++) { |
|
649 d[i] = s1[i] + ((9*(s3[i-1] + s4[i+1]) - (s2[i-3] + s5[i+3])) >> 4); |
|
650 } |
|
651 } |
|
652 OIL_DEFINE_IMPL_REF (lift_add_135_ref, lift_add_135); |
|
653 |
|
654 #ifdef __SYMBIAN32__ |
|
655 |
|
656 #endif |
|
657 void |
|
658 lift_sub_135_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, |
|
659 int16_t *s4, int16_t *s5, int n) |
|
660 { |
|
661 int i; |
|
662 for(i=0;i<n;i++) { |
|
663 d[i] = s1[i] - ((9*(s3[i-1] + s4[i+1]) - (s2[i-3] + s5[i+3])) >> 4); |
|
664 } |
|
665 } |
|
666 OIL_DEFINE_IMPL_REF (lift_sub_135_ref, lift_sub_135); |
|
667 |
|
668 |
|
669 #ifdef __SYMBIAN32__ |
|
670 |
|
671 #endif |
|
672 void |
|
673 add_const_rshift_s16_ref(int16_t *d1, int16_t *s1, int16_t *s3_2, int n) |
|
674 { |
|
675 int i; |
|
676 for(i=0;i<n;i++){ |
|
677 d1[i] = (s1[i] + s3_2[0])>>s3_2[1]; |
|
678 } |
|
679 } |
|
680 OIL_DEFINE_IMPL_REF (add_const_rshift_s16_ref, add_const_rshift_s16); |
|
681 |
|
682 #ifdef __SYMBIAN32__ |
|
683 |
|
684 #endif |
|
685 void |
|
686 lshift_s16_ref(int16_t *d1, int16_t *s1, int16_t *s3_1, int n) |
|
687 { |
|
688 int i; |
|
689 for(i=0;i<n;i++){ |
|
690 d1[i] = s1[i]<<s3_1[0]; |
|
691 } |
|
692 } |
|
693 OIL_DEFINE_IMPL_REF (lshift_s16_ref, lshift_s16); |
|
694 |
|
695 #ifdef __SYMBIAN32__ |
|
696 |
|
697 #endif |
|
698 void |
|
699 multiply_and_add_s16_ref (int16_t *d, int16_t *src1, int16_t *src2, int16_t *src3, int n) |
|
700 { |
|
701 int i; |
|
702 for(i=0;i<n;i++){ |
|
703 d[i] = src1[i] + src2[i]*src3[i]; |
|
704 } |
|
705 } |
|
706 OIL_DEFINE_IMPL_REF (multiply_and_add_s16_ref, multiply_and_add_s16); |
|
707 |
|
708 #ifdef __SYMBIAN32__ |
|
709 |
|
710 #endif |
|
711 void |
|
712 multiply_and_add_s16_u8_ref (int16_t *d, int16_t *src1, int16_t *src2, |
|
713 uint8_t *src3, int n) |
|
714 { |
|
715 int i; |
|
716 for(i=0;i<n;i++){ |
|
717 d[i] = src1[i] + src2[i]*src3[i]; |
|
718 } |
|
719 } |
|
720 OIL_DEFINE_IMPL_REF (multiply_and_add_s16_u8_ref, multiply_and_add_s16_u8); |
|
721 |
|
722 #ifdef __SYMBIAN32__ |
|
723 |
|
724 #endif |
|
725 void |
|
726 multiply_and_acc_6xn_s16_u8_ref (int16_t *i1, int is1, int16_t *s1, |
|
727 int ss1, uint8_t *s2, int ss2, int n) |
|
728 { |
|
729 int i, j; |
|
730 for(j=0;j<n;j++){ |
|
731 for(i=0;i<6;i++){ |
|
732 i1[i] += s1[i]*s2[i]; |
|
733 } |
|
734 i1 = OIL_OFFSET(i1,is1); |
|
735 s1 = OIL_OFFSET(s1,ss1); |
|
736 s2 = OIL_OFFSET(s2,ss2); |
|
737 } |
|
738 } |
|
739 OIL_DEFINE_IMPL_REF (multiply_and_acc_6xn_s16_u8_ref, |
|
740 multiply_and_acc_6xn_s16_u8); |
|
741 |
|
742 #ifdef __SYMBIAN32__ |
|
743 |
|
744 #endif |
|
745 void |
|
746 multiply_and_acc_8xn_s16_u8_ref (int16_t *i1, int is1, int16_t *s1, |
|
747 int ss1, uint8_t *s2, int ss2, int n) |
|
748 { |
|
749 int i, j; |
|
750 for(j=0;j<n;j++){ |
|
751 for(i=0;i<8;i++){ |
|
752 i1[i] += s1[i]*s2[i]; |
|
753 } |
|
754 i1 = OIL_OFFSET(i1,is1); |
|
755 s1 = OIL_OFFSET(s1,ss1); |
|
756 s2 = OIL_OFFSET(s2,ss2); |
|
757 } |
|
758 } |
|
759 OIL_DEFINE_IMPL_REF (multiply_and_acc_8xn_s16_u8_ref, |
|
760 multiply_and_acc_8xn_s16_u8); |
|
761 |
|
762 #ifdef __SYMBIAN32__ |
|
763 |
|
764 #endif |
|
765 void |
|
766 multiply_and_acc_12xn_s16_u8_ref (int16_t *i1, int is1, int16_t *s1, |
|
767 int ss1, uint8_t *s2, int ss2, int n) |
|
768 { |
|
769 int i, j; |
|
770 for(j=0;j<n;j++){ |
|
771 for(i=0;i<12;i++){ |
|
772 i1[i] += s1[i]*s2[i]; |
|
773 } |
|
774 i1 = OIL_OFFSET(i1,is1); |
|
775 s1 = OIL_OFFSET(s1,ss1); |
|
776 s2 = OIL_OFFSET(s2,ss2); |
|
777 } |
|
778 } |
|
779 OIL_DEFINE_IMPL_REF (multiply_and_acc_12xn_s16_u8_ref, |
|
780 multiply_and_acc_12xn_s16_u8); |
|
781 |
|
782 #ifdef __SYMBIAN32__ |
|
783 |
|
784 #endif |
|
785 void |
|
786 multiply_and_acc_16xn_s16_u8_ref (int16_t *i1, int is1, int16_t *s1, |
|
787 int ss1, uint8_t *s2, int ss2, int n) |
|
788 { |
|
789 int i, j; |
|
790 for(j=0;j<n;j++){ |
|
791 for(i=0;i<16;i++){ |
|
792 i1[i] += s1[i]*s2[i]; |
|
793 } |
|
794 i1 = OIL_OFFSET(i1,is1); |
|
795 s1 = OIL_OFFSET(s1,ss1); |
|
796 s2 = OIL_OFFSET(s2,ss2); |
|
797 } |
|
798 } |
|
799 OIL_DEFINE_IMPL_REF (multiply_and_acc_16xn_s16_u8_ref, |
|
800 multiply_and_acc_16xn_s16_u8); |
|
801 |
|
802 #ifdef __SYMBIAN32__ |
|
803 |
|
804 #endif |
|
805 void |
|
806 multiply_and_acc_24xn_s16_u8_ref (int16_t *i1, int is1, int16_t *s1, |
|
807 int ss1, uint8_t *s2, int ss2, int n) |
|
808 { |
|
809 int i, j; |
|
810 for(j=0;j<n;j++){ |
|
811 for(i=0;i<24;i++){ |
|
812 i1[i] += s1[i]*s2[i]; |
|
813 } |
|
814 i1 = OIL_OFFSET(i1,is1); |
|
815 s1 = OIL_OFFSET(s1,ss1); |
|
816 s2 = OIL_OFFSET(s2,ss2); |
|
817 } |
|
818 } |
|
819 OIL_DEFINE_IMPL_REF (multiply_and_acc_24xn_s16_u8_ref, |
|
820 multiply_and_acc_24xn_s16_u8); |
|
821 |
|
822 #ifdef __SYMBIAN32__ |
|
823 |
|
824 #endif |
|
825 void |
|
826 combine4_8xn_u8_ref (uint8_t *d, int ds1, |
|
827 uint8_t *s1, int ss1, |
|
828 uint8_t *s2, int ss2, |
|
829 uint8_t *s3, int ss3, |
|
830 uint8_t *s4, int ss4, |
|
831 int16_t *s5_6, int n) |
|
832 { |
|
833 int i; |
|
834 int j; |
|
835 for(j=0;j<n;j++){ |
|
836 for(i=0;i<8;i++){ |
|
837 int x = 0; |
|
838 x += s5_6[0] * s1[i]; |
|
839 x += s5_6[1] * s2[i]; |
|
840 x += s5_6[2] * s3[i]; |
|
841 x += s5_6[3] * s4[i]; |
|
842 d[i] = (x + s5_6[4]) >> s5_6[5]; |
|
843 } |
|
844 s1 += ss1; |
|
845 s2 += ss2; |
|
846 s3 += ss3; |
|
847 s4 += ss4; |
|
848 d += ds1; |
|
849 } |
|
850 } |
|
851 OIL_DEFINE_IMPL_REF (combine4_8xn_u8_ref, combine4_8xn_u8); |
|
852 |
|
853 #ifdef __SYMBIAN32__ |
|
854 |
|
855 #endif |
|
856 void |
|
857 combine4_12xn_u8_ref (uint8_t *d, int ds1, |
|
858 uint8_t *s1, int ss1, |
|
859 uint8_t *s2, int ss2, |
|
860 uint8_t *s3, int ss3, |
|
861 uint8_t *s4, int ss4, |
|
862 int16_t *s5_6, int n) |
|
863 { |
|
864 int i; |
|
865 int j; |
|
866 for(j=0;j<n;j++){ |
|
867 for(i=0;i<12;i++){ |
|
868 int x = 0; |
|
869 x += s5_6[0] * s1[i]; |
|
870 x += s5_6[1] * s2[i]; |
|
871 x += s5_6[2] * s3[i]; |
|
872 x += s5_6[3] * s4[i]; |
|
873 d[i] = (x + s5_6[4]) >> s5_6[5]; |
|
874 } |
|
875 s1 += ss1; |
|
876 s2 += ss2; |
|
877 s3 += ss3; |
|
878 s4 += ss4; |
|
879 d += ds1; |
|
880 } |
|
881 } |
|
882 OIL_DEFINE_IMPL_REF (combine4_12xn_u8_ref, combine4_12xn_u8); |
|
883 |
|
884 #ifdef __SYMBIAN32__ |
|
885 |
|
886 #endif |
|
887 void |
|
888 combine4_16xn_u8_ref (uint8_t *d, int ds1, |
|
889 uint8_t *s1, int ss1, |
|
890 uint8_t *s2, int ss2, |
|
891 uint8_t *s3, int ss3, |
|
892 uint8_t *s4, int ss4, |
|
893 int16_t *s5_6, int n) |
|
894 { |
|
895 int i; |
|
896 int j; |
|
897 for(j=0;j<n;j++){ |
|
898 for(i=0;i<16;i++){ |
|
899 int x = 0; |
|
900 x += s5_6[0] * s1[i]; |
|
901 x += s5_6[1] * s2[i]; |
|
902 x += s5_6[2] * s3[i]; |
|
903 x += s5_6[3] * s4[i]; |
|
904 d[i] = (x + s5_6[4]) >> s5_6[5]; |
|
905 } |
|
906 s1 += ss1; |
|
907 s2 += ss2; |
|
908 s3 += ss3; |
|
909 s4 += ss4; |
|
910 d += ds1; |
|
911 } |
|
912 } |
|
913 OIL_DEFINE_IMPL_REF (combine4_16xn_u8_ref, combine4_16xn_u8); |
|
914 |
|
915 #ifdef __SYMBIAN32__ |
|
916 |
|
917 #endif |
|
918 void |
|
919 combine2_8xn_u8_ref (uint8_t *d, int ds1, |
|
920 uint8_t *s1, int ss1, |
|
921 uint8_t *s2, int ss2, |
|
922 int16_t *s3_4, int n) |
|
923 { |
|
924 int i; |
|
925 int j; |
|
926 for(j=0;j<n;j++){ |
|
927 for(i=0;i<8;i++){ |
|
928 int x = 0; |
|
929 x += s3_4[0] * s1[i]; |
|
930 x += s3_4[1] * s2[i]; |
|
931 d[i] = (x + s3_4[2]) >> s3_4[3]; |
|
932 } |
|
933 s1 += ss1; |
|
934 s2 += ss2; |
|
935 d += ds1; |
|
936 } |
|
937 } |
|
938 OIL_DEFINE_IMPL_REF (combine2_8xn_u8_ref, combine2_8xn_u8); |
|
939 |
|
940 #ifdef __SYMBIAN32__ |
|
941 |
|
942 #endif |
|
943 void |
|
944 combine2_12xn_u8_ref (uint8_t *d, int ds1, |
|
945 uint8_t *s1, int ss1, |
|
946 uint8_t *s2, int ss2, |
|
947 int16_t *s3_4, int n) |
|
948 { |
|
949 int i; |
|
950 int j; |
|
951 for(j=0;j<n;j++){ |
|
952 for(i=0;i<12;i++){ |
|
953 int x = 0; |
|
954 x += s3_4[0] * s1[i]; |
|
955 x += s3_4[1] * s2[i]; |
|
956 d[i] = (x + s3_4[2]) >> s3_4[3]; |
|
957 } |
|
958 s1 += ss1; |
|
959 s2 += ss2; |
|
960 d += ds1; |
|
961 } |
|
962 } |
|
963 OIL_DEFINE_IMPL_REF (combine2_12xn_u8_ref, combine2_12xn_u8); |
|
964 |
|
965 #ifdef __SYMBIAN32__ |
|
966 |
|
967 #endif |
|
968 void |
|
969 combine2_16xn_u8_ref (uint8_t *d, int ds1, |
|
970 uint8_t *s1, int ss1, |
|
971 uint8_t *s2, int ss2, |
|
972 int16_t *s3_4, int n) |
|
973 { |
|
974 int i; |
|
975 int j; |
|
976 for(j=0;j<n;j++){ |
|
977 for(i=0;i<16;i++){ |
|
978 int x = 0; |
|
979 x += s3_4[0] * s1[i]; |
|
980 x += s3_4[1] * s2[i]; |
|
981 d[i] = (x + s3_4[2]) >> s3_4[3]; |
|
982 } |
|
983 s1 += ss1; |
|
984 s2 += ss2; |
|
985 d += ds1; |
|
986 } |
|
987 } |
|
988 OIL_DEFINE_IMPL_REF (combine2_16xn_u8_ref, combine2_16xn_u8); |
|
989 |
|
990 #ifdef __SYMBIAN32__ |
|
991 |
|
992 #endif |
|
993 void |
|
994 add2_rshift_add_s16_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, |
|
995 int16_t *s4_2, int n) |
|
996 { |
|
997 int i; |
|
998 for(i=0;i<n;i++) { |
|
999 d[i] = s1[i] + ((s2[i] + s3[i] + s4_2[0])>>s4_2[1]); |
|
1000 } |
|
1001 } |
|
1002 OIL_DEFINE_IMPL_REF (add2_rshift_add_s16_ref, add2_rshift_add_s16); |
|
1003 |
|
1004 #ifdef __SYMBIAN32__ |
|
1005 |
|
1006 #endif |
|
1007 void |
|
1008 add2_rshift_sub_s16_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, |
|
1009 int16_t *s4_2, int n) |
|
1010 { |
|
1011 int i; |
|
1012 for(i=0;i<n;i++) { |
|
1013 d[i] = s1[i] - ((s2[i] + s3[i] + s4_2[0])>>s4_2[1]); |
|
1014 } |
|
1015 } |
|
1016 OIL_DEFINE_IMPL_REF (add2_rshift_sub_s16_ref, add2_rshift_sub_s16); |
|
1017 |
|
1018 #ifdef __SYMBIAN32__ |
|
1019 |
|
1020 #endif |
|
1021 void |
|
1022 avg2_8xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1, |
|
1023 uint8_t *s2, int ss2, int n) |
|
1024 { |
|
1025 int i; |
|
1026 int j; |
|
1027 for(j=0;j<n;j++){ |
|
1028 for(i=0;i<8;i++){ |
|
1029 d[i] = (s1[i] + s2[i] + 1)>>1; |
|
1030 } |
|
1031 s1 += ss1; |
|
1032 s2 += ss2; |
|
1033 d += ds1; |
|
1034 } |
|
1035 } |
|
1036 OIL_DEFINE_IMPL_REF (avg2_8xn_u8_ref, avg2_8xn_u8); |
|
1037 |
|
1038 #ifdef __SYMBIAN32__ |
|
1039 |
|
1040 #endif |
|
1041 void |
|
1042 avg2_12xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1, |
|
1043 uint8_t *s2, int ss2, int n) |
|
1044 { |
|
1045 int i; |
|
1046 int j; |
|
1047 for(j=0;j<n;j++){ |
|
1048 for(i=0;i<12;i++){ |
|
1049 d[i] = (s1[i] + s2[i] + 1)>>1; |
|
1050 } |
|
1051 s1 += ss1; |
|
1052 s2 += ss2; |
|
1053 d += ds1; |
|
1054 } |
|
1055 } |
|
1056 OIL_DEFINE_IMPL_REF (avg2_12xn_u8_ref, avg2_12xn_u8); |
|
1057 |
|
1058 #ifdef __SYMBIAN32__ |
|
1059 |
|
1060 #endif |
|
1061 void |
|
1062 avg2_16xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1, |
|
1063 uint8_t *s2, int ss2, int n) |
|
1064 { |
|
1065 int i; |
|
1066 int j; |
|
1067 for(j=0;j<n;j++){ |
|
1068 for(i=0;i<16;i++){ |
|
1069 d[i] = (s1[i] + s2[i] + 1)>>1; |
|
1070 } |
|
1071 s1 += ss1; |
|
1072 s2 += ss2; |
|
1073 d += ds1; |
|
1074 } |
|
1075 } |
|
1076 OIL_DEFINE_IMPL_REF (avg2_16xn_u8_ref, avg2_16xn_u8); |
|
1077 |
|
1078 |
|
1079 |
|
1080 #ifdef __SYMBIAN32__ |
|
1081 |
|
1082 OilFunctionClass* __oil_function_class_deinterleave() { |
|
1083 return &_oil_function_class_deinterleave; |
|
1084 } |
|
1085 #endif |
|
1086 |
|
1087 #ifdef __SYMBIAN32__ |
|
1088 |
|
1089 OilFunctionClass* __oil_function_class_deinterleave2_s16() { |
|
1090 return &_oil_function_class_deinterleave2_s16; |
|
1091 } |
|
1092 #endif |
|
1093 |
|
1094 #ifdef __SYMBIAN32__ |
|
1095 |
|
1096 OilFunctionClass* __oil_function_class_interleave() { |
|
1097 return &_oil_function_class_interleave; |
|
1098 } |
|
1099 #endif |
|
1100 |
|
1101 #ifdef __SYMBIAN32__ |
|
1102 |
|
1103 OilFunctionClass* __oil_function_class_interleave2_s16() { |
|
1104 return &_oil_function_class_interleave2_s16; |
|
1105 } |
|
1106 #endif |
|
1107 |
|
1108 #ifdef __SYMBIAN32__ |
|
1109 |
|
1110 OilFunctionClass* __oil_function_class_synth_daub97() { |
|
1111 return &_oil_function_class_synth_daub97; |
|
1112 } |
|
1113 #endif |
|
1114 |
|
1115 #ifdef __SYMBIAN32__ |
|
1116 |
|
1117 OilFunctionClass* __oil_function_class_split_daub97() { |
|
1118 return &_oil_function_class_split_daub97; |
|
1119 } |
|
1120 #endif |
|
1121 |
|
1122 #ifdef __SYMBIAN32__ |
|
1123 |
|
1124 OilFunctionClass* __oil_function_class_split_approx97() { |
|
1125 return &_oil_function_class_split_approx97; |
|
1126 } |
|
1127 #endif |
|
1128 |
|
1129 #ifdef __SYMBIAN32__ |
|
1130 |
|
1131 OilFunctionClass* __oil_function_class_synth_approx97() { |
|
1132 return &_oil_function_class_synth_approx97; |
|
1133 } |
|
1134 #endif |
|
1135 |
|
1136 #ifdef __SYMBIAN32__ |
|
1137 |
|
1138 OilFunctionClass* __oil_function_class_split_53() { |
|
1139 return &_oil_function_class_split_53; |
|
1140 } |
|
1141 #endif |
|
1142 |
|
1143 #ifdef __SYMBIAN32__ |
|
1144 |
|
1145 OilFunctionClass* __oil_function_class_synth_53() { |
|
1146 return &_oil_function_class_synth_53; |
|
1147 } |
|
1148 #endif |
|
1149 |
|
1150 #ifdef __SYMBIAN32__ |
|
1151 |
|
1152 OilFunctionClass* __oil_function_class_split_135() { |
|
1153 return &_oil_function_class_split_135; |
|
1154 } |
|
1155 #endif |
|
1156 |
|
1157 #ifdef __SYMBIAN32__ |
|
1158 |
|
1159 OilFunctionClass* __oil_function_class_synth_135() { |
|
1160 return &_oil_function_class_synth_135; |
|
1161 } |
|
1162 #endif |
|
1163 |
|
1164 #ifdef __SYMBIAN32__ |
|
1165 |
|
1166 OilFunctionClass* __oil_function_class_add_const_rshift_s16() { |
|
1167 return &_oil_function_class_add_const_rshift_s16; |
|
1168 } |
|
1169 #endif |
|
1170 |
|
1171 #ifdef __SYMBIAN32__ |
|
1172 |
|
1173 OilFunctionClass* __oil_function_class_lshift_s16() { |
|
1174 return &_oil_function_class_lshift_s16; |
|
1175 } |
|
1176 #endif |
|
1177 |
|
1178 #ifdef __SYMBIAN32__ |
|
1179 |
|
1180 OilFunctionClass* __oil_function_class_multiply_and_add_s16() { |
|
1181 return &_oil_function_class_multiply_and_add_s16; |
|
1182 } |
|
1183 #endif |
|
1184 |
|
1185 #ifdef __SYMBIAN32__ |
|
1186 |
|
1187 OilFunctionClass* __oil_function_class_multiply_and_add_s16_u8() { |
|
1188 return &_oil_function_class_multiply_and_add_s16_u8; |
|
1189 } |
|
1190 #endif |
|
1191 |
|
1192 #ifdef __SYMBIAN32__ |
|
1193 |
|
1194 OilFunctionClass* __oil_function_class_multiply_and_acc_6xn_s16_u8() { |
|
1195 return &_oil_function_class_multiply_and_acc_6xn_s16_u8; |
|
1196 } |
|
1197 #endif |
|
1198 |
|
1199 #ifdef __SYMBIAN32__ |
|
1200 |
|
1201 OilFunctionClass* __oil_function_class_multiply_and_acc_8xn_s16_u8() { |
|
1202 return &_oil_function_class_multiply_and_acc_8xn_s16_u8; |
|
1203 } |
|
1204 #endif |
|
1205 |
|
1206 #ifdef __SYMBIAN32__ |
|
1207 |
|
1208 OilFunctionClass* __oil_function_class_multiply_and_acc_12xn_s16_u8() { |
|
1209 return &_oil_function_class_multiply_and_acc_12xn_s16_u8; |
|
1210 } |
|
1211 #endif |
|
1212 |
|
1213 #ifdef __SYMBIAN32__ |
|
1214 |
|
1215 OilFunctionClass* __oil_function_class_multiply_and_acc_16xn_s16_u8() { |
|
1216 return &_oil_function_class_multiply_and_acc_16xn_s16_u8; |
|
1217 } |
|
1218 #endif |
|
1219 |
|
1220 #ifdef __SYMBIAN32__ |
|
1221 |
|
1222 OilFunctionClass* __oil_function_class_multiply_and_acc_24xn_s16_u8() { |
|
1223 return &_oil_function_class_multiply_and_acc_24xn_s16_u8; |
|
1224 } |
|
1225 #endif |
|
1226 |
|
1227 #ifdef __SYMBIAN32__ |
|
1228 |
|
1229 OilFunctionClass* __oil_function_class_combine2_8xn_u8() { |
|
1230 return &_oil_function_class_combine2_8xn_u8; |
|
1231 } |
|
1232 #endif |
|
1233 |
|
1234 #ifdef __SYMBIAN32__ |
|
1235 |
|
1236 OilFunctionClass* __oil_function_class_combine2_12xn_u8() { |
|
1237 return &_oil_function_class_combine2_12xn_u8; |
|
1238 } |
|
1239 #endif |
|
1240 |
|
1241 #ifdef __SYMBIAN32__ |
|
1242 |
|
1243 OilFunctionClass* __oil_function_class_combine2_16xn_u8() { |
|
1244 return &_oil_function_class_combine2_16xn_u8; |
|
1245 } |
|
1246 #endif |
|
1247 |
|
1248 #ifdef __SYMBIAN32__ |
|
1249 |
|
1250 OilFunctionClass* __oil_function_class_combine4_8xn_u8() { |
|
1251 return &_oil_function_class_combine4_8xn_u8; |
|
1252 } |
|
1253 #endif |
|
1254 |
|
1255 #ifdef __SYMBIAN32__ |
|
1256 |
|
1257 OilFunctionClass* __oil_function_class_combine4_12xn_u8() { |
|
1258 return &_oil_function_class_combine4_12xn_u8; |
|
1259 } |
|
1260 #endif |
|
1261 |
|
1262 #ifdef __SYMBIAN32__ |
|
1263 |
|
1264 OilFunctionClass* __oil_function_class_combine4_16xn_u8() { |
|
1265 return &_oil_function_class_combine4_16xn_u8; |
|
1266 } |
|
1267 #endif |
|
1268 |
|
1269 #ifdef __SYMBIAN32__ |
|
1270 |
|
1271 OilFunctionClass* __oil_function_class_add2_rshift_add_s16() { |
|
1272 return &_oil_function_class_add2_rshift_add_s16; |
|
1273 } |
|
1274 #endif |
|
1275 |
|
1276 #ifdef __SYMBIAN32__ |
|
1277 |
|
1278 OilFunctionClass* __oil_function_class_add2_rshift_sub_s16() { |
|
1279 return &_oil_function_class_add2_rshift_sub_s16; |
|
1280 } |
|
1281 #endif |
|
1282 |
|
1283 #ifdef __SYMBIAN32__ |
|
1284 |
|
1285 OilFunctionClass* __oil_function_class_avg2_8xn_u8() { |
|
1286 return &_oil_function_class_avg2_8xn_u8; |
|
1287 } |
|
1288 #endif |
|
1289 |
|
1290 #ifdef __SYMBIAN32__ |
|
1291 |
|
1292 OilFunctionClass* __oil_function_class_avg2_12xn_u8() { |
|
1293 return &_oil_function_class_avg2_12xn_u8; |
|
1294 } |
|
1295 #endif |
|
1296 |
|
1297 #ifdef __SYMBIAN32__ |
|
1298 |
|
1299 OilFunctionClass* __oil_function_class_avg2_16xn_u8() { |
|
1300 return &_oil_function_class_avg2_16xn_u8; |
|
1301 } |
|
1302 #endif |
|
1303 |
|
1304 #ifdef __SYMBIAN32__ |
|
1305 |
|
1306 OilFunctionClass* __oil_function_class_lift_add_shift1() { |
|
1307 return &_oil_function_class_lift_add_shift1; |
|
1308 } |
|
1309 #endif |
|
1310 |
|
1311 #ifdef __SYMBIAN32__ |
|
1312 |
|
1313 OilFunctionClass* __oil_function_class_lift_sub_shift1() { |
|
1314 return &_oil_function_class_lift_sub_shift1; |
|
1315 } |
|
1316 #endif |
|
1317 |
|
1318 #ifdef __SYMBIAN32__ |
|
1319 |
|
1320 OilFunctionClass* __oil_function_class_lift_add_shift2() { |
|
1321 return &_oil_function_class_lift_add_shift2; |
|
1322 } |
|
1323 #endif |
|
1324 |
|
1325 #ifdef __SYMBIAN32__ |
|
1326 |
|
1327 OilFunctionClass* __oil_function_class_lift_sub_shift2() { |
|
1328 return &_oil_function_class_lift_sub_shift2; |
|
1329 } |
|
1330 #endif |
|
1331 |
|
1332 #ifdef __SYMBIAN32__ |
|
1333 |
|
1334 OilFunctionClass* __oil_function_class_lift_add_mult_shift12() { |
|
1335 return &_oil_function_class_lift_add_mult_shift12; |
|
1336 } |
|
1337 #endif |
|
1338 |
|
1339 #ifdef __SYMBIAN32__ |
|
1340 |
|
1341 OilFunctionClass* __oil_function_class_lift_sub_mult_shift12() { |
|
1342 return &_oil_function_class_lift_sub_mult_shift12; |
|
1343 } |
|
1344 #endif |
|
1345 |
|
1346 #ifdef __SYMBIAN32__ |
|
1347 |
|
1348 OilFunctionClass* __oil_function_class_lift_add_135() { |
|
1349 return &_oil_function_class_lift_add_135; |
|
1350 } |
|
1351 #endif |
|
1352 |
|
1353 #ifdef __SYMBIAN32__ |
|
1354 |
|
1355 OilFunctionClass* __oil_function_class_lift_sub_135() { |
|
1356 return &_oil_function_class_lift_sub_135; |
|
1357 } |
|
1358 #endif |
|
1359 |
|
1360 |
|
1361 |
|
1362 #ifdef __SYMBIAN32__ |
|
1363 |
|
1364 OilFunctionImpl* __oil_function_impl_deinterleave_ref() { |
|
1365 return &_oil_function_impl_deinterleave_ref; |
|
1366 } |
|
1367 #endif |
|
1368 |
|
1369 #ifdef __SYMBIAN32__ |
|
1370 |
|
1371 OilFunctionImpl* __oil_function_impl_deinterleave2_s16_ref() { |
|
1372 return &_oil_function_impl_deinterleave2_s16_ref; |
|
1373 } |
|
1374 #endif |
|
1375 |
|
1376 #ifdef __SYMBIAN32__ |
|
1377 |
|
1378 OilFunctionImpl* __oil_function_impl_interleave_ref() { |
|
1379 return &_oil_function_impl_interleave_ref; |
|
1380 } |
|
1381 #endif |
|
1382 |
|
1383 #ifdef __SYMBIAN32__ |
|
1384 |
|
1385 OilFunctionImpl* __oil_function_impl_interleave2_s16_ref() { |
|
1386 return &_oil_function_impl_interleave2_s16_ref; |
|
1387 } |
|
1388 #endif |
|
1389 |
|
1390 #ifdef __SYMBIAN32__ |
|
1391 |
|
1392 OilFunctionImpl* __oil_function_impl_synth_daub97_ref() { |
|
1393 return &_oil_function_impl_synth_daub97_ref; |
|
1394 } |
|
1395 #endif |
|
1396 |
|
1397 #ifdef __SYMBIAN32__ |
|
1398 |
|
1399 OilFunctionImpl* __oil_function_impl_split_daub97_ref() { |
|
1400 return &_oil_function_impl_split_daub97_ref; |
|
1401 } |
|
1402 #endif |
|
1403 |
|
1404 #ifdef __SYMBIAN32__ |
|
1405 |
|
1406 OilFunctionImpl* __oil_function_impl_split_approx97_ref() { |
|
1407 return &_oil_function_impl_split_approx97_ref; |
|
1408 } |
|
1409 #endif |
|
1410 |
|
1411 #ifdef __SYMBIAN32__ |
|
1412 |
|
1413 OilFunctionImpl* __oil_function_impl_synth_approx97_ref() { |
|
1414 return &_oil_function_impl_synth_approx97_ref; |
|
1415 } |
|
1416 #endif |
|
1417 |
|
1418 #ifdef __SYMBIAN32__ |
|
1419 |
|
1420 OilFunctionImpl* __oil_function_impl_split_53_ref() { |
|
1421 return &_oil_function_impl_split_53_ref; |
|
1422 } |
|
1423 #endif |
|
1424 |
|
1425 #ifdef __SYMBIAN32__ |
|
1426 |
|
1427 OilFunctionImpl* __oil_function_impl_synth_53_ref() { |
|
1428 return &_oil_function_impl_synth_53_ref; |
|
1429 } |
|
1430 #endif |
|
1431 |
|
1432 #ifdef __SYMBIAN32__ |
|
1433 |
|
1434 OilFunctionImpl* __oil_function_impl_split_135_ref() { |
|
1435 return &_oil_function_impl_split_135_ref; |
|
1436 } |
|
1437 #endif |
|
1438 |
|
1439 #ifdef __SYMBIAN32__ |
|
1440 |
|
1441 OilFunctionImpl* __oil_function_impl_synth_135_ref() { |
|
1442 return &_oil_function_impl_synth_135_ref; |
|
1443 } |
|
1444 #endif |
|
1445 |
|
1446 #ifdef __SYMBIAN32__ |
|
1447 |
|
1448 OilFunctionImpl* __oil_function_impl_lift_add_shift1_ref() { |
|
1449 return &_oil_function_impl_lift_add_shift1_ref; |
|
1450 } |
|
1451 #endif |
|
1452 |
|
1453 #ifdef __SYMBIAN32__ |
|
1454 |
|
1455 OilFunctionImpl* __oil_function_impl_lift_sub_shift1_ref() { |
|
1456 return &_oil_function_impl_lift_sub_shift1_ref; |
|
1457 } |
|
1458 #endif |
|
1459 |
|
1460 #ifdef __SYMBIAN32__ |
|
1461 |
|
1462 OilFunctionImpl* __oil_function_impl_lift_add_shift2_ref() { |
|
1463 return &_oil_function_impl_lift_add_shift2_ref; |
|
1464 } |
|
1465 #endif |
|
1466 |
|
1467 #ifdef __SYMBIAN32__ |
|
1468 |
|
1469 OilFunctionImpl* __oil_function_impl_lift_sub_shift2_ref() { |
|
1470 return &_oil_function_impl_lift_sub_shift2_ref; |
|
1471 } |
|
1472 #endif |
|
1473 |
|
1474 #ifdef __SYMBIAN32__ |
|
1475 |
|
1476 OilFunctionImpl* __oil_function_impl_lift_add_mult_shift12_ref() { |
|
1477 return &_oil_function_impl_lift_add_mult_shift12_ref; |
|
1478 } |
|
1479 #endif |
|
1480 |
|
1481 #ifdef __SYMBIAN32__ |
|
1482 |
|
1483 OilFunctionImpl* __oil_function_impl_lift_sub_mult_shift12_ref() { |
|
1484 return &_oil_function_impl_lift_sub_mult_shift12_ref; |
|
1485 } |
|
1486 #endif |
|
1487 |
|
1488 #ifdef __SYMBIAN32__ |
|
1489 |
|
1490 OilFunctionImpl* __oil_function_impl_lift_add_135_ref() { |
|
1491 return &_oil_function_impl_lift_add_135_ref; |
|
1492 } |
|
1493 #endif |
|
1494 |
|
1495 #ifdef __SYMBIAN32__ |
|
1496 |
|
1497 OilFunctionImpl* __oil_function_impl_lift_sub_135_ref() { |
|
1498 return &_oil_function_impl_lift_sub_135_ref; |
|
1499 } |
|
1500 #endif |
|
1501 |
|
1502 #ifdef __SYMBIAN32__ |
|
1503 |
|
1504 OilFunctionImpl* __oil_function_impl_add_const_rshift_s16_ref() { |
|
1505 return &_oil_function_impl_add_const_rshift_s16_ref; |
|
1506 } |
|
1507 #endif |
|
1508 |
|
1509 #ifdef __SYMBIAN32__ |
|
1510 |
|
1511 OilFunctionImpl* __oil_function_impl_lshift_s16_ref() { |
|
1512 return &_oil_function_impl_lshift_s16_ref; |
|
1513 } |
|
1514 #endif |
|
1515 |
|
1516 #ifdef __SYMBIAN32__ |
|
1517 |
|
1518 OilFunctionImpl* __oil_function_impl_multiply_and_add_s16_ref() { |
|
1519 return &_oil_function_impl_multiply_and_add_s16_ref; |
|
1520 } |
|
1521 #endif |
|
1522 |
|
1523 #ifdef __SYMBIAN32__ |
|
1524 |
|
1525 OilFunctionImpl* __oil_function_impl_multiply_and_add_s16_u8_ref() { |
|
1526 return &_oil_function_impl_multiply_and_add_s16_u8_ref; |
|
1527 } |
|
1528 #endif |
|
1529 |
|
1530 #ifdef __SYMBIAN32__ |
|
1531 |
|
1532 OilFunctionImpl* __oil_function_impl_multiply_and_acc_6xn_s16_u8_ref() { |
|
1533 return &_oil_function_impl_multiply_and_acc_6xn_s16_u8_ref; |
|
1534 } |
|
1535 #endif |
|
1536 |
|
1537 #ifdef __SYMBIAN32__ |
|
1538 |
|
1539 OilFunctionImpl* __oil_function_impl_multiply_and_acc_8xn_s16_u8_ref() { |
|
1540 return &_oil_function_impl_multiply_and_acc_8xn_s16_u8_ref; |
|
1541 } |
|
1542 #endif |
|
1543 |
|
1544 #ifdef __SYMBIAN32__ |
|
1545 |
|
1546 OilFunctionImpl* __oil_function_impl_multiply_and_acc_12xn_s16_u8_ref() { |
|
1547 return &_oil_function_impl_multiply_and_acc_12xn_s16_u8_ref; |
|
1548 } |
|
1549 #endif |
|
1550 |
|
1551 #ifdef __SYMBIAN32__ |
|
1552 |
|
1553 OilFunctionImpl* __oil_function_impl_multiply_and_acc_16xn_s16_u8_ref() { |
|
1554 return &_oil_function_impl_multiply_and_acc_16xn_s16_u8_ref; |
|
1555 } |
|
1556 #endif |
|
1557 |
|
1558 #ifdef __SYMBIAN32__ |
|
1559 |
|
1560 OilFunctionImpl* __oil_function_impl_multiply_and_acc_24xn_s16_u8_ref() { |
|
1561 return &_oil_function_impl_multiply_and_acc_24xn_s16_u8_ref; |
|
1562 } |
|
1563 #endif |
|
1564 |
|
1565 #ifdef __SYMBIAN32__ |
|
1566 |
|
1567 OilFunctionImpl* __oil_function_impl_combine4_8xn_u8_ref() { |
|
1568 return &_oil_function_impl_combine4_8xn_u8_ref; |
|
1569 } |
|
1570 #endif |
|
1571 |
|
1572 #ifdef __SYMBIAN32__ |
|
1573 |
|
1574 OilFunctionImpl* __oil_function_impl_combine4_12xn_u8_ref() { |
|
1575 return &_oil_function_impl_combine4_12xn_u8_ref; |
|
1576 } |
|
1577 #endif |
|
1578 |
|
1579 #ifdef __SYMBIAN32__ |
|
1580 |
|
1581 OilFunctionImpl* __oil_function_impl_combine4_16xn_u8_ref() { |
|
1582 return &_oil_function_impl_combine4_16xn_u8_ref; |
|
1583 } |
|
1584 #endif |
|
1585 |
|
1586 #ifdef __SYMBIAN32__ |
|
1587 |
|
1588 OilFunctionImpl* __oil_function_impl_combine2_8xn_u8_ref() { |
|
1589 return &_oil_function_impl_combine2_8xn_u8_ref; |
|
1590 } |
|
1591 #endif |
|
1592 |
|
1593 #ifdef __SYMBIAN32__ |
|
1594 |
|
1595 OilFunctionImpl* __oil_function_impl_combine2_12xn_u8_ref() { |
|
1596 return &_oil_function_impl_combine2_12xn_u8_ref; |
|
1597 } |
|
1598 #endif |
|
1599 |
|
1600 #ifdef __SYMBIAN32__ |
|
1601 |
|
1602 OilFunctionImpl* __oil_function_impl_combine2_16xn_u8_ref() { |
|
1603 return &_oil_function_impl_combine2_16xn_u8_ref; |
|
1604 } |
|
1605 #endif |
|
1606 |
|
1607 #ifdef __SYMBIAN32__ |
|
1608 |
|
1609 OilFunctionImpl* __oil_function_impl_add2_rshift_add_s16_ref() { |
|
1610 return &_oil_function_impl_add2_rshift_add_s16_ref; |
|
1611 } |
|
1612 #endif |
|
1613 |
|
1614 #ifdef __SYMBIAN32__ |
|
1615 |
|
1616 OilFunctionImpl* __oil_function_impl_add2_rshift_sub_s16_ref() { |
|
1617 return &_oil_function_impl_add2_rshift_sub_s16_ref; |
|
1618 } |
|
1619 #endif |
|
1620 |
|
1621 #ifdef __SYMBIAN32__ |
|
1622 |
|
1623 OilFunctionImpl* __oil_function_impl_avg2_8xn_u8_ref() { |
|
1624 return &_oil_function_impl_avg2_8xn_u8_ref; |
|
1625 } |
|
1626 #endif |
|
1627 |
|
1628 #ifdef __SYMBIAN32__ |
|
1629 |
|
1630 OilFunctionImpl* __oil_function_impl_avg2_12xn_u8_ref() { |
|
1631 return &_oil_function_impl_avg2_12xn_u8_ref; |
|
1632 } |
|
1633 #endif |
|
1634 |
|
1635 #ifdef __SYMBIAN32__ |
|
1636 |
|
1637 OilFunctionImpl* __oil_function_impl_avg2_16xn_u8_ref() { |
|
1638 return &_oil_function_impl_avg2_16xn_u8_ref; |
|
1639 } |
|
1640 #endif |
|
1641 |
|
1642 |
|
1643 |
|
1644 #ifdef __SYMBIAN32__ |
|
1645 |
|
1646 EXPORT_C void** _oil_function_class_ptr_deinterleave () { |
|
1647 oil_function_class_ptr_deinterleave = __oil_function_class_deinterleave(); |
|
1648 return &oil_function_class_ptr_deinterleave->func; |
|
1649 } |
|
1650 #endif |
|
1651 |
|
1652 #ifdef __SYMBIAN32__ |
|
1653 |
|
1654 EXPORT_C void** _oil_function_class_ptr_deinterleave2_s16 () { |
|
1655 oil_function_class_ptr_deinterleave2_s16 = __oil_function_class_deinterleave2_s16(); |
|
1656 return &oil_function_class_ptr_deinterleave2_s16->func; |
|
1657 } |
|
1658 #endif |
|
1659 |
|
1660 #ifdef __SYMBIAN32__ |
|
1661 |
|
1662 EXPORT_C void** _oil_function_class_ptr_interleave () { |
|
1663 oil_function_class_ptr_interleave = __oil_function_class_interleave(); |
|
1664 return &oil_function_class_ptr_interleave->func; |
|
1665 } |
|
1666 #endif |
|
1667 |
|
1668 #ifdef __SYMBIAN32__ |
|
1669 |
|
1670 EXPORT_C void** _oil_function_class_ptr_interleave2_s16 () { |
|
1671 oil_function_class_ptr_interleave2_s16 = __oil_function_class_interleave2_s16(); |
|
1672 return &oil_function_class_ptr_interleave2_s16->func; |
|
1673 } |
|
1674 #endif |
|
1675 |
|
1676 #ifdef __SYMBIAN32__ |
|
1677 |
|
1678 EXPORT_C void** _oil_function_class_ptr_synth_daub97 () { |
|
1679 oil_function_class_ptr_synth_daub97 = __oil_function_class_synth_daub97(); |
|
1680 return &oil_function_class_ptr_synth_daub97->func; |
|
1681 } |
|
1682 #endif |
|
1683 |
|
1684 #ifdef __SYMBIAN32__ |
|
1685 |
|
1686 EXPORT_C void** _oil_function_class_ptr_split_daub97 () { |
|
1687 oil_function_class_ptr_split_daub97 = __oil_function_class_split_daub97(); |
|
1688 return &oil_function_class_ptr_split_daub97->func; |
|
1689 } |
|
1690 #endif |
|
1691 |
|
1692 #ifdef __SYMBIAN32__ |
|
1693 |
|
1694 EXPORT_C void** _oil_function_class_ptr_split_approx97 () { |
|
1695 oil_function_class_ptr_split_approx97 = __oil_function_class_split_approx97(); |
|
1696 return &oil_function_class_ptr_split_approx97->func; |
|
1697 } |
|
1698 #endif |
|
1699 |
|
1700 #ifdef __SYMBIAN32__ |
|
1701 |
|
1702 EXPORT_C void** _oil_function_class_ptr_synth_approx97 () { |
|
1703 oil_function_class_ptr_synth_approx97 = __oil_function_class_synth_approx97(); |
|
1704 return &oil_function_class_ptr_synth_approx97->func; |
|
1705 } |
|
1706 #endif |
|
1707 |
|
1708 #ifdef __SYMBIAN32__ |
|
1709 |
|
1710 EXPORT_C void** _oil_function_class_ptr_split_53 () { |
|
1711 oil_function_class_ptr_split_53 = __oil_function_class_split_53(); |
|
1712 return &oil_function_class_ptr_split_53->func; |
|
1713 } |
|
1714 #endif |
|
1715 |
|
1716 #ifdef __SYMBIAN32__ |
|
1717 |
|
1718 EXPORT_C void** _oil_function_class_ptr_synth_53 () { |
|
1719 oil_function_class_ptr_synth_53 = __oil_function_class_synth_53(); |
|
1720 return &oil_function_class_ptr_synth_53->func; |
|
1721 } |
|
1722 #endif |
|
1723 |
|
1724 #ifdef __SYMBIAN32__ |
|
1725 |
|
1726 EXPORT_C void** _oil_function_class_ptr_split_135 () { |
|
1727 oil_function_class_ptr_split_135 = __oil_function_class_split_135(); |
|
1728 return &oil_function_class_ptr_split_135->func; |
|
1729 } |
|
1730 #endif |
|
1731 |
|
1732 #ifdef __SYMBIAN32__ |
|
1733 |
|
1734 EXPORT_C void** _oil_function_class_ptr_synth_135 () { |
|
1735 oil_function_class_ptr_synth_135 = __oil_function_class_synth_135(); |
|
1736 return &oil_function_class_ptr_synth_135->func; |
|
1737 } |
|
1738 #endif |
|
1739 |
|
1740 #ifdef __SYMBIAN32__ |
|
1741 |
|
1742 EXPORT_C void** _oil_function_class_ptr_add_const_rshift_s16 () { |
|
1743 oil_function_class_ptr_add_const_rshift_s16 = __oil_function_class_add_const_rshift_s16(); |
|
1744 return &oil_function_class_ptr_add_const_rshift_s16->func; |
|
1745 } |
|
1746 #endif |
|
1747 |
|
1748 #ifdef __SYMBIAN32__ |
|
1749 |
|
1750 EXPORT_C void** _oil_function_class_ptr_lshift_s16 () { |
|
1751 oil_function_class_ptr_lshift_s16 = __oil_function_class_lshift_s16(); |
|
1752 return &oil_function_class_ptr_lshift_s16->func; |
|
1753 } |
|
1754 #endif |
|
1755 |
|
1756 #ifdef __SYMBIAN32__ |
|
1757 |
|
1758 EXPORT_C void** _oil_function_class_ptr_multiply_and_add_s16 () { |
|
1759 oil_function_class_ptr_multiply_and_add_s16 = __oil_function_class_multiply_and_add_s16(); |
|
1760 return &oil_function_class_ptr_multiply_and_add_s16->func; |
|
1761 } |
|
1762 #endif |
|
1763 |
|
1764 #ifdef __SYMBIAN32__ |
|
1765 |
|
1766 EXPORT_C void** _oil_function_class_ptr_multiply_and_add_s16_u8 () { |
|
1767 oil_function_class_ptr_multiply_and_add_s16_u8 = __oil_function_class_multiply_and_add_s16_u8(); |
|
1768 return &oil_function_class_ptr_multiply_and_add_s16_u8->func; |
|
1769 } |
|
1770 #endif |
|
1771 |
|
1772 #ifdef __SYMBIAN32__ |
|
1773 |
|
1774 EXPORT_C void** _oil_function_class_ptr_multiply_and_acc_6xn_s16_u8 () { |
|
1775 oil_function_class_ptr_multiply_and_acc_6xn_s16_u8 = __oil_function_class_multiply_and_acc_6xn_s16_u8(); |
|
1776 return &oil_function_class_ptr_multiply_and_acc_6xn_s16_u8->func; |
|
1777 } |
|
1778 #endif |
|
1779 |
|
1780 #ifdef __SYMBIAN32__ |
|
1781 |
|
1782 EXPORT_C void** _oil_function_class_ptr_multiply_and_acc_8xn_s16_u8 () { |
|
1783 oil_function_class_ptr_multiply_and_acc_8xn_s16_u8 = __oil_function_class_multiply_and_acc_8xn_s16_u8(); |
|
1784 return &oil_function_class_ptr_multiply_and_acc_8xn_s16_u8->func; |
|
1785 } |
|
1786 #endif |
|
1787 |
|
1788 #ifdef __SYMBIAN32__ |
|
1789 |
|
1790 EXPORT_C void** _oil_function_class_ptr_multiply_and_acc_12xn_s16_u8 () { |
|
1791 oil_function_class_ptr_multiply_and_acc_12xn_s16_u8 = __oil_function_class_multiply_and_acc_12xn_s16_u8(); |
|
1792 return &oil_function_class_ptr_multiply_and_acc_12xn_s16_u8->func; |
|
1793 } |
|
1794 #endif |
|
1795 |
|
1796 #ifdef __SYMBIAN32__ |
|
1797 |
|
1798 EXPORT_C void** _oil_function_class_ptr_multiply_and_acc_16xn_s16_u8 () { |
|
1799 oil_function_class_ptr_multiply_and_acc_16xn_s16_u8 = __oil_function_class_multiply_and_acc_16xn_s16_u8(); |
|
1800 return &oil_function_class_ptr_multiply_and_acc_16xn_s16_u8->func; |
|
1801 } |
|
1802 #endif |
|
1803 |
|
1804 #ifdef __SYMBIAN32__ |
|
1805 |
|
1806 EXPORT_C void** _oil_function_class_ptr_multiply_and_acc_24xn_s16_u8 () { |
|
1807 oil_function_class_ptr_multiply_and_acc_24xn_s16_u8 = __oil_function_class_multiply_and_acc_24xn_s16_u8(); |
|
1808 return &oil_function_class_ptr_multiply_and_acc_24xn_s16_u8->func; |
|
1809 } |
|
1810 #endif |
|
1811 |
|
1812 #ifdef __SYMBIAN32__ |
|
1813 |
|
1814 EXPORT_C void** _oil_function_class_ptr_combine2_8xn_u8 () { |
|
1815 oil_function_class_ptr_combine2_8xn_u8 = __oil_function_class_combine2_8xn_u8(); |
|
1816 return &oil_function_class_ptr_combine2_8xn_u8->func; |
|
1817 } |
|
1818 #endif |
|
1819 |
|
1820 #ifdef __SYMBIAN32__ |
|
1821 |
|
1822 EXPORT_C void** _oil_function_class_ptr_combine2_12xn_u8 () { |
|
1823 oil_function_class_ptr_combine2_12xn_u8 = __oil_function_class_combine2_12xn_u8(); |
|
1824 return &oil_function_class_ptr_combine2_12xn_u8->func; |
|
1825 } |
|
1826 #endif |
|
1827 |
|
1828 #ifdef __SYMBIAN32__ |
|
1829 |
|
1830 EXPORT_C void** _oil_function_class_ptr_combine2_16xn_u8 () { |
|
1831 oil_function_class_ptr_combine2_16xn_u8 = __oil_function_class_combine2_16xn_u8(); |
|
1832 return &oil_function_class_ptr_combine2_16xn_u8->func; |
|
1833 } |
|
1834 #endif |
|
1835 |
|
1836 #ifdef __SYMBIAN32__ |
|
1837 |
|
1838 EXPORT_C void** _oil_function_class_ptr_combine4_8xn_u8 () { |
|
1839 oil_function_class_ptr_combine4_8xn_u8 = __oil_function_class_combine4_8xn_u8(); |
|
1840 return &oil_function_class_ptr_combine4_8xn_u8->func; |
|
1841 } |
|
1842 #endif |
|
1843 |
|
1844 #ifdef __SYMBIAN32__ |
|
1845 |
|
1846 EXPORT_C void** _oil_function_class_ptr_combine4_12xn_u8 () { |
|
1847 oil_function_class_ptr_combine4_12xn_u8 = __oil_function_class_combine4_12xn_u8(); |
|
1848 return &oil_function_class_ptr_combine4_12xn_u8->func; |
|
1849 } |
|
1850 #endif |
|
1851 |
|
1852 #ifdef __SYMBIAN32__ |
|
1853 |
|
1854 EXPORT_C void** _oil_function_class_ptr_combine4_16xn_u8 () { |
|
1855 oil_function_class_ptr_combine4_16xn_u8 = __oil_function_class_combine4_16xn_u8(); |
|
1856 return &oil_function_class_ptr_combine4_16xn_u8->func; |
|
1857 } |
|
1858 #endif |
|
1859 |
|
1860 #ifdef __SYMBIAN32__ |
|
1861 |
|
1862 EXPORT_C void** _oil_function_class_ptr_add2_rshift_add_s16 () { |
|
1863 oil_function_class_ptr_add2_rshift_add_s16 = __oil_function_class_add2_rshift_add_s16(); |
|
1864 return &oil_function_class_ptr_add2_rshift_add_s16->func; |
|
1865 } |
|
1866 #endif |
|
1867 |
|
1868 #ifdef __SYMBIAN32__ |
|
1869 |
|
1870 EXPORT_C void** _oil_function_class_ptr_add2_rshift_sub_s16 () { |
|
1871 oil_function_class_ptr_add2_rshift_sub_s16 = __oil_function_class_add2_rshift_sub_s16(); |
|
1872 return &oil_function_class_ptr_add2_rshift_sub_s16->func; |
|
1873 } |
|
1874 #endif |
|
1875 |
|
1876 #ifdef __SYMBIAN32__ |
|
1877 |
|
1878 EXPORT_C void** _oil_function_class_ptr_avg2_8xn_u8 () { |
|
1879 oil_function_class_ptr_avg2_8xn_u8 = __oil_function_class_avg2_8xn_u8(); |
|
1880 return &oil_function_class_ptr_avg2_8xn_u8->func; |
|
1881 } |
|
1882 #endif |
|
1883 |
|
1884 #ifdef __SYMBIAN32__ |
|
1885 |
|
1886 EXPORT_C void** _oil_function_class_ptr_avg2_12xn_u8 () { |
|
1887 oil_function_class_ptr_avg2_12xn_u8 = __oil_function_class_avg2_12xn_u8(); |
|
1888 return &oil_function_class_ptr_avg2_12xn_u8->func; |
|
1889 } |
|
1890 #endif |
|
1891 |
|
1892 #ifdef __SYMBIAN32__ |
|
1893 |
|
1894 EXPORT_C void** _oil_function_class_ptr_avg2_16xn_u8 () { |
|
1895 oil_function_class_ptr_avg2_16xn_u8 = __oil_function_class_avg2_16xn_u8(); |
|
1896 return &oil_function_class_ptr_avg2_16xn_u8->func; |
|
1897 } |
|
1898 #endif |
|
1899 |
|
1900 #ifdef __SYMBIAN32__ |
|
1901 |
|
1902 EXPORT_C void** _oil_function_class_ptr_lift_add_shift1 () { |
|
1903 oil_function_class_ptr_lift_add_shift1 = __oil_function_class_lift_add_shift1(); |
|
1904 return &oil_function_class_ptr_lift_add_shift1->func; |
|
1905 } |
|
1906 #endif |
|
1907 |
|
1908 #ifdef __SYMBIAN32__ |
|
1909 |
|
1910 EXPORT_C void** _oil_function_class_ptr_lift_sub_shift1 () { |
|
1911 oil_function_class_ptr_lift_sub_shift1 = __oil_function_class_lift_sub_shift1(); |
|
1912 return &oil_function_class_ptr_lift_sub_shift1->func; |
|
1913 } |
|
1914 #endif |
|
1915 |
|
1916 #ifdef __SYMBIAN32__ |
|
1917 |
|
1918 EXPORT_C void** _oil_function_class_ptr_lift_add_shift2 () { |
|
1919 oil_function_class_ptr_lift_add_shift2 = __oil_function_class_lift_add_shift2(); |
|
1920 return &oil_function_class_ptr_lift_add_shift2->func; |
|
1921 } |
|
1922 #endif |
|
1923 |
|
1924 #ifdef __SYMBIAN32__ |
|
1925 |
|
1926 EXPORT_C void** _oil_function_class_ptr_lift_sub_shift2 () { |
|
1927 oil_function_class_ptr_lift_sub_shift2 = __oil_function_class_lift_sub_shift2(); |
|
1928 return &oil_function_class_ptr_lift_sub_shift2->func; |
|
1929 } |
|
1930 #endif |
|
1931 |
|
1932 #ifdef __SYMBIAN32__ |
|
1933 |
|
1934 EXPORT_C void** _oil_function_class_ptr_lift_add_mult_shift12 () { |
|
1935 oil_function_class_ptr_lift_add_mult_shift12 = __oil_function_class_lift_add_mult_shift12(); |
|
1936 return &oil_function_class_ptr_lift_add_mult_shift12->func; |
|
1937 } |
|
1938 #endif |
|
1939 |
|
1940 #ifdef __SYMBIAN32__ |
|
1941 |
|
1942 EXPORT_C void** _oil_function_class_ptr_lift_sub_mult_shift12 () { |
|
1943 oil_function_class_ptr_lift_sub_mult_shift12 = __oil_function_class_lift_sub_mult_shift12(); |
|
1944 return &oil_function_class_ptr_lift_sub_mult_shift12->func; |
|
1945 } |
|
1946 #endif |
|
1947 |
|
1948 #ifdef __SYMBIAN32__ |
|
1949 |
|
1950 EXPORT_C void** _oil_function_class_ptr_lift_add_135 () { |
|
1951 oil_function_class_ptr_lift_add_135 = __oil_function_class_lift_add_135(); |
|
1952 return &oil_function_class_ptr_lift_add_135->func; |
|
1953 } |
|
1954 #endif |
|
1955 |
|
1956 #ifdef __SYMBIAN32__ |
|
1957 |
|
1958 EXPORT_C void** _oil_function_class_ptr_lift_sub_135 () { |
|
1959 oil_function_class_ptr_lift_sub_135 = __oil_function_class_lift_sub_135(); |
|
1960 return &oil_function_class_ptr_lift_sub_135->func; |
|
1961 } |
|
1962 #endif |
|
1963 |