os/ossrv/genericopenlibs/liboil/src/ref/wavelet.c
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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