1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/liboil/src/ref/wavelet.c Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,1963 @@
1.4 +//Portions Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
1.5 +/*
1.6 +Copyright 2002,2003,2004,2005 David A. Schleef <ds@schleef.org>
1.7 + All rights reserved.
1.8 +
1.9 + Redistribution and use in source and binary forms, with or without
1.10 + modification, are permitted provided that the following conditions
1.11 + are met:
1.12 + 1. Redistributions of source code must retain the above copyright
1.13 + notice, this list of conditions and the following disclaimer.
1.14 + 2. Redistributions in binary form must reproduce the above copyright
1.15 + notice, this list of conditions and the following disclaimer in the
1.16 + documentation and/or other materials provided with the distribution.
1.17 +
1.18 + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1.19 + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1.20 + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1.21 + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
1.22 + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1.23 + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1.24 + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1.25 + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1.26 + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1.27 + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1.28 + POSSIBILITY OF SUCH DAMAGE.
1.29 +*/
1.30 +#include <liboil/liboilfunction.h>
1.31 +#include <liboil/liboiltest.h>
1.32 +#include <liboil/liboilrandom.h>
1.33 +
1.34 +
1.35 +static void
1.36 +wavelet_test (OilTest *test)
1.37 +{
1.38 + int16_t *data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC1);
1.39 + int i;
1.40 +
1.41 + for(i=0;i<test->n;i++){
1.42 + data[i] = oil_rand_u8();
1.43 + }
1.44 +}
1.45 +
1.46 +static void
1.47 +rshift_test (OilTest *test)
1.48 +{
1.49 + int16_t *data;
1.50 + int i;
1.51 +
1.52 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC1);
1.53 + for(i=0;i<test->n;i++){
1.54 + data[i] = oil_rand_s16()>>1;
1.55 + }
1.56 +
1.57 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC2);
1.58 + data[0] = (1<<3);
1.59 + data[1] = 4;
1.60 +}
1.61 +
1.62 +static void
1.63 +lshift_test (OilTest *test)
1.64 +{
1.65 + int16_t *data;
1.66 +
1.67 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC2);
1.68 + data[0] = 12;
1.69 +}
1.70 +
1.71 +static void
1.72 +combine2_test (OilTest *test)
1.73 +{
1.74 + int16_t *data;
1.75 +
1.76 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC3);
1.77 + data[0] = 1;
1.78 + data[1] = 1;
1.79 + data[2] = 1;
1.80 + data[3] = 1;
1.81 +}
1.82 +
1.83 +static void
1.84 +combine4_test (OilTest *test)
1.85 +{
1.86 + int16_t *data;
1.87 +
1.88 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC5);
1.89 + data[0] = 4;
1.90 + data[1] = 4;
1.91 + data[2] = 4;
1.92 + data[3] = 4;
1.93 + data[4] = 8;
1.94 + data[5] = 4;
1.95 +}
1.96 +
1.97 +static void
1.98 +add2_test (OilTest *test)
1.99 +{
1.100 + int16_t *data;
1.101 + int i;
1.102 +
1.103 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC1);
1.104 + for(i=0;i<test->n;i++){
1.105 + data[i] = oil_rand_s16()>>4;
1.106 + }
1.107 +
1.108 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC2);
1.109 + for(i=0;i<test->n;i++){
1.110 + data[i] = oil_rand_s16()>>4;
1.111 + }
1.112 +
1.113 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC3);
1.114 + for(i=0;i<test->n;i++){
1.115 + data[i] = oil_rand_s16()>>4;
1.116 + }
1.117 +
1.118 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC4);
1.119 + data[0] = 1;
1.120 + data[1] = 1;
1.121 +}
1.122 +
1.123 +OIL_DEFINE_CLASS_FULL (deinterleave,
1.124 + "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test);
1.125 +OIL_DEFINE_CLASS (deinterleave2_s16,
1.126 + "int16_t *d1_n, int16_t *d2_n, int16_t *s_2xn, int n");
1.127 +OIL_DEFINE_CLASS_FULL (interleave,
1.128 + "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test);
1.129 +OIL_DEFINE_CLASS (interleave2_s16,
1.130 + "int16_t *d_2xn, int16_t *s1_n, int16_t *s2_n, int n");
1.131 +OIL_DEFINE_CLASS_FULL (synth_daub97,
1.132 + "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test);
1.133 +OIL_DEFINE_CLASS_FULL (split_daub97,
1.134 + "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test);
1.135 +OIL_DEFINE_CLASS_FULL (split_approx97,
1.136 + "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test);
1.137 +OIL_DEFINE_CLASS_FULL (synth_approx97,
1.138 + "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test);
1.139 +OIL_DEFINE_CLASS_FULL (split_53,
1.140 + "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test);
1.141 +OIL_DEFINE_CLASS_FULL (synth_53,
1.142 + "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test);
1.143 +OIL_DEFINE_CLASS_FULL (split_135,
1.144 + "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test);
1.145 +OIL_DEFINE_CLASS_FULL (synth_135,
1.146 + "int16_t *d_2xn, int16_t *s_2xn, int n", wavelet_test);
1.147 +OIL_DEFINE_CLASS_FULL (add_const_rshift_s16,
1.148 + "int16_t *d1, int16_t *s1, int16_t *s2_2, int n", rshift_test);
1.149 +OIL_DEFINE_CLASS_FULL (lshift_s16,
1.150 + "int16_t *d1, int16_t *s1, int16_t *s2_1, int n", lshift_test);
1.151 +OIL_DEFINE_CLASS (multiply_and_add_s16,
1.152 + "int16_t *d, int16_t *src1, int16_t *src2, int16_t *src3, int n");
1.153 +OIL_DEFINE_CLASS (multiply_and_add_s16_u8,
1.154 + "int16_t *d, int16_t *src1, int16_t *src2, uint8_t *src3, int n");
1.155 +OIL_DEFINE_CLASS (multiply_and_acc_6xn_s16_u8, "int16_t *i1_6xn, int is1, "
1.156 + "int16_t *s1_6xn, int ss1, uint8_t *s2_6xn, int ss2, int n");
1.157 +OIL_DEFINE_CLASS (multiply_and_acc_8xn_s16_u8, "int16_t *i1_8xn, int is1, "
1.158 + "int16_t *s1_8xn, int ss1, uint8_t *s2_8xn, int ss2, int n");
1.159 +OIL_DEFINE_CLASS (multiply_and_acc_12xn_s16_u8, "int16_t *i1_12xn, int is1, "
1.160 + "int16_t *s1_12xn, int ss1, uint8_t *s2_12xn, int ss2, int n");
1.161 +OIL_DEFINE_CLASS (multiply_and_acc_16xn_s16_u8, "int16_t *i1_16xn, int is1, "
1.162 + "int16_t *s1_16xn, int ss1, uint8_t *s2_16xn, int ss2, int n");
1.163 +OIL_DEFINE_CLASS (multiply_and_acc_24xn_s16_u8, "int16_t *i1_24xn, int is1, "
1.164 + "int16_t *s1_24xn, int ss1, uint8_t *s2_24xn, int ss2, int n");
1.165 +OIL_DEFINE_CLASS_FULL (combine2_8xn_u8, "uint8_t *d_8xn, int ds1, "
1.166 + "uint8_t *s1_8xn, int ss1, uint8_t *s2_8xn, int ss2, int16_t *s3_4, int n", combine2_test);
1.167 +OIL_DEFINE_CLASS_FULL (combine2_12xn_u8, "uint8_t *d_12xn, int ds1, "
1.168 + "uint8_t *s1_12xn, int ss1, uint8_t *s2_12xn, int ss2, int16_t *s3_4, int n", combine2_test);
1.169 +OIL_DEFINE_CLASS_FULL (combine2_16xn_u8, "uint8_t *d_16xn, int ds1, "
1.170 + "uint8_t *s1_16xn, int ss1, uint8_t *s2_16xn, int ss2, int16_t *s3_4, int n", combine2_test);
1.171 +OIL_DEFINE_CLASS_FULL (combine4_8xn_u8, "uint8_t *d_8xn, int ds1, "
1.172 + "uint8_t *s1_8xn, int ss1, uint8_t *s2_8xn, int ss2, uint8_t *s3_8xn, "
1.173 + "int ss3, uint8_t *s4_8xn, int ss4, int16_t *s5_6, int n", combine4_test);
1.174 +OIL_DEFINE_CLASS_FULL (combine4_12xn_u8, "uint8_t *d_12xn, int ds1, "
1.175 + "uint8_t *s1_12xn, int ss1, uint8_t *s2_12xn, int ss2, uint8_t *s3_12xn, "
1.176 + "int ss3, uint8_t *s4_12xn, int ss4, int16_t *s5_6, int n", combine4_test);
1.177 +OIL_DEFINE_CLASS_FULL (combine4_16xn_u8, "uint8_t *d_16xn, int ds1, "
1.178 + "uint8_t *s1_16xn, int ss1, uint8_t *s2_16xn, int ss2, uint8_t *s3_16xn, "
1.179 + "int ss3, uint8_t *s4_16xn, int ss4, int16_t *s5_6, int n", combine4_test);
1.180 +OIL_DEFINE_CLASS_FULL (add2_rshift_add_s16, "int16_t *d, int16_t *s1, "
1.181 + "int16_t *s2, int16_t *s3, int16_t *s4_2, int n", add2_test);
1.182 +OIL_DEFINE_CLASS_FULL (add2_rshift_sub_s16, "int16_t *d, int16_t *s1, "
1.183 + "int16_t *s2, int16_t *s3, int16_t *s4_2, int n", add2_test);
1.184 +OIL_DEFINE_CLASS (avg2_8xn_u8, "uint8_t *d_8xn, int ds1, "
1.185 + "uint8_t *s1_8xn, int ss1, uint8_t *s2_8xn, int ss2, int n");
1.186 +OIL_DEFINE_CLASS (avg2_12xn_u8, "uint8_t *d_12xn, int ds1, "
1.187 + "uint8_t *s1_12xn, int ss1, uint8_t *s2_12xn, int ss2, int n");
1.188 +OIL_DEFINE_CLASS (avg2_16xn_u8, "uint8_t *d_16xn, int ds1, "
1.189 + "uint8_t *s1_16xn, int ss1, uint8_t *s2_16xn, int ss2, int n");
1.190 +
1.191 +
1.192 +#ifdef __SYMBIAN32__
1.193 +
1.194 +#endif
1.195 +void
1.196 +deinterleave_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
1.197 +{
1.198 + int i;
1.199 +
1.200 + for(i=0;i<n;i++) {
1.201 + d_2xn[i] = s_2xn[2*i];
1.202 + d_2xn[n + i] = s_2xn[2*i + 1];
1.203 + }
1.204 +}
1.205 +OIL_DEFINE_IMPL_REF (deinterleave_ref, deinterleave);
1.206 +
1.207 +#ifdef __SYMBIAN32__
1.208 +
1.209 +#endif
1.210 +void
1.211 +deinterleave2_s16_ref (int16_t *d1_n, int16_t *d2_n, int16_t *s_2xn, int n)
1.212 +{
1.213 + int i;
1.214 +
1.215 + for(i=0;i<n;i++) {
1.216 + d1_n[i] = s_2xn[2*i];
1.217 + d2_n[i] = s_2xn[2*i + 1];
1.218 + }
1.219 +}
1.220 +OIL_DEFINE_IMPL_REF (deinterleave2_s16_ref, deinterleave2_s16);
1.221 +
1.222 +#ifdef __SYMBIAN32__
1.223 +
1.224 +#endif
1.225 +void
1.226 +interleave_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
1.227 +{
1.228 + int i;
1.229 +
1.230 + for(i=0;i<n;i++) {
1.231 + d_2xn[2*i] = s_2xn[i];
1.232 + d_2xn[2*i + 1] = s_2xn[n + i];
1.233 + }
1.234 +}
1.235 +OIL_DEFINE_IMPL_REF (interleave_ref, interleave);
1.236 +
1.237 +#ifdef __SYMBIAN32__
1.238 +
1.239 +#endif
1.240 +void
1.241 +interleave2_s16_ref (int16_t *d_2xn, int16_t *s1_n, int16_t *s2_n, int n)
1.242 +{
1.243 + int i;
1.244 +
1.245 + for(i=0;i<n;i++) {
1.246 + d_2xn[2*i] = s1_n[i];
1.247 + d_2xn[2*i + 1] = s2_n[i];
1.248 + }
1.249 +}
1.250 +OIL_DEFINE_IMPL_REF (interleave2_s16_ref, interleave2_s16);
1.251 +
1.252 +#ifdef __SYMBIAN32__
1.253 +
1.254 +#endif
1.255 +void
1.256 +synth_daub97_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
1.257 +{
1.258 + int i;
1.259 +
1.260 + if (n==0) return;
1.261 + /* predict */
1.262 + d_2xn[0] = s_2xn[0] - ((1817 * s_2xn[1]) >> 11);
1.263 + for(i=2;i<n*2;i+=2){
1.264 + d_2xn[i] = s_2xn[i] - ((1817 * (s_2xn[i-1] + s_2xn[i+1])) >> 12);
1.265 + }
1.266 + for(i=1;i<n*2-2;i+=2){
1.267 + d_2xn[i] = s_2xn[i] - ((3616 * (d_2xn[i-1] + d_2xn[i+1])) >> 12);
1.268 + }
1.269 + d_2xn[n*2-1] = s_2xn[n*2-1] - ((3616 * d_2xn[n*2-2]) >> 11);
1.270 +
1.271 + /* update */
1.272 + d_2xn[0] += (217 * d_2xn[1]) >> 11;
1.273 + for(i=2;i<n*2;i+=2){
1.274 + d_2xn[i] += (217 * (d_2xn[i-1] + d_2xn[i+1])) >> 12;
1.275 + }
1.276 + for(i=1;i<n*2-2;i+=2){
1.277 + d_2xn[i] += (6497 * (d_2xn[i-1] + d_2xn[i+1])) >> 12;
1.278 + }
1.279 + d_2xn[n*2-1] += (6497 * d_2xn[n*2-2]) >> 11;
1.280 +}
1.281 +OIL_DEFINE_IMPL_REF (synth_daub97_ref, synth_daub97);
1.282 +
1.283 +#ifdef __SYMBIAN32__
1.284 +
1.285 +#endif
1.286 +void
1.287 +split_daub97_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
1.288 +{
1.289 + int i;
1.290 +
1.291 + if (n==0) return;
1.292 + /* predict */
1.293 + for(i=1;i<n*2-2;i+=2){
1.294 + d_2xn[i] = s_2xn[i] - ((6497 * (s_2xn[i-1] + s_2xn[i+1])) >> 12);
1.295 + }
1.296 + d_2xn[n*2-1] = s_2xn[n*2-1] - ((6497 * s_2xn[n*2-2]) >> 11);
1.297 + d_2xn[0] = s_2xn[0] - ((217 * d_2xn[1]) >> 11);
1.298 + for(i=2;i<n*2;i+=2){
1.299 + d_2xn[i] = s_2xn[i] - ((217 * (d_2xn[i-1] + d_2xn[i+1])) >> 12);
1.300 + }
1.301 +
1.302 + /* update */
1.303 + for(i=1;i<n*2-2;i+=2){
1.304 + d_2xn[i] += (3616 * (d_2xn[i-1] + d_2xn[i+1])) >> 12;
1.305 + }
1.306 + d_2xn[n*2-1] += (3616 * d_2xn[n*2-2]) >> 11;
1.307 + d_2xn[0] += (1817 * d_2xn[1]) >> 11;
1.308 + for(i=2;i<n*2;i+=2){
1.309 + d_2xn[i] += (1817 * (d_2xn[i-1] + d_2xn[i+1])) >> 12;
1.310 + }
1.311 +}
1.312 +OIL_DEFINE_IMPL_REF (split_daub97_ref, split_daub97);
1.313 +
1.314 +
1.315 +#ifdef __SYMBIAN32__
1.316 +
1.317 +#endif
1.318 +void
1.319 +split_approx97_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
1.320 +{
1.321 + int i;
1.322 +
1.323 + if (n==0) return;
1.324 + if (n==1) {
1.325 + d_2xn[1] = s_2xn[1] - s_2xn[0];
1.326 + d_2xn[0] = s_2xn[0] + (d_2xn[1] >> 1);
1.327 + } else if (n==2) {
1.328 + /* predict */
1.329 + d_2xn[1] = s_2xn[1] - ((9*(s_2xn[0] + s_2xn[2]) - (s_2xn[2] + s_2xn[2])) >> 4);
1.330 + d_2xn[3] = s_2xn[3] - ((9*s_2xn[2] - s_2xn[0]) >> 3);
1.331 +
1.332 + /* update */
1.333 + d_2xn[0] = s_2xn[0] + (d_2xn[1] >> 1);
1.334 + d_2xn[2] = s_2xn[2] + ((d_2xn[1] + d_2xn[3]) >> 2);
1.335 + } else {
1.336 + /* predict */
1.337 + d_2xn[1] = s_2xn[1] - ((9*(s_2xn[0] + s_2xn[2]) - (s_2xn[2] + s_2xn[4])) >> 4);
1.338 + for(i=3;i<n*2-4;i+=2){
1.339 + d_2xn[i] = s_2xn[i] - ((9*(s_2xn[i-1] + s_2xn[i+1]) - (s_2xn[i-3] + s_2xn[i+3])) >> 4);
1.340 + }
1.341 + 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);
1.342 + d_2xn[n*2-1] = s_2xn[n*2-1] - ((9*s_2xn[n*2-2] - s_2xn[n*2-4]) >> 3);
1.343 +
1.344 + /* update */
1.345 + d_2xn[0] = s_2xn[0] + (d_2xn[1] >> 1);
1.346 + for(i=2;i<n*2;i+=2){
1.347 + d_2xn[i] = s_2xn[i] + ((d_2xn[i-1] + d_2xn[i+1]) >> 2);
1.348 + }
1.349 + }
1.350 +
1.351 +}
1.352 +OIL_DEFINE_IMPL_REF (split_approx97_ref, split_approx97);
1.353 +
1.354 +#ifdef __SYMBIAN32__
1.355 +
1.356 +#endif
1.357 +void
1.358 +synth_approx97_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
1.359 +{
1.360 + int i;
1.361 +
1.362 + if (n==0) return;
1.363 + if (n==1) {
1.364 + d_2xn[0] = s_2xn[0] - (s_2xn[1] >> 1);
1.365 + d_2xn[1] = s_2xn[1] + d_2xn[0];
1.366 + } else if (n==2) {
1.367 + /* predict */
1.368 + d_2xn[0] = s_2xn[0] - (s_2xn[1] >> 1);
1.369 + d_2xn[2] = s_2xn[2] - ((s_2xn[1] + s_2xn[3]) >> 2);
1.370 +
1.371 + /* update */
1.372 + d_2xn[1] = s_2xn[1] + ((9*(d_2xn[0] + d_2xn[2]) - (d_2xn[2] + d_2xn[2])) >> 4);
1.373 + d_2xn[3] = s_2xn[3] + ((9*d_2xn[2] - d_2xn[0]) >> 3);
1.374 + } else {
1.375 + /* predict */
1.376 + d_2xn[0] = s_2xn[0] - (s_2xn[1] >> 1);
1.377 + for(i=2;i<n*2;i+=2){
1.378 + d_2xn[i] = s_2xn[i] - ((s_2xn[i-1] + s_2xn[i+1]) >> 2);
1.379 + }
1.380 +
1.381 + /* update */
1.382 + d_2xn[1] = s_2xn[1] + ((9*(d_2xn[0] + d_2xn[2]) - (d_2xn[2] + d_2xn[4])) >> 4);
1.383 + for(i=3;i<n*2-4;i+=2){
1.384 + d_2xn[i] = s_2xn[i] + ((9*(d_2xn[i-1] + d_2xn[i+1]) - (d_2xn[i-3] + d_2xn[i+3])) >> 4);
1.385 + }
1.386 + 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);
1.387 + d_2xn[n*2-1] = s_2xn[n*2-1] + ((9*d_2xn[n*2-2] - d_2xn[n*2-4]) >> 3);
1.388 + }
1.389 +}
1.390 +OIL_DEFINE_IMPL_REF (synth_approx97_ref, synth_approx97);
1.391 +
1.392 +#ifdef __SYMBIAN32__
1.393 +
1.394 +#endif
1.395 +void
1.396 +split_53_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
1.397 +{
1.398 + int i;
1.399 +
1.400 + if (n==0) return;
1.401 + if (n == 1) {
1.402 + d_2xn[1] = s_2xn[1] - s_2xn[0];
1.403 + d_2xn[0] = s_2xn[0] + (d_2xn[1] >> 1);
1.404 + } else {
1.405 + d_2xn[1] = s_2xn[1] - ((s_2xn[0] + s_2xn[2]) >> 1);
1.406 + d_2xn[0] = s_2xn[0] + (d_2xn[1] >> 1);
1.407 + for(i=2;i<n*2-2;i+=2){
1.408 + d_2xn[i+1] = s_2xn[i+1] - ((s_2xn[i] + s_2xn[i+2]) >> 1);
1.409 + d_2xn[i] = s_2xn[i] + ((d_2xn[i-1] + d_2xn[i+1]) >> 2);
1.410 + }
1.411 + d_2xn[n*2-1] = s_2xn[n*2-1] - s_2xn[n*2-2];
1.412 + d_2xn[n*2-2] = s_2xn[n*2-2] + ((d_2xn[n*2-3] + d_2xn[n*2-1]) >> 2);
1.413 + }
1.414 +}
1.415 +OIL_DEFINE_IMPL_REF (split_53_ref, split_53);
1.416 +
1.417 +#ifdef __SYMBIAN32__
1.418 +
1.419 +#endif
1.420 +void
1.421 +synth_53_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
1.422 +{
1.423 + int i;
1.424 +
1.425 + if (n==0) return;
1.426 + if (n == 1) {
1.427 + d_2xn[0] = s_2xn[0] - (s_2xn[1] >> 1);
1.428 + d_2xn[1] = s_2xn[1] + d_2xn[0];
1.429 + } else {
1.430 + d_2xn[0] = s_2xn[0] - (s_2xn[1] >> 1);
1.431 + for(i=2;i<n*2-2;i+=2){
1.432 + d_2xn[i] = s_2xn[i] - ((s_2xn[i-1] + s_2xn[i+1]) >> 2);
1.433 + d_2xn[i-1] = s_2xn[i-1] + ((d_2xn[i] + d_2xn[i-2]) >> 1);
1.434 + }
1.435 + d_2xn[n*2-2] = s_2xn[n*2-2] - ((s_2xn[n*2-3] + s_2xn[n*2-1]) >> 2);
1.436 + d_2xn[n*2-3] = s_2xn[n*2-3] + ((d_2xn[n*2-2] + d_2xn[n*2-4]) >> 1);
1.437 + d_2xn[n*2-1] = s_2xn[n*2-1] + d_2xn[n*2-2];
1.438 + }
1.439 +}
1.440 +OIL_DEFINE_IMPL_REF (synth_53_ref, synth_53);
1.441 +
1.442 +
1.443 +#ifdef __SYMBIAN32__
1.444 +
1.445 +#endif
1.446 +void
1.447 +split_135_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
1.448 +{
1.449 + int i;
1.450 +
1.451 + if (n==0) return;
1.452 + if (n==1) {
1.453 + d_2xn[1] = s_2xn[1] - (s_2xn[0]);
1.454 + d_2xn[0] = s_2xn[0] + (d_2xn[1]>>1);
1.455 + } else if (n==2) {
1.456 + /* predict */
1.457 + d_2xn[1] = s_2xn[1] - ((9*(s_2xn[0] + s_2xn[2]) - (s_2xn[2] + s_2xn[2])) >> 4);
1.458 + d_2xn[3] = s_2xn[3] - ((9*s_2xn[2] - s_2xn[0]) >> 3);
1.459 +
1.460 + /* update */
1.461 + d_2xn[0] = s_2xn[0] + ((9*d_2xn[1] - d_2xn[3]) >> 4);
1.462 + d_2xn[2] = s_2xn[2] + ((9*(d_2xn[1] + d_2xn[3]) - (d_2xn[1] + d_2xn[1])) >> 5);
1.463 + } else {
1.464 + /* predict */
1.465 + d_2xn[1] = s_2xn[1] - ((9*(s_2xn[0] + s_2xn[2]) - (s_2xn[2] + s_2xn[4])) >> 4);
1.466 + for(i=3;i<n*2-4;i+=2){
1.467 + d_2xn[i] = s_2xn[i] - ((9*(s_2xn[i-1] + s_2xn[i+1]) - (s_2xn[i-3] + s_2xn[i+3])) >> 4);
1.468 + }
1.469 + 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);
1.470 + d_2xn[n*2-1] = s_2xn[n*2-1] - ((9*s_2xn[n*2-2] - s_2xn[n*2-4]) >> 3);
1.471 +
1.472 + /* update */
1.473 + d_2xn[0] = s_2xn[0] + ((9*d_2xn[1] - d_2xn[3]) >> 4);
1.474 + d_2xn[2] = s_2xn[2] + ((9*(d_2xn[1] + d_2xn[3]) - (d_2xn[1] + d_2xn[5])) >> 5);
1.475 + for(i=4;i<n*2-2;i+=2){
1.476 + d_2xn[i] = s_2xn[i] + ((9*(d_2xn[i-1] + d_2xn[i+1]) - (d_2xn[i-3] + d_2xn[i+3])) >> 5);
1.477 + }
1.478 + 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);
1.479 + }
1.480 +
1.481 +}
1.482 +OIL_DEFINE_IMPL_REF (split_135_ref, split_135);
1.483 +
1.484 +#ifdef __SYMBIAN32__
1.485 +
1.486 +#endif
1.487 +void
1.488 +synth_135_ref (int16_t *d_2xn, int16_t *s_2xn, int n)
1.489 +{
1.490 + int i;
1.491 +
1.492 + if (n==0) return;
1.493 + if (n==1) {
1.494 + d_2xn[0] = s_2xn[0] - (s_2xn[1]>>1);
1.495 + d_2xn[1] = s_2xn[1] + (d_2xn[0]);
1.496 + } else if (n==2) {
1.497 + /* predict */
1.498 + d_2xn[0] = s_2xn[0] - ((9*s_2xn[1] - s_2xn[3]) >> 4);
1.499 + d_2xn[2] = s_2xn[2] - ((9*(s_2xn[1] + s_2xn[3]) - (s_2xn[1] + s_2xn[1])) >> 5);
1.500 +
1.501 + /* update */
1.502 + d_2xn[1] = s_2xn[1] + ((9*(d_2xn[0] + d_2xn[2]) - (d_2xn[2] + d_2xn[2])) >> 4);
1.503 + d_2xn[3] = s_2xn[3] + ((9*d_2xn[2] - d_2xn[0]) >> 3);
1.504 + } else {
1.505 + /* predict */
1.506 + d_2xn[0] = s_2xn[0] - ((9*s_2xn[1] - s_2xn[3]) >> 4);
1.507 + d_2xn[2] = s_2xn[2] - ((9*(s_2xn[1] + s_2xn[3]) - (s_2xn[1] + s_2xn[5])) >> 5);
1.508 + for(i=4;i<n*2-2;i+=2){
1.509 + d_2xn[i] = s_2xn[i] - ((9*(s_2xn[i-1] + s_2xn[i+1]) - (s_2xn[i-3] + s_2xn[i+3])) >> 5);
1.510 + }
1.511 + 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);
1.512 +
1.513 + /* update */
1.514 + d_2xn[1] = s_2xn[1] + ((9*(d_2xn[0] + d_2xn[2]) - (d_2xn[2] + d_2xn[4])) >> 4);
1.515 + for(i=3;i<n*2-4;i+=2){
1.516 + d_2xn[i] = s_2xn[i] + ((9*(d_2xn[i-1] + d_2xn[i+1]) - (d_2xn[i-3] + d_2xn[i+3])) >> 4);
1.517 + }
1.518 + 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);
1.519 + d_2xn[n*2-1] = s_2xn[n*2-1] + ((9*d_2xn[n*2-2] - d_2xn[n*2-4]) >> 3);
1.520 + }
1.521 +}
1.522 +OIL_DEFINE_IMPL_REF (synth_135_ref, synth_135);
1.523 +
1.524 +
1.525 +
1.526 +
1.527 +static void
1.528 +lift_test (OilTest *test)
1.529 +{
1.530 + int16_t *data;
1.531 + int i;
1.532 +
1.533 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC1);
1.534 + for(i=0;i<test->n;i++){
1.535 + data[i] = oil_rand_u8();
1.536 + }
1.537 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC2);
1.538 + for(i=0;i<test->n;i++){
1.539 + data[i] = oil_rand_u8();
1.540 + }
1.541 + data = (int16_t *)oil_test_get_source_data (test, OIL_ARG_SRC3);
1.542 + for(i=0;i<test->n;i++){
1.543 + data[i] = oil_rand_u8();
1.544 + }
1.545 +}
1.546 +
1.547 +OIL_DEFINE_CLASS_FULL (lift_add_shift1,
1.548 + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n", lift_test);
1.549 +OIL_DEFINE_CLASS_FULL (lift_sub_shift1,
1.550 + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n", lift_test);
1.551 +OIL_DEFINE_CLASS_FULL (lift_add_shift2,
1.552 + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n", lift_test);
1.553 +OIL_DEFINE_CLASS_FULL (lift_sub_shift2,
1.554 + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n", lift_test);
1.555 +OIL_DEFINE_CLASS_FULL (lift_add_mult_shift12,
1.556 + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4_1, int n", lift_test);
1.557 +OIL_DEFINE_CLASS_FULL (lift_sub_mult_shift12,
1.558 + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4_1, int n", lift_test);
1.559 +OIL_DEFINE_CLASS_FULL (lift_add_135,
1.560 + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int16_t *s5, int n", lift_test);
1.561 +OIL_DEFINE_CLASS_FULL (lift_sub_135,
1.562 + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int16_t *s5, int n", lift_test);
1.563 +
1.564 +
1.565 + #ifdef __SYMBIAN32__
1.566 +
1.567 +#endif
1.568 +void
1.569 +lift_add_shift1_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n)
1.570 +{
1.571 + int i;
1.572 + for(i=0;i<n;i++) {
1.573 + d[i] = s1[i] + ((s2[i] + s3[i])>>1);
1.574 + }
1.575 +}
1.576 +OIL_DEFINE_IMPL_REF (lift_add_shift1_ref, lift_add_shift1);
1.577 +
1.578 +#ifdef __SYMBIAN32__
1.579 +
1.580 +#endif
1.581 +void
1.582 +lift_sub_shift1_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n)
1.583 +{
1.584 + int i;
1.585 + for(i=0;i<n;i++) {
1.586 + d[i] = s1[i] - ((s2[i] + s3[i])>>1);
1.587 + }
1.588 +}
1.589 +OIL_DEFINE_IMPL_REF (lift_sub_shift1_ref, lift_sub_shift1);
1.590 +
1.591 +#ifdef __SYMBIAN32__
1.592 +
1.593 +#endif
1.594 +void
1.595 +lift_add_shift2_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n)
1.596 +{
1.597 + int i;
1.598 + for(i=0;i<n;i++) {
1.599 + d[i] = s1[i] + ((s2[i] + s3[i])>>2);
1.600 + }
1.601 +}
1.602 +OIL_DEFINE_IMPL_REF (lift_add_shift2_ref, lift_add_shift2);
1.603 +
1.604 +#ifdef __SYMBIAN32__
1.605 +
1.606 +#endif
1.607 +void
1.608 +lift_sub_shift2_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n)
1.609 +{
1.610 + int i;
1.611 + for(i=0;i<n;i++) {
1.612 + d[i] = s1[i] - ((s2[i] + s3[i])>>2);
1.613 + }
1.614 +}
1.615 +OIL_DEFINE_IMPL_REF (lift_sub_shift2_ref, lift_sub_shift2);
1.616 +
1.617 +#ifdef __SYMBIAN32__
1.618 +
1.619 +#endif
1.620 +void
1.621 +lift_add_mult_shift12_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int n)
1.622 +{
1.623 + int i;
1.624 + for(i=0;i<n;i++) {
1.625 + d[i] = s1[i] + ((s4[0]*(s2[i] + s3[i]))>>12);
1.626 + }
1.627 +}
1.628 +OIL_DEFINE_IMPL_REF (lift_add_mult_shift12_ref, lift_add_mult_shift12);
1.629 +
1.630 +#ifdef __SYMBIAN32__
1.631 +
1.632 +#endif
1.633 +void
1.634 +lift_sub_mult_shift12_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int n)
1.635 +{
1.636 + int i;
1.637 + for(i=0;i<n;i++) {
1.638 + d[i] = s1[i] - ((s4[0]*(s2[i] + s3[i]))>>12);
1.639 + }
1.640 +}
1.641 +OIL_DEFINE_IMPL_REF (lift_sub_mult_shift12_ref, lift_sub_mult_shift12);
1.642 +
1.643 +#ifdef __SYMBIAN32__
1.644 +
1.645 +#endif
1.646 +void
1.647 +lift_add_135_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3,
1.648 + int16_t *s4, int16_t *s5, int n)
1.649 +{
1.650 + int i;
1.651 + for(i=0;i<n;i++) {
1.652 + d[i] = s1[i] + ((9*(s3[i-1] + s4[i+1]) - (s2[i-3] + s5[i+3])) >> 4);
1.653 + }
1.654 +}
1.655 +OIL_DEFINE_IMPL_REF (lift_add_135_ref, lift_add_135);
1.656 +
1.657 +#ifdef __SYMBIAN32__
1.658 +
1.659 +#endif
1.660 +void
1.661 +lift_sub_135_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3,
1.662 + int16_t *s4, int16_t *s5, int n)
1.663 +{
1.664 + int i;
1.665 + for(i=0;i<n;i++) {
1.666 + d[i] = s1[i] - ((9*(s3[i-1] + s4[i+1]) - (s2[i-3] + s5[i+3])) >> 4);
1.667 + }
1.668 +}
1.669 +OIL_DEFINE_IMPL_REF (lift_sub_135_ref, lift_sub_135);
1.670 +
1.671 +
1.672 +#ifdef __SYMBIAN32__
1.673 +
1.674 +#endif
1.675 +void
1.676 +add_const_rshift_s16_ref(int16_t *d1, int16_t *s1, int16_t *s3_2, int n)
1.677 +{
1.678 + int i;
1.679 + for(i=0;i<n;i++){
1.680 + d1[i] = (s1[i] + s3_2[0])>>s3_2[1];
1.681 + }
1.682 +}
1.683 +OIL_DEFINE_IMPL_REF (add_const_rshift_s16_ref, add_const_rshift_s16);
1.684 +
1.685 +#ifdef __SYMBIAN32__
1.686 +
1.687 +#endif
1.688 +void
1.689 +lshift_s16_ref(int16_t *d1, int16_t *s1, int16_t *s3_1, int n)
1.690 +{
1.691 + int i;
1.692 + for(i=0;i<n;i++){
1.693 + d1[i] = s1[i]<<s3_1[0];
1.694 + }
1.695 +}
1.696 +OIL_DEFINE_IMPL_REF (lshift_s16_ref, lshift_s16);
1.697 +
1.698 +#ifdef __SYMBIAN32__
1.699 +
1.700 +#endif
1.701 +void
1.702 +multiply_and_add_s16_ref (int16_t *d, int16_t *src1, int16_t *src2, int16_t *src3, int n)
1.703 +{
1.704 + int i;
1.705 + for(i=0;i<n;i++){
1.706 + d[i] = src1[i] + src2[i]*src3[i];
1.707 + }
1.708 +}
1.709 +OIL_DEFINE_IMPL_REF (multiply_and_add_s16_ref, multiply_and_add_s16);
1.710 +
1.711 +#ifdef __SYMBIAN32__
1.712 +
1.713 +#endif
1.714 +void
1.715 +multiply_and_add_s16_u8_ref (int16_t *d, int16_t *src1, int16_t *src2,
1.716 + uint8_t *src3, int n)
1.717 +{
1.718 + int i;
1.719 + for(i=0;i<n;i++){
1.720 + d[i] = src1[i] + src2[i]*src3[i];
1.721 + }
1.722 +}
1.723 +OIL_DEFINE_IMPL_REF (multiply_and_add_s16_u8_ref, multiply_and_add_s16_u8);
1.724 +
1.725 +#ifdef __SYMBIAN32__
1.726 +
1.727 +#endif
1.728 +void
1.729 +multiply_and_acc_6xn_s16_u8_ref (int16_t *i1, int is1, int16_t *s1,
1.730 + int ss1, uint8_t *s2, int ss2, int n)
1.731 +{
1.732 + int i, j;
1.733 + for(j=0;j<n;j++){
1.734 + for(i=0;i<6;i++){
1.735 + i1[i] += s1[i]*s2[i];
1.736 + }
1.737 + i1 = OIL_OFFSET(i1,is1);
1.738 + s1 = OIL_OFFSET(s1,ss1);
1.739 + s2 = OIL_OFFSET(s2,ss2);
1.740 + }
1.741 +}
1.742 +OIL_DEFINE_IMPL_REF (multiply_and_acc_6xn_s16_u8_ref,
1.743 + multiply_and_acc_6xn_s16_u8);
1.744 +
1.745 +#ifdef __SYMBIAN32__
1.746 +
1.747 +#endif
1.748 +void
1.749 +multiply_and_acc_8xn_s16_u8_ref (int16_t *i1, int is1, int16_t *s1,
1.750 + int ss1, uint8_t *s2, int ss2, int n)
1.751 +{
1.752 + int i, j;
1.753 + for(j=0;j<n;j++){
1.754 + for(i=0;i<8;i++){
1.755 + i1[i] += s1[i]*s2[i];
1.756 + }
1.757 + i1 = OIL_OFFSET(i1,is1);
1.758 + s1 = OIL_OFFSET(s1,ss1);
1.759 + s2 = OIL_OFFSET(s2,ss2);
1.760 + }
1.761 +}
1.762 +OIL_DEFINE_IMPL_REF (multiply_and_acc_8xn_s16_u8_ref,
1.763 + multiply_and_acc_8xn_s16_u8);
1.764 +
1.765 +#ifdef __SYMBIAN32__
1.766 +
1.767 +#endif
1.768 +void
1.769 +multiply_and_acc_12xn_s16_u8_ref (int16_t *i1, int is1, int16_t *s1,
1.770 + int ss1, uint8_t *s2, int ss2, int n)
1.771 +{
1.772 + int i, j;
1.773 + for(j=0;j<n;j++){
1.774 + for(i=0;i<12;i++){
1.775 + i1[i] += s1[i]*s2[i];
1.776 + }
1.777 + i1 = OIL_OFFSET(i1,is1);
1.778 + s1 = OIL_OFFSET(s1,ss1);
1.779 + s2 = OIL_OFFSET(s2,ss2);
1.780 + }
1.781 +}
1.782 +OIL_DEFINE_IMPL_REF (multiply_and_acc_12xn_s16_u8_ref,
1.783 + multiply_and_acc_12xn_s16_u8);
1.784 +
1.785 +#ifdef __SYMBIAN32__
1.786 +
1.787 +#endif
1.788 +void
1.789 +multiply_and_acc_16xn_s16_u8_ref (int16_t *i1, int is1, int16_t *s1,
1.790 + int ss1, uint8_t *s2, int ss2, int n)
1.791 +{
1.792 + int i, j;
1.793 + for(j=0;j<n;j++){
1.794 + for(i=0;i<16;i++){
1.795 + i1[i] += s1[i]*s2[i];
1.796 + }
1.797 + i1 = OIL_OFFSET(i1,is1);
1.798 + s1 = OIL_OFFSET(s1,ss1);
1.799 + s2 = OIL_OFFSET(s2,ss2);
1.800 + }
1.801 +}
1.802 +OIL_DEFINE_IMPL_REF (multiply_and_acc_16xn_s16_u8_ref,
1.803 + multiply_and_acc_16xn_s16_u8);
1.804 +
1.805 + #ifdef __SYMBIAN32__
1.806 +
1.807 +#endif
1.808 +void
1.809 +multiply_and_acc_24xn_s16_u8_ref (int16_t *i1, int is1, int16_t *s1,
1.810 + int ss1, uint8_t *s2, int ss2, int n)
1.811 +{
1.812 + int i, j;
1.813 + for(j=0;j<n;j++){
1.814 + for(i=0;i<24;i++){
1.815 + i1[i] += s1[i]*s2[i];
1.816 + }
1.817 + i1 = OIL_OFFSET(i1,is1);
1.818 + s1 = OIL_OFFSET(s1,ss1);
1.819 + s2 = OIL_OFFSET(s2,ss2);
1.820 + }
1.821 +}
1.822 +OIL_DEFINE_IMPL_REF (multiply_and_acc_24xn_s16_u8_ref,
1.823 + multiply_and_acc_24xn_s16_u8);
1.824 +
1.825 + #ifdef __SYMBIAN32__
1.826 +
1.827 +#endif
1.828 +void
1.829 +combine4_8xn_u8_ref (uint8_t *d, int ds1,
1.830 + uint8_t *s1, int ss1,
1.831 + uint8_t *s2, int ss2,
1.832 + uint8_t *s3, int ss3,
1.833 + uint8_t *s4, int ss4,
1.834 + int16_t *s5_6, int n)
1.835 +{
1.836 + int i;
1.837 + int j;
1.838 + for(j=0;j<n;j++){
1.839 + for(i=0;i<8;i++){
1.840 + int x = 0;
1.841 + x += s5_6[0] * s1[i];
1.842 + x += s5_6[1] * s2[i];
1.843 + x += s5_6[2] * s3[i];
1.844 + x += s5_6[3] * s4[i];
1.845 + d[i] = (x + s5_6[4]) >> s5_6[5];
1.846 + }
1.847 + s1 += ss1;
1.848 + s2 += ss2;
1.849 + s3 += ss3;
1.850 + s4 += ss4;
1.851 + d += ds1;
1.852 + }
1.853 +}
1.854 +OIL_DEFINE_IMPL_REF (combine4_8xn_u8_ref, combine4_8xn_u8);
1.855 +
1.856 +#ifdef __SYMBIAN32__
1.857 +
1.858 +#endif
1.859 +void
1.860 +combine4_12xn_u8_ref (uint8_t *d, int ds1,
1.861 + uint8_t *s1, int ss1,
1.862 + uint8_t *s2, int ss2,
1.863 + uint8_t *s3, int ss3,
1.864 + uint8_t *s4, int ss4,
1.865 + int16_t *s5_6, int n)
1.866 +{
1.867 + int i;
1.868 + int j;
1.869 + for(j=0;j<n;j++){
1.870 + for(i=0;i<12;i++){
1.871 + int x = 0;
1.872 + x += s5_6[0] * s1[i];
1.873 + x += s5_6[1] * s2[i];
1.874 + x += s5_6[2] * s3[i];
1.875 + x += s5_6[3] * s4[i];
1.876 + d[i] = (x + s5_6[4]) >> s5_6[5];
1.877 + }
1.878 + s1 += ss1;
1.879 + s2 += ss2;
1.880 + s3 += ss3;
1.881 + s4 += ss4;
1.882 + d += ds1;
1.883 + }
1.884 +}
1.885 +OIL_DEFINE_IMPL_REF (combine4_12xn_u8_ref, combine4_12xn_u8);
1.886 +
1.887 +#ifdef __SYMBIAN32__
1.888 +
1.889 +#endif
1.890 +void
1.891 +combine4_16xn_u8_ref (uint8_t *d, int ds1,
1.892 + uint8_t *s1, int ss1,
1.893 + uint8_t *s2, int ss2,
1.894 + uint8_t *s3, int ss3,
1.895 + uint8_t *s4, int ss4,
1.896 + int16_t *s5_6, int n)
1.897 +{
1.898 + int i;
1.899 + int j;
1.900 + for(j=0;j<n;j++){
1.901 + for(i=0;i<16;i++){
1.902 + int x = 0;
1.903 + x += s5_6[0] * s1[i];
1.904 + x += s5_6[1] * s2[i];
1.905 + x += s5_6[2] * s3[i];
1.906 + x += s5_6[3] * s4[i];
1.907 + d[i] = (x + s5_6[4]) >> s5_6[5];
1.908 + }
1.909 + s1 += ss1;
1.910 + s2 += ss2;
1.911 + s3 += ss3;
1.912 + s4 += ss4;
1.913 + d += ds1;
1.914 + }
1.915 +}
1.916 +OIL_DEFINE_IMPL_REF (combine4_16xn_u8_ref, combine4_16xn_u8);
1.917 +
1.918 +#ifdef __SYMBIAN32__
1.919 +
1.920 +#endif
1.921 +void
1.922 +combine2_8xn_u8_ref (uint8_t *d, int ds1,
1.923 + uint8_t *s1, int ss1,
1.924 + uint8_t *s2, int ss2,
1.925 + int16_t *s3_4, int n)
1.926 +{
1.927 + int i;
1.928 + int j;
1.929 + for(j=0;j<n;j++){
1.930 + for(i=0;i<8;i++){
1.931 + int x = 0;
1.932 + x += s3_4[0] * s1[i];
1.933 + x += s3_4[1] * s2[i];
1.934 + d[i] = (x + s3_4[2]) >> s3_4[3];
1.935 + }
1.936 + s1 += ss1;
1.937 + s2 += ss2;
1.938 + d += ds1;
1.939 + }
1.940 +}
1.941 +OIL_DEFINE_IMPL_REF (combine2_8xn_u8_ref, combine2_8xn_u8);
1.942 +
1.943 +#ifdef __SYMBIAN32__
1.944 +
1.945 +#endif
1.946 +void
1.947 +combine2_12xn_u8_ref (uint8_t *d, int ds1,
1.948 + uint8_t *s1, int ss1,
1.949 + uint8_t *s2, int ss2,
1.950 + int16_t *s3_4, int n)
1.951 +{
1.952 + int i;
1.953 + int j;
1.954 + for(j=0;j<n;j++){
1.955 + for(i=0;i<12;i++){
1.956 + int x = 0;
1.957 + x += s3_4[0] * s1[i];
1.958 + x += s3_4[1] * s2[i];
1.959 + d[i] = (x + s3_4[2]) >> s3_4[3];
1.960 + }
1.961 + s1 += ss1;
1.962 + s2 += ss2;
1.963 + d += ds1;
1.964 + }
1.965 +}
1.966 +OIL_DEFINE_IMPL_REF (combine2_12xn_u8_ref, combine2_12xn_u8);
1.967 +
1.968 +#ifdef __SYMBIAN32__
1.969 +
1.970 +#endif
1.971 +void
1.972 +combine2_16xn_u8_ref (uint8_t *d, int ds1,
1.973 + uint8_t *s1, int ss1,
1.974 + uint8_t *s2, int ss2,
1.975 + int16_t *s3_4, int n)
1.976 +{
1.977 + int i;
1.978 + int j;
1.979 + for(j=0;j<n;j++){
1.980 + for(i=0;i<16;i++){
1.981 + int x = 0;
1.982 + x += s3_4[0] * s1[i];
1.983 + x += s3_4[1] * s2[i];
1.984 + d[i] = (x + s3_4[2]) >> s3_4[3];
1.985 + }
1.986 + s1 += ss1;
1.987 + s2 += ss2;
1.988 + d += ds1;
1.989 + }
1.990 +}
1.991 +OIL_DEFINE_IMPL_REF (combine2_16xn_u8_ref, combine2_16xn_u8);
1.992 +
1.993 +#ifdef __SYMBIAN32__
1.994 +
1.995 +#endif
1.996 +void
1.997 +add2_rshift_add_s16_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3,
1.998 + int16_t *s4_2, int n)
1.999 +{
1.1000 + int i;
1.1001 + for(i=0;i<n;i++) {
1.1002 + d[i] = s1[i] + ((s2[i] + s3[i] + s4_2[0])>>s4_2[1]);
1.1003 + }
1.1004 +}
1.1005 +OIL_DEFINE_IMPL_REF (add2_rshift_add_s16_ref, add2_rshift_add_s16);
1.1006 +
1.1007 +#ifdef __SYMBIAN32__
1.1008 +
1.1009 +#endif
1.1010 +void
1.1011 +add2_rshift_sub_s16_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3,
1.1012 + int16_t *s4_2, int n)
1.1013 +{
1.1014 + int i;
1.1015 + for(i=0;i<n;i++) {
1.1016 + d[i] = s1[i] - ((s2[i] + s3[i] + s4_2[0])>>s4_2[1]);
1.1017 + }
1.1018 +}
1.1019 +OIL_DEFINE_IMPL_REF (add2_rshift_sub_s16_ref, add2_rshift_sub_s16);
1.1020 +
1.1021 +#ifdef __SYMBIAN32__
1.1022 +
1.1023 +#endif
1.1024 +void
1.1025 +avg2_8xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1,
1.1026 + uint8_t *s2, int ss2, int n)
1.1027 +{
1.1028 + int i;
1.1029 + int j;
1.1030 + for(j=0;j<n;j++){
1.1031 + for(i=0;i<8;i++){
1.1032 + d[i] = (s1[i] + s2[i] + 1)>>1;
1.1033 + }
1.1034 + s1 += ss1;
1.1035 + s2 += ss2;
1.1036 + d += ds1;
1.1037 + }
1.1038 +}
1.1039 +OIL_DEFINE_IMPL_REF (avg2_8xn_u8_ref, avg2_8xn_u8);
1.1040 +
1.1041 +#ifdef __SYMBIAN32__
1.1042 +
1.1043 +#endif
1.1044 +void
1.1045 +avg2_12xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1,
1.1046 + uint8_t *s2, int ss2, int n)
1.1047 +{
1.1048 + int i;
1.1049 + int j;
1.1050 + for(j=0;j<n;j++){
1.1051 + for(i=0;i<12;i++){
1.1052 + d[i] = (s1[i] + s2[i] + 1)>>1;
1.1053 + }
1.1054 + s1 += ss1;
1.1055 + s2 += ss2;
1.1056 + d += ds1;
1.1057 + }
1.1058 +}
1.1059 +OIL_DEFINE_IMPL_REF (avg2_12xn_u8_ref, avg2_12xn_u8);
1.1060 +
1.1061 +#ifdef __SYMBIAN32__
1.1062 +
1.1063 +#endif
1.1064 +void
1.1065 +avg2_16xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1,
1.1066 + uint8_t *s2, int ss2, int n)
1.1067 +{
1.1068 + int i;
1.1069 + int j;
1.1070 + for(j=0;j<n;j++){
1.1071 + for(i=0;i<16;i++){
1.1072 + d[i] = (s1[i] + s2[i] + 1)>>1;
1.1073 + }
1.1074 + s1 += ss1;
1.1075 + s2 += ss2;
1.1076 + d += ds1;
1.1077 + }
1.1078 +}
1.1079 +OIL_DEFINE_IMPL_REF (avg2_16xn_u8_ref, avg2_16xn_u8);
1.1080 +
1.1081 +
1.1082 +
1.1083 +#ifdef __SYMBIAN32__
1.1084 +
1.1085 +OilFunctionClass* __oil_function_class_deinterleave() {
1.1086 + return &_oil_function_class_deinterleave;
1.1087 +}
1.1088 +#endif
1.1089 +
1.1090 +#ifdef __SYMBIAN32__
1.1091 +
1.1092 +OilFunctionClass* __oil_function_class_deinterleave2_s16() {
1.1093 + return &_oil_function_class_deinterleave2_s16;
1.1094 +}
1.1095 +#endif
1.1096 +
1.1097 +#ifdef __SYMBIAN32__
1.1098 +
1.1099 +OilFunctionClass* __oil_function_class_interleave() {
1.1100 + return &_oil_function_class_interleave;
1.1101 +}
1.1102 +#endif
1.1103 +
1.1104 +#ifdef __SYMBIAN32__
1.1105 +
1.1106 +OilFunctionClass* __oil_function_class_interleave2_s16() {
1.1107 + return &_oil_function_class_interleave2_s16;
1.1108 +}
1.1109 +#endif
1.1110 +
1.1111 +#ifdef __SYMBIAN32__
1.1112 +
1.1113 +OilFunctionClass* __oil_function_class_synth_daub97() {
1.1114 + return &_oil_function_class_synth_daub97;
1.1115 +}
1.1116 +#endif
1.1117 +
1.1118 +#ifdef __SYMBIAN32__
1.1119 +
1.1120 +OilFunctionClass* __oil_function_class_split_daub97() {
1.1121 + return &_oil_function_class_split_daub97;
1.1122 +}
1.1123 +#endif
1.1124 +
1.1125 +#ifdef __SYMBIAN32__
1.1126 +
1.1127 +OilFunctionClass* __oil_function_class_split_approx97() {
1.1128 + return &_oil_function_class_split_approx97;
1.1129 +}
1.1130 +#endif
1.1131 +
1.1132 +#ifdef __SYMBIAN32__
1.1133 +
1.1134 +OilFunctionClass* __oil_function_class_synth_approx97() {
1.1135 + return &_oil_function_class_synth_approx97;
1.1136 +}
1.1137 +#endif
1.1138 +
1.1139 +#ifdef __SYMBIAN32__
1.1140 +
1.1141 +OilFunctionClass* __oil_function_class_split_53() {
1.1142 + return &_oil_function_class_split_53;
1.1143 +}
1.1144 +#endif
1.1145 +
1.1146 +#ifdef __SYMBIAN32__
1.1147 +
1.1148 +OilFunctionClass* __oil_function_class_synth_53() {
1.1149 + return &_oil_function_class_synth_53;
1.1150 +}
1.1151 +#endif
1.1152 +
1.1153 +#ifdef __SYMBIAN32__
1.1154 +
1.1155 +OilFunctionClass* __oil_function_class_split_135() {
1.1156 + return &_oil_function_class_split_135;
1.1157 +}
1.1158 +#endif
1.1159 +
1.1160 +#ifdef __SYMBIAN32__
1.1161 +
1.1162 +OilFunctionClass* __oil_function_class_synth_135() {
1.1163 + return &_oil_function_class_synth_135;
1.1164 +}
1.1165 +#endif
1.1166 +
1.1167 +#ifdef __SYMBIAN32__
1.1168 +
1.1169 +OilFunctionClass* __oil_function_class_add_const_rshift_s16() {
1.1170 + return &_oil_function_class_add_const_rshift_s16;
1.1171 +}
1.1172 +#endif
1.1173 +
1.1174 +#ifdef __SYMBIAN32__
1.1175 +
1.1176 +OilFunctionClass* __oil_function_class_lshift_s16() {
1.1177 + return &_oil_function_class_lshift_s16;
1.1178 +}
1.1179 +#endif
1.1180 +
1.1181 +#ifdef __SYMBIAN32__
1.1182 +
1.1183 +OilFunctionClass* __oil_function_class_multiply_and_add_s16() {
1.1184 + return &_oil_function_class_multiply_and_add_s16;
1.1185 +}
1.1186 +#endif
1.1187 +
1.1188 +#ifdef __SYMBIAN32__
1.1189 +
1.1190 +OilFunctionClass* __oil_function_class_multiply_and_add_s16_u8() {
1.1191 + return &_oil_function_class_multiply_and_add_s16_u8;
1.1192 +}
1.1193 +#endif
1.1194 +
1.1195 +#ifdef __SYMBIAN32__
1.1196 +
1.1197 +OilFunctionClass* __oil_function_class_multiply_and_acc_6xn_s16_u8() {
1.1198 + return &_oil_function_class_multiply_and_acc_6xn_s16_u8;
1.1199 +}
1.1200 +#endif
1.1201 +
1.1202 +#ifdef __SYMBIAN32__
1.1203 +
1.1204 +OilFunctionClass* __oil_function_class_multiply_and_acc_8xn_s16_u8() {
1.1205 + return &_oil_function_class_multiply_and_acc_8xn_s16_u8;
1.1206 +}
1.1207 +#endif
1.1208 +
1.1209 +#ifdef __SYMBIAN32__
1.1210 +
1.1211 +OilFunctionClass* __oil_function_class_multiply_and_acc_12xn_s16_u8() {
1.1212 + return &_oil_function_class_multiply_and_acc_12xn_s16_u8;
1.1213 +}
1.1214 +#endif
1.1215 +
1.1216 +#ifdef __SYMBIAN32__
1.1217 +
1.1218 +OilFunctionClass* __oil_function_class_multiply_and_acc_16xn_s16_u8() {
1.1219 + return &_oil_function_class_multiply_and_acc_16xn_s16_u8;
1.1220 +}
1.1221 +#endif
1.1222 +
1.1223 +#ifdef __SYMBIAN32__
1.1224 +
1.1225 +OilFunctionClass* __oil_function_class_multiply_and_acc_24xn_s16_u8() {
1.1226 + return &_oil_function_class_multiply_and_acc_24xn_s16_u8;
1.1227 +}
1.1228 +#endif
1.1229 +
1.1230 +#ifdef __SYMBIAN32__
1.1231 +
1.1232 +OilFunctionClass* __oil_function_class_combine2_8xn_u8() {
1.1233 + return &_oil_function_class_combine2_8xn_u8;
1.1234 +}
1.1235 +#endif
1.1236 +
1.1237 +#ifdef __SYMBIAN32__
1.1238 +
1.1239 +OilFunctionClass* __oil_function_class_combine2_12xn_u8() {
1.1240 + return &_oil_function_class_combine2_12xn_u8;
1.1241 +}
1.1242 +#endif
1.1243 +
1.1244 +#ifdef __SYMBIAN32__
1.1245 +
1.1246 +OilFunctionClass* __oil_function_class_combine2_16xn_u8() {
1.1247 + return &_oil_function_class_combine2_16xn_u8;
1.1248 +}
1.1249 +#endif
1.1250 +
1.1251 +#ifdef __SYMBIAN32__
1.1252 +
1.1253 +OilFunctionClass* __oil_function_class_combine4_8xn_u8() {
1.1254 + return &_oil_function_class_combine4_8xn_u8;
1.1255 +}
1.1256 +#endif
1.1257 +
1.1258 +#ifdef __SYMBIAN32__
1.1259 +
1.1260 +OilFunctionClass* __oil_function_class_combine4_12xn_u8() {
1.1261 + return &_oil_function_class_combine4_12xn_u8;
1.1262 +}
1.1263 +#endif
1.1264 +
1.1265 +#ifdef __SYMBIAN32__
1.1266 +
1.1267 +OilFunctionClass* __oil_function_class_combine4_16xn_u8() {
1.1268 + return &_oil_function_class_combine4_16xn_u8;
1.1269 +}
1.1270 +#endif
1.1271 +
1.1272 +#ifdef __SYMBIAN32__
1.1273 +
1.1274 +OilFunctionClass* __oil_function_class_add2_rshift_add_s16() {
1.1275 + return &_oil_function_class_add2_rshift_add_s16;
1.1276 +}
1.1277 +#endif
1.1278 +
1.1279 +#ifdef __SYMBIAN32__
1.1280 +
1.1281 +OilFunctionClass* __oil_function_class_add2_rshift_sub_s16() {
1.1282 + return &_oil_function_class_add2_rshift_sub_s16;
1.1283 +}
1.1284 +#endif
1.1285 +
1.1286 +#ifdef __SYMBIAN32__
1.1287 +
1.1288 +OilFunctionClass* __oil_function_class_avg2_8xn_u8() {
1.1289 + return &_oil_function_class_avg2_8xn_u8;
1.1290 +}
1.1291 +#endif
1.1292 +
1.1293 +#ifdef __SYMBIAN32__
1.1294 +
1.1295 +OilFunctionClass* __oil_function_class_avg2_12xn_u8() {
1.1296 + return &_oil_function_class_avg2_12xn_u8;
1.1297 +}
1.1298 +#endif
1.1299 +
1.1300 +#ifdef __SYMBIAN32__
1.1301 +
1.1302 +OilFunctionClass* __oil_function_class_avg2_16xn_u8() {
1.1303 + return &_oil_function_class_avg2_16xn_u8;
1.1304 +}
1.1305 +#endif
1.1306 +
1.1307 +#ifdef __SYMBIAN32__
1.1308 +
1.1309 +OilFunctionClass* __oil_function_class_lift_add_shift1() {
1.1310 + return &_oil_function_class_lift_add_shift1;
1.1311 +}
1.1312 +#endif
1.1313 +
1.1314 +#ifdef __SYMBIAN32__
1.1315 +
1.1316 +OilFunctionClass* __oil_function_class_lift_sub_shift1() {
1.1317 + return &_oil_function_class_lift_sub_shift1;
1.1318 +}
1.1319 +#endif
1.1320 +
1.1321 +#ifdef __SYMBIAN32__
1.1322 +
1.1323 +OilFunctionClass* __oil_function_class_lift_add_shift2() {
1.1324 + return &_oil_function_class_lift_add_shift2;
1.1325 +}
1.1326 +#endif
1.1327 +
1.1328 +#ifdef __SYMBIAN32__
1.1329 +
1.1330 +OilFunctionClass* __oil_function_class_lift_sub_shift2() {
1.1331 + return &_oil_function_class_lift_sub_shift2;
1.1332 +}
1.1333 +#endif
1.1334 +
1.1335 +#ifdef __SYMBIAN32__
1.1336 +
1.1337 +OilFunctionClass* __oil_function_class_lift_add_mult_shift12() {
1.1338 + return &_oil_function_class_lift_add_mult_shift12;
1.1339 +}
1.1340 +#endif
1.1341 +
1.1342 +#ifdef __SYMBIAN32__
1.1343 +
1.1344 +OilFunctionClass* __oil_function_class_lift_sub_mult_shift12() {
1.1345 + return &_oil_function_class_lift_sub_mult_shift12;
1.1346 +}
1.1347 +#endif
1.1348 +
1.1349 +#ifdef __SYMBIAN32__
1.1350 +
1.1351 +OilFunctionClass* __oil_function_class_lift_add_135() {
1.1352 + return &_oil_function_class_lift_add_135;
1.1353 +}
1.1354 +#endif
1.1355 +
1.1356 +#ifdef __SYMBIAN32__
1.1357 +
1.1358 +OilFunctionClass* __oil_function_class_lift_sub_135() {
1.1359 + return &_oil_function_class_lift_sub_135;
1.1360 +}
1.1361 +#endif
1.1362 +
1.1363 +
1.1364 +
1.1365 +#ifdef __SYMBIAN32__
1.1366 +
1.1367 +OilFunctionImpl* __oil_function_impl_deinterleave_ref() {
1.1368 + return &_oil_function_impl_deinterleave_ref;
1.1369 +}
1.1370 +#endif
1.1371 +
1.1372 +#ifdef __SYMBIAN32__
1.1373 +
1.1374 +OilFunctionImpl* __oil_function_impl_deinterleave2_s16_ref() {
1.1375 + return &_oil_function_impl_deinterleave2_s16_ref;
1.1376 +}
1.1377 +#endif
1.1378 +
1.1379 +#ifdef __SYMBIAN32__
1.1380 +
1.1381 +OilFunctionImpl* __oil_function_impl_interleave_ref() {
1.1382 + return &_oil_function_impl_interleave_ref;
1.1383 +}
1.1384 +#endif
1.1385 +
1.1386 +#ifdef __SYMBIAN32__
1.1387 +
1.1388 +OilFunctionImpl* __oil_function_impl_interleave2_s16_ref() {
1.1389 + return &_oil_function_impl_interleave2_s16_ref;
1.1390 +}
1.1391 +#endif
1.1392 +
1.1393 +#ifdef __SYMBIAN32__
1.1394 +
1.1395 +OilFunctionImpl* __oil_function_impl_synth_daub97_ref() {
1.1396 + return &_oil_function_impl_synth_daub97_ref;
1.1397 +}
1.1398 +#endif
1.1399 +
1.1400 +#ifdef __SYMBIAN32__
1.1401 +
1.1402 +OilFunctionImpl* __oil_function_impl_split_daub97_ref() {
1.1403 + return &_oil_function_impl_split_daub97_ref;
1.1404 +}
1.1405 +#endif
1.1406 +
1.1407 +#ifdef __SYMBIAN32__
1.1408 +
1.1409 +OilFunctionImpl* __oil_function_impl_split_approx97_ref() {
1.1410 + return &_oil_function_impl_split_approx97_ref;
1.1411 +}
1.1412 +#endif
1.1413 +
1.1414 +#ifdef __SYMBIAN32__
1.1415 +
1.1416 +OilFunctionImpl* __oil_function_impl_synth_approx97_ref() {
1.1417 + return &_oil_function_impl_synth_approx97_ref;
1.1418 +}
1.1419 +#endif
1.1420 +
1.1421 +#ifdef __SYMBIAN32__
1.1422 +
1.1423 +OilFunctionImpl* __oil_function_impl_split_53_ref() {
1.1424 + return &_oil_function_impl_split_53_ref;
1.1425 +}
1.1426 +#endif
1.1427 +
1.1428 +#ifdef __SYMBIAN32__
1.1429 +
1.1430 +OilFunctionImpl* __oil_function_impl_synth_53_ref() {
1.1431 + return &_oil_function_impl_synth_53_ref;
1.1432 +}
1.1433 +#endif
1.1434 +
1.1435 +#ifdef __SYMBIAN32__
1.1436 +
1.1437 +OilFunctionImpl* __oil_function_impl_split_135_ref() {
1.1438 + return &_oil_function_impl_split_135_ref;
1.1439 +}
1.1440 +#endif
1.1441 +
1.1442 +#ifdef __SYMBIAN32__
1.1443 +
1.1444 +OilFunctionImpl* __oil_function_impl_synth_135_ref() {
1.1445 + return &_oil_function_impl_synth_135_ref;
1.1446 +}
1.1447 +#endif
1.1448 +
1.1449 +#ifdef __SYMBIAN32__
1.1450 +
1.1451 +OilFunctionImpl* __oil_function_impl_lift_add_shift1_ref() {
1.1452 + return &_oil_function_impl_lift_add_shift1_ref;
1.1453 +}
1.1454 +#endif
1.1455 +
1.1456 +#ifdef __SYMBIAN32__
1.1457 +
1.1458 +OilFunctionImpl* __oil_function_impl_lift_sub_shift1_ref() {
1.1459 + return &_oil_function_impl_lift_sub_shift1_ref;
1.1460 +}
1.1461 +#endif
1.1462 +
1.1463 +#ifdef __SYMBIAN32__
1.1464 +
1.1465 +OilFunctionImpl* __oil_function_impl_lift_add_shift2_ref() {
1.1466 + return &_oil_function_impl_lift_add_shift2_ref;
1.1467 +}
1.1468 +#endif
1.1469 +
1.1470 +#ifdef __SYMBIAN32__
1.1471 +
1.1472 +OilFunctionImpl* __oil_function_impl_lift_sub_shift2_ref() {
1.1473 + return &_oil_function_impl_lift_sub_shift2_ref;
1.1474 +}
1.1475 +#endif
1.1476 +
1.1477 +#ifdef __SYMBIAN32__
1.1478 +
1.1479 +OilFunctionImpl* __oil_function_impl_lift_add_mult_shift12_ref() {
1.1480 + return &_oil_function_impl_lift_add_mult_shift12_ref;
1.1481 +}
1.1482 +#endif
1.1483 +
1.1484 +#ifdef __SYMBIAN32__
1.1485 +
1.1486 +OilFunctionImpl* __oil_function_impl_lift_sub_mult_shift12_ref() {
1.1487 + return &_oil_function_impl_lift_sub_mult_shift12_ref;
1.1488 +}
1.1489 +#endif
1.1490 +
1.1491 +#ifdef __SYMBIAN32__
1.1492 +
1.1493 +OilFunctionImpl* __oil_function_impl_lift_add_135_ref() {
1.1494 + return &_oil_function_impl_lift_add_135_ref;
1.1495 +}
1.1496 +#endif
1.1497 +
1.1498 +#ifdef __SYMBIAN32__
1.1499 +
1.1500 +OilFunctionImpl* __oil_function_impl_lift_sub_135_ref() {
1.1501 + return &_oil_function_impl_lift_sub_135_ref;
1.1502 +}
1.1503 +#endif
1.1504 +
1.1505 +#ifdef __SYMBIAN32__
1.1506 +
1.1507 +OilFunctionImpl* __oil_function_impl_add_const_rshift_s16_ref() {
1.1508 + return &_oil_function_impl_add_const_rshift_s16_ref;
1.1509 +}
1.1510 +#endif
1.1511 +
1.1512 +#ifdef __SYMBIAN32__
1.1513 +
1.1514 +OilFunctionImpl* __oil_function_impl_lshift_s16_ref() {
1.1515 + return &_oil_function_impl_lshift_s16_ref;
1.1516 +}
1.1517 +#endif
1.1518 +
1.1519 +#ifdef __SYMBIAN32__
1.1520 +
1.1521 +OilFunctionImpl* __oil_function_impl_multiply_and_add_s16_ref() {
1.1522 + return &_oil_function_impl_multiply_and_add_s16_ref;
1.1523 +}
1.1524 +#endif
1.1525 +
1.1526 +#ifdef __SYMBIAN32__
1.1527 +
1.1528 +OilFunctionImpl* __oil_function_impl_multiply_and_add_s16_u8_ref() {
1.1529 + return &_oil_function_impl_multiply_and_add_s16_u8_ref;
1.1530 +}
1.1531 +#endif
1.1532 +
1.1533 +#ifdef __SYMBIAN32__
1.1534 +
1.1535 +OilFunctionImpl* __oil_function_impl_multiply_and_acc_6xn_s16_u8_ref() {
1.1536 + return &_oil_function_impl_multiply_and_acc_6xn_s16_u8_ref;
1.1537 +}
1.1538 +#endif
1.1539 +
1.1540 +#ifdef __SYMBIAN32__
1.1541 +
1.1542 +OilFunctionImpl* __oil_function_impl_multiply_and_acc_8xn_s16_u8_ref() {
1.1543 + return &_oil_function_impl_multiply_and_acc_8xn_s16_u8_ref;
1.1544 +}
1.1545 +#endif
1.1546 +
1.1547 +#ifdef __SYMBIAN32__
1.1548 +
1.1549 +OilFunctionImpl* __oil_function_impl_multiply_and_acc_12xn_s16_u8_ref() {
1.1550 + return &_oil_function_impl_multiply_and_acc_12xn_s16_u8_ref;
1.1551 +}
1.1552 +#endif
1.1553 +
1.1554 +#ifdef __SYMBIAN32__
1.1555 +
1.1556 +OilFunctionImpl* __oil_function_impl_multiply_and_acc_16xn_s16_u8_ref() {
1.1557 + return &_oil_function_impl_multiply_and_acc_16xn_s16_u8_ref;
1.1558 +}
1.1559 +#endif
1.1560 +
1.1561 +#ifdef __SYMBIAN32__
1.1562 +
1.1563 +OilFunctionImpl* __oil_function_impl_multiply_and_acc_24xn_s16_u8_ref() {
1.1564 + return &_oil_function_impl_multiply_and_acc_24xn_s16_u8_ref;
1.1565 +}
1.1566 +#endif
1.1567 +
1.1568 +#ifdef __SYMBIAN32__
1.1569 +
1.1570 +OilFunctionImpl* __oil_function_impl_combine4_8xn_u8_ref() {
1.1571 + return &_oil_function_impl_combine4_8xn_u8_ref;
1.1572 +}
1.1573 +#endif
1.1574 +
1.1575 +#ifdef __SYMBIAN32__
1.1576 +
1.1577 +OilFunctionImpl* __oil_function_impl_combine4_12xn_u8_ref() {
1.1578 + return &_oil_function_impl_combine4_12xn_u8_ref;
1.1579 +}
1.1580 +#endif
1.1581 +
1.1582 +#ifdef __SYMBIAN32__
1.1583 +
1.1584 +OilFunctionImpl* __oil_function_impl_combine4_16xn_u8_ref() {
1.1585 + return &_oil_function_impl_combine4_16xn_u8_ref;
1.1586 +}
1.1587 +#endif
1.1588 +
1.1589 +#ifdef __SYMBIAN32__
1.1590 +
1.1591 +OilFunctionImpl* __oil_function_impl_combine2_8xn_u8_ref() {
1.1592 + return &_oil_function_impl_combine2_8xn_u8_ref;
1.1593 +}
1.1594 +#endif
1.1595 +
1.1596 +#ifdef __SYMBIAN32__
1.1597 +
1.1598 +OilFunctionImpl* __oil_function_impl_combine2_12xn_u8_ref() {
1.1599 + return &_oil_function_impl_combine2_12xn_u8_ref;
1.1600 +}
1.1601 +#endif
1.1602 +
1.1603 +#ifdef __SYMBIAN32__
1.1604 +
1.1605 +OilFunctionImpl* __oil_function_impl_combine2_16xn_u8_ref() {
1.1606 + return &_oil_function_impl_combine2_16xn_u8_ref;
1.1607 +}
1.1608 +#endif
1.1609 +
1.1610 +#ifdef __SYMBIAN32__
1.1611 +
1.1612 +OilFunctionImpl* __oil_function_impl_add2_rshift_add_s16_ref() {
1.1613 + return &_oil_function_impl_add2_rshift_add_s16_ref;
1.1614 +}
1.1615 +#endif
1.1616 +
1.1617 +#ifdef __SYMBIAN32__
1.1618 +
1.1619 +OilFunctionImpl* __oil_function_impl_add2_rshift_sub_s16_ref() {
1.1620 + return &_oil_function_impl_add2_rshift_sub_s16_ref;
1.1621 +}
1.1622 +#endif
1.1623 +
1.1624 +#ifdef __SYMBIAN32__
1.1625 +
1.1626 +OilFunctionImpl* __oil_function_impl_avg2_8xn_u8_ref() {
1.1627 + return &_oil_function_impl_avg2_8xn_u8_ref;
1.1628 +}
1.1629 +#endif
1.1630 +
1.1631 +#ifdef __SYMBIAN32__
1.1632 +
1.1633 +OilFunctionImpl* __oil_function_impl_avg2_12xn_u8_ref() {
1.1634 + return &_oil_function_impl_avg2_12xn_u8_ref;
1.1635 +}
1.1636 +#endif
1.1637 +
1.1638 +#ifdef __SYMBIAN32__
1.1639 +
1.1640 +OilFunctionImpl* __oil_function_impl_avg2_16xn_u8_ref() {
1.1641 + return &_oil_function_impl_avg2_16xn_u8_ref;
1.1642 +}
1.1643 +#endif
1.1644 +
1.1645 +
1.1646 +
1.1647 +#ifdef __SYMBIAN32__
1.1648 +
1.1649 +EXPORT_C void** _oil_function_class_ptr_deinterleave () {
1.1650 + oil_function_class_ptr_deinterleave = __oil_function_class_deinterleave();
1.1651 + return &oil_function_class_ptr_deinterleave->func;
1.1652 + }
1.1653 +#endif
1.1654 +
1.1655 +#ifdef __SYMBIAN32__
1.1656 +
1.1657 +EXPORT_C void** _oil_function_class_ptr_deinterleave2_s16 () {
1.1658 + oil_function_class_ptr_deinterleave2_s16 = __oil_function_class_deinterleave2_s16();
1.1659 + return &oil_function_class_ptr_deinterleave2_s16->func;
1.1660 + }
1.1661 +#endif
1.1662 +
1.1663 +#ifdef __SYMBIAN32__
1.1664 +
1.1665 +EXPORT_C void** _oil_function_class_ptr_interleave () {
1.1666 + oil_function_class_ptr_interleave = __oil_function_class_interleave();
1.1667 + return &oil_function_class_ptr_interleave->func;
1.1668 + }
1.1669 +#endif
1.1670 +
1.1671 +#ifdef __SYMBIAN32__
1.1672 +
1.1673 +EXPORT_C void** _oil_function_class_ptr_interleave2_s16 () {
1.1674 + oil_function_class_ptr_interleave2_s16 = __oil_function_class_interleave2_s16();
1.1675 + return &oil_function_class_ptr_interleave2_s16->func;
1.1676 + }
1.1677 +#endif
1.1678 +
1.1679 +#ifdef __SYMBIAN32__
1.1680 +
1.1681 +EXPORT_C void** _oil_function_class_ptr_synth_daub97 () {
1.1682 + oil_function_class_ptr_synth_daub97 = __oil_function_class_synth_daub97();
1.1683 + return &oil_function_class_ptr_synth_daub97->func;
1.1684 + }
1.1685 +#endif
1.1686 +
1.1687 +#ifdef __SYMBIAN32__
1.1688 +
1.1689 +EXPORT_C void** _oil_function_class_ptr_split_daub97 () {
1.1690 + oil_function_class_ptr_split_daub97 = __oil_function_class_split_daub97();
1.1691 + return &oil_function_class_ptr_split_daub97->func;
1.1692 + }
1.1693 +#endif
1.1694 +
1.1695 +#ifdef __SYMBIAN32__
1.1696 +
1.1697 +EXPORT_C void** _oil_function_class_ptr_split_approx97 () {
1.1698 + oil_function_class_ptr_split_approx97 = __oil_function_class_split_approx97();
1.1699 + return &oil_function_class_ptr_split_approx97->func;
1.1700 + }
1.1701 +#endif
1.1702 +
1.1703 +#ifdef __SYMBIAN32__
1.1704 +
1.1705 +EXPORT_C void** _oil_function_class_ptr_synth_approx97 () {
1.1706 + oil_function_class_ptr_synth_approx97 = __oil_function_class_synth_approx97();
1.1707 + return &oil_function_class_ptr_synth_approx97->func;
1.1708 + }
1.1709 +#endif
1.1710 +
1.1711 +#ifdef __SYMBIAN32__
1.1712 +
1.1713 +EXPORT_C void** _oil_function_class_ptr_split_53 () {
1.1714 + oil_function_class_ptr_split_53 = __oil_function_class_split_53();
1.1715 + return &oil_function_class_ptr_split_53->func;
1.1716 + }
1.1717 +#endif
1.1718 +
1.1719 +#ifdef __SYMBIAN32__
1.1720 +
1.1721 +EXPORT_C void** _oil_function_class_ptr_synth_53 () {
1.1722 + oil_function_class_ptr_synth_53 = __oil_function_class_synth_53();
1.1723 + return &oil_function_class_ptr_synth_53->func;
1.1724 + }
1.1725 +#endif
1.1726 +
1.1727 +#ifdef __SYMBIAN32__
1.1728 +
1.1729 +EXPORT_C void** _oil_function_class_ptr_split_135 () {
1.1730 + oil_function_class_ptr_split_135 = __oil_function_class_split_135();
1.1731 + return &oil_function_class_ptr_split_135->func;
1.1732 + }
1.1733 +#endif
1.1734 +
1.1735 +#ifdef __SYMBIAN32__
1.1736 +
1.1737 +EXPORT_C void** _oil_function_class_ptr_synth_135 () {
1.1738 + oil_function_class_ptr_synth_135 = __oil_function_class_synth_135();
1.1739 + return &oil_function_class_ptr_synth_135->func;
1.1740 + }
1.1741 +#endif
1.1742 +
1.1743 +#ifdef __SYMBIAN32__
1.1744 +
1.1745 +EXPORT_C void** _oil_function_class_ptr_add_const_rshift_s16 () {
1.1746 + oil_function_class_ptr_add_const_rshift_s16 = __oil_function_class_add_const_rshift_s16();
1.1747 + return &oil_function_class_ptr_add_const_rshift_s16->func;
1.1748 + }
1.1749 +#endif
1.1750 +
1.1751 +#ifdef __SYMBIAN32__
1.1752 +
1.1753 +EXPORT_C void** _oil_function_class_ptr_lshift_s16 () {
1.1754 + oil_function_class_ptr_lshift_s16 = __oil_function_class_lshift_s16();
1.1755 + return &oil_function_class_ptr_lshift_s16->func;
1.1756 + }
1.1757 +#endif
1.1758 +
1.1759 +#ifdef __SYMBIAN32__
1.1760 +
1.1761 +EXPORT_C void** _oil_function_class_ptr_multiply_and_add_s16 () {
1.1762 + oil_function_class_ptr_multiply_and_add_s16 = __oil_function_class_multiply_and_add_s16();
1.1763 + return &oil_function_class_ptr_multiply_and_add_s16->func;
1.1764 + }
1.1765 +#endif
1.1766 +
1.1767 +#ifdef __SYMBIAN32__
1.1768 +
1.1769 +EXPORT_C void** _oil_function_class_ptr_multiply_and_add_s16_u8 () {
1.1770 + oil_function_class_ptr_multiply_and_add_s16_u8 = __oil_function_class_multiply_and_add_s16_u8();
1.1771 + return &oil_function_class_ptr_multiply_and_add_s16_u8->func;
1.1772 + }
1.1773 +#endif
1.1774 +
1.1775 +#ifdef __SYMBIAN32__
1.1776 +
1.1777 +EXPORT_C void** _oil_function_class_ptr_multiply_and_acc_6xn_s16_u8 () {
1.1778 + oil_function_class_ptr_multiply_and_acc_6xn_s16_u8 = __oil_function_class_multiply_and_acc_6xn_s16_u8();
1.1779 + return &oil_function_class_ptr_multiply_and_acc_6xn_s16_u8->func;
1.1780 + }
1.1781 +#endif
1.1782 +
1.1783 +#ifdef __SYMBIAN32__
1.1784 +
1.1785 +EXPORT_C void** _oil_function_class_ptr_multiply_and_acc_8xn_s16_u8 () {
1.1786 + oil_function_class_ptr_multiply_and_acc_8xn_s16_u8 = __oil_function_class_multiply_and_acc_8xn_s16_u8();
1.1787 + return &oil_function_class_ptr_multiply_and_acc_8xn_s16_u8->func;
1.1788 + }
1.1789 +#endif
1.1790 +
1.1791 +#ifdef __SYMBIAN32__
1.1792 +
1.1793 +EXPORT_C void** _oil_function_class_ptr_multiply_and_acc_12xn_s16_u8 () {
1.1794 + oil_function_class_ptr_multiply_and_acc_12xn_s16_u8 = __oil_function_class_multiply_and_acc_12xn_s16_u8();
1.1795 + return &oil_function_class_ptr_multiply_and_acc_12xn_s16_u8->func;
1.1796 + }
1.1797 +#endif
1.1798 +
1.1799 +#ifdef __SYMBIAN32__
1.1800 +
1.1801 +EXPORT_C void** _oil_function_class_ptr_multiply_and_acc_16xn_s16_u8 () {
1.1802 + oil_function_class_ptr_multiply_and_acc_16xn_s16_u8 = __oil_function_class_multiply_and_acc_16xn_s16_u8();
1.1803 + return &oil_function_class_ptr_multiply_and_acc_16xn_s16_u8->func;
1.1804 + }
1.1805 +#endif
1.1806 +
1.1807 +#ifdef __SYMBIAN32__
1.1808 +
1.1809 +EXPORT_C void** _oil_function_class_ptr_multiply_and_acc_24xn_s16_u8 () {
1.1810 + oil_function_class_ptr_multiply_and_acc_24xn_s16_u8 = __oil_function_class_multiply_and_acc_24xn_s16_u8();
1.1811 + return &oil_function_class_ptr_multiply_and_acc_24xn_s16_u8->func;
1.1812 + }
1.1813 +#endif
1.1814 +
1.1815 +#ifdef __SYMBIAN32__
1.1816 +
1.1817 +EXPORT_C void** _oil_function_class_ptr_combine2_8xn_u8 () {
1.1818 + oil_function_class_ptr_combine2_8xn_u8 = __oil_function_class_combine2_8xn_u8();
1.1819 + return &oil_function_class_ptr_combine2_8xn_u8->func;
1.1820 + }
1.1821 +#endif
1.1822 +
1.1823 +#ifdef __SYMBIAN32__
1.1824 +
1.1825 +EXPORT_C void** _oil_function_class_ptr_combine2_12xn_u8 () {
1.1826 + oil_function_class_ptr_combine2_12xn_u8 = __oil_function_class_combine2_12xn_u8();
1.1827 + return &oil_function_class_ptr_combine2_12xn_u8->func;
1.1828 + }
1.1829 +#endif
1.1830 +
1.1831 +#ifdef __SYMBIAN32__
1.1832 +
1.1833 +EXPORT_C void** _oil_function_class_ptr_combine2_16xn_u8 () {
1.1834 + oil_function_class_ptr_combine2_16xn_u8 = __oil_function_class_combine2_16xn_u8();
1.1835 + return &oil_function_class_ptr_combine2_16xn_u8->func;
1.1836 + }
1.1837 +#endif
1.1838 +
1.1839 +#ifdef __SYMBIAN32__
1.1840 +
1.1841 +EXPORT_C void** _oil_function_class_ptr_combine4_8xn_u8 () {
1.1842 + oil_function_class_ptr_combine4_8xn_u8 = __oil_function_class_combine4_8xn_u8();
1.1843 + return &oil_function_class_ptr_combine4_8xn_u8->func;
1.1844 + }
1.1845 +#endif
1.1846 +
1.1847 +#ifdef __SYMBIAN32__
1.1848 +
1.1849 +EXPORT_C void** _oil_function_class_ptr_combine4_12xn_u8 () {
1.1850 + oil_function_class_ptr_combine4_12xn_u8 = __oil_function_class_combine4_12xn_u8();
1.1851 + return &oil_function_class_ptr_combine4_12xn_u8->func;
1.1852 + }
1.1853 +#endif
1.1854 +
1.1855 +#ifdef __SYMBIAN32__
1.1856 +
1.1857 +EXPORT_C void** _oil_function_class_ptr_combine4_16xn_u8 () {
1.1858 + oil_function_class_ptr_combine4_16xn_u8 = __oil_function_class_combine4_16xn_u8();
1.1859 + return &oil_function_class_ptr_combine4_16xn_u8->func;
1.1860 + }
1.1861 +#endif
1.1862 +
1.1863 +#ifdef __SYMBIAN32__
1.1864 +
1.1865 +EXPORT_C void** _oil_function_class_ptr_add2_rshift_add_s16 () {
1.1866 + oil_function_class_ptr_add2_rshift_add_s16 = __oil_function_class_add2_rshift_add_s16();
1.1867 + return &oil_function_class_ptr_add2_rshift_add_s16->func;
1.1868 + }
1.1869 +#endif
1.1870 +
1.1871 +#ifdef __SYMBIAN32__
1.1872 +
1.1873 +EXPORT_C void** _oil_function_class_ptr_add2_rshift_sub_s16 () {
1.1874 + oil_function_class_ptr_add2_rshift_sub_s16 = __oil_function_class_add2_rshift_sub_s16();
1.1875 + return &oil_function_class_ptr_add2_rshift_sub_s16->func;
1.1876 + }
1.1877 +#endif
1.1878 +
1.1879 +#ifdef __SYMBIAN32__
1.1880 +
1.1881 +EXPORT_C void** _oil_function_class_ptr_avg2_8xn_u8 () {
1.1882 + oil_function_class_ptr_avg2_8xn_u8 = __oil_function_class_avg2_8xn_u8();
1.1883 + return &oil_function_class_ptr_avg2_8xn_u8->func;
1.1884 + }
1.1885 +#endif
1.1886 +
1.1887 +#ifdef __SYMBIAN32__
1.1888 +
1.1889 +EXPORT_C void** _oil_function_class_ptr_avg2_12xn_u8 () {
1.1890 + oil_function_class_ptr_avg2_12xn_u8 = __oil_function_class_avg2_12xn_u8();
1.1891 + return &oil_function_class_ptr_avg2_12xn_u8->func;
1.1892 + }
1.1893 +#endif
1.1894 +
1.1895 +#ifdef __SYMBIAN32__
1.1896 +
1.1897 +EXPORT_C void** _oil_function_class_ptr_avg2_16xn_u8 () {
1.1898 + oil_function_class_ptr_avg2_16xn_u8 = __oil_function_class_avg2_16xn_u8();
1.1899 + return &oil_function_class_ptr_avg2_16xn_u8->func;
1.1900 + }
1.1901 +#endif
1.1902 +
1.1903 +#ifdef __SYMBIAN32__
1.1904 +
1.1905 +EXPORT_C void** _oil_function_class_ptr_lift_add_shift1 () {
1.1906 + oil_function_class_ptr_lift_add_shift1 = __oil_function_class_lift_add_shift1();
1.1907 + return &oil_function_class_ptr_lift_add_shift1->func;
1.1908 + }
1.1909 +#endif
1.1910 +
1.1911 +#ifdef __SYMBIAN32__
1.1912 +
1.1913 +EXPORT_C void** _oil_function_class_ptr_lift_sub_shift1 () {
1.1914 + oil_function_class_ptr_lift_sub_shift1 = __oil_function_class_lift_sub_shift1();
1.1915 + return &oil_function_class_ptr_lift_sub_shift1->func;
1.1916 + }
1.1917 +#endif
1.1918 +
1.1919 +#ifdef __SYMBIAN32__
1.1920 +
1.1921 +EXPORT_C void** _oil_function_class_ptr_lift_add_shift2 () {
1.1922 + oil_function_class_ptr_lift_add_shift2 = __oil_function_class_lift_add_shift2();
1.1923 + return &oil_function_class_ptr_lift_add_shift2->func;
1.1924 + }
1.1925 +#endif
1.1926 +
1.1927 +#ifdef __SYMBIAN32__
1.1928 +
1.1929 +EXPORT_C void** _oil_function_class_ptr_lift_sub_shift2 () {
1.1930 + oil_function_class_ptr_lift_sub_shift2 = __oil_function_class_lift_sub_shift2();
1.1931 + return &oil_function_class_ptr_lift_sub_shift2->func;
1.1932 + }
1.1933 +#endif
1.1934 +
1.1935 +#ifdef __SYMBIAN32__
1.1936 +
1.1937 +EXPORT_C void** _oil_function_class_ptr_lift_add_mult_shift12 () {
1.1938 + oil_function_class_ptr_lift_add_mult_shift12 = __oil_function_class_lift_add_mult_shift12();
1.1939 + return &oil_function_class_ptr_lift_add_mult_shift12->func;
1.1940 + }
1.1941 +#endif
1.1942 +
1.1943 +#ifdef __SYMBIAN32__
1.1944 +
1.1945 +EXPORT_C void** _oil_function_class_ptr_lift_sub_mult_shift12 () {
1.1946 + oil_function_class_ptr_lift_sub_mult_shift12 = __oil_function_class_lift_sub_mult_shift12();
1.1947 + return &oil_function_class_ptr_lift_sub_mult_shift12->func;
1.1948 + }
1.1949 +#endif
1.1950 +
1.1951 +#ifdef __SYMBIAN32__
1.1952 +
1.1953 +EXPORT_C void** _oil_function_class_ptr_lift_add_135 () {
1.1954 + oil_function_class_ptr_lift_add_135 = __oil_function_class_lift_add_135();
1.1955 + return &oil_function_class_ptr_lift_add_135->func;
1.1956 + }
1.1957 +#endif
1.1958 +
1.1959 +#ifdef __SYMBIAN32__
1.1960 +
1.1961 +EXPORT_C void** _oil_function_class_ptr_lift_sub_135 () {
1.1962 + oil_function_class_ptr_lift_sub_135 = __oil_function_class_lift_sub_135();
1.1963 + return &oil_function_class_ptr_lift_sub_135->func;
1.1964 + }
1.1965 +#endif
1.1966 +