os/ossrv/genericopenlibs/liboil/tsrc/testsuite/wavelet/src/wavelet.c
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/ossrv/genericopenlibs/liboil/tsrc/testsuite/wavelet/src/wavelet.c	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,1421 @@
     1.4 +/*
     1.5 +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
     1.6 +* All rights reserved.
     1.7 +* This component and the accompanying materials are made available
     1.8 +* under the terms of "Eclipse Public License v1.0"
     1.9 +* which accompanies this distribution, and is available
    1.10 +* at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.11 +*
    1.12 +* Initial Contributors:
    1.13 +* Nokia Corporation - initial contribution.
    1.14 +*
    1.15 +* Contributors:
    1.16 +*
    1.17 +* Description: 
    1.18 +*
    1.19 +*/
    1.20 +
    1.21 +
    1.22 +#include <liboil/liboil.h>
    1.23 +#include <liboil/liboilfunction.h>
    1.24 +#include <stdio.h>
    1.25 +#include <stdlib.h>
    1.26 +
    1.27 +#include <liboil/globals.h>
    1.28 +
    1.29 +#define LOG_FILE "c:\\logs\\testsuite_wavelet_log.txt"
    1.30 +#include "std_log_result.h"
    1.31 +#define LOG_FILENAME_LINE __FILE__, __LINE__
    1.32 +
    1.33 +#define SIZE    20
    1.34 +
    1.35 +void create_xml(int result)
    1.36 +{
    1.37 +    if(result)
    1.38 +        assert_failed = 1;
    1.39 +    
    1.40 +    testResultXml("testsuite_wavelet");
    1.41 +    close_log_file();
    1.42 +}
    1.43 +
    1.44 +void test_oil_add2_rshift_add_s16()
    1.45 +    {
    1.46 +    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4_2, int n
    1.47 +    int16_t input1[SIZE];
    1.48 +    int16_t input2[SIZE];
    1.49 +    int16_t input3[SIZE];
    1.50 +    int16_t input4[2];
    1.51 +    int16_t output[SIZE];
    1.52 +    int16_t linux_output[] = {0,1,2,3,5,6,7,9,10,11,13,14,15,17,18,19,21,22,23,24};
    1.53 +    int i = 0;
    1.54 +    
    1.55 +    for(i=0; i<SIZE; i++)
    1.56 +        {
    1.57 +        input1[i] = i;
    1.58 +        input2[i] = i*2;
    1.59 +        input3[i] = i*3;
    1.60 +        if(i < 2)
    1.61 +            input4[i] = i*4;
    1.62 +        }
    1.63 +    
    1.64 +    oil_add2_rshift_add_s16(output, input1, input2, input3, input4, SIZE);
    1.65 +    
    1.66 +    for(i = 0; i < SIZE; i++)
    1.67 +        {
    1.68 +        if(output[i] != linux_output[i])
    1.69 +            {
    1.70 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
    1.71 +            assert_failed = 1;
    1.72 +            }
    1.73 +        }
    1.74 +    }
    1.75 +
    1.76 +void test_oil_add2_rshift_sub_s16()
    1.77 +    {
    1.78 +    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4_2, int n
    1.79 +    int16_t input1[SIZE];
    1.80 +    int16_t input2[SIZE];
    1.81 +    int16_t input3[SIZE];
    1.82 +    int16_t input4[2];
    1.83 +    int16_t output[SIZE];
    1.84 +    int16_t linux_output[] = {0,1,2,3,3,4,5,5,6,7,7,8,9,9,10,11,11,12,13,14};
    1.85 +    int i = 0;
    1.86 +    
    1.87 +    for(i=0; i<SIZE; i++)
    1.88 +        {
    1.89 +        input1[i] = i;
    1.90 +        input2[i] = i*2;
    1.91 +        input3[i] = i*3;
    1.92 +        if(i < 2)
    1.93 +            input4[i] = i*4;
    1.94 +        }
    1.95 +    
    1.96 +    oil_add2_rshift_sub_s16(output, input1, input2, input3, input4, SIZE);
    1.97 +    
    1.98 +    for(i = 0; i < SIZE; i++)
    1.99 +        {
   1.100 +        if(output[i] != linux_output[i])
   1.101 +            {
   1.102 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.103 +            assert_failed = 1;
   1.104 +            }
   1.105 +        }
   1.106 +    }
   1.107 +
   1.108 +void test_oil_add_const_rshift_s16()
   1.109 +    {
   1.110 +    //int16_t * d1, const int16_t * s1, const int16_t * s2_2, int n
   1.111 +    int16_t input1[SIZE];
   1.112 +    int16_t input2[2];
   1.113 +    int16_t output[SIZE];
   1.114 +    int16_t linux_output[] = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4};
   1.115 +    int i = 0;
   1.116 +    
   1.117 +    for(i=0; i<SIZE; i++)
   1.118 +        {
   1.119 +        input1[i] = i;
   1.120 +        if(i < 2)
   1.121 +            input2[i] = i*2;
   1.122 +        }
   1.123 +    
   1.124 +    oil_add_const_rshift_s16(output, input1, input2, SIZE);
   1.125 +    
   1.126 +    for(i = 0; i < SIZE; i++)
   1.127 +        {
   1.128 +        if(output[i] != linux_output[i])
   1.129 +            {
   1.130 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.131 +            assert_failed = 1;
   1.132 +            }
   1.133 +        }
   1.134 +    }
   1.135 +
   1.136 +void test_oil_avg2_12xn_u8()
   1.137 +    {
   1.138 +    //uint8_t * d_12xn, int ds1, const uint8_t * s1_12xn, int ss1, const uint8_t * s2_12xn, int ss2, int n
   1.139 +    uint8_t input1[SIZE*12];
   1.140 +    uint8_t input2[SIZE*12];
   1.141 +    uint8_t output[SIZE*12];
   1.142 +    int16_t linux_output[] = {0,2,6,7,11,13,17,18,22,24,28,29,33,35,39,40,44,46,50,51,55,57,61,62,66,68,72,73,77,79,83,84,88,90,94,95,99,101,105,106,108,109,111,112,114,115,117,118,120,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   1.143 +    int i = 0;
   1.144 +    
   1.145 +    for(i=0; i<SIZE*12; i++)
   1.146 +        {
   1.147 +        output[i] = 0;
   1.148 +        input1[i] = i;
   1.149 +        input2[i] = i*2;
   1.150 +        }
   1.151 +    
   1.152 +    oil_avg2_12xn_u8(output, 2, input1, 3, input2, 4, SIZE);
   1.153 +    
   1.154 +    for(i = 0; i < SIZE*12; i++)
   1.155 +        {
   1.156 +        if(output[i] != linux_output[i])
   1.157 +            {
   1.158 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.159 +            assert_failed = 1;
   1.160 +            }
   1.161 +        }
   1.162 +    }
   1.163 +
   1.164 +void test_oil_avg2_16xn_u8()
   1.165 +    {
   1.166 +    //uint8_t * d_16xn, int ds1, const uint8_t * s1_16xn, int ss1, const uint8_t * s2_16xn, int ss2, int n
   1.167 +    uint8_t input1[SIZE*16];
   1.168 +    uint8_t input2[SIZE*16];
   1.169 +    uint8_t output[SIZE*16];
   1.170 +    int16_t linux_output[] = {0,2,6,7,11,13,17,18,22,24,28,29,33,35,39,40,44,46,50,51,55,57,61,62,66,68,72,73,77,79,83,84,88,90,94,95,99,101,105,106,108,109,111,112,114,115,117,118,120,121,123,124,126,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   1.171 +    int i = 0;
   1.172 +    
   1.173 +    for(i=0; i<SIZE*16; i++)
   1.174 +        {
   1.175 +        output[i] = 0;
   1.176 +        input1[i] = i;
   1.177 +        input2[i] = i*2;
   1.178 +        }
   1.179 +    
   1.180 +    oil_avg2_16xn_u8(output, 2, input1, 3, input2, 4, SIZE);
   1.181 +    
   1.182 +    for(i = 0; i < SIZE*16; i++)
   1.183 +        {
   1.184 +        if(output[i] != linux_output[i])
   1.185 +            {
   1.186 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.187 +            assert_failed = 1;
   1.188 +            }
   1.189 +        }
   1.190 +    }
   1.191 +
   1.192 +void test_oil_avg2_8xn_u8()
   1.193 +    {
   1.194 +    //uint8_t * d_8xn, int ds1, const uint8_t * s1_8xn, int ss1, const uint8_t * s2_8xn, int ss2, int n
   1.195 +    uint8_t input1[SIZE*8];
   1.196 +    uint8_t input2[SIZE*8];
   1.197 +    uint8_t output[SIZE*8];
   1.198 +    int16_t linux_output[] = {0,2,6,7,11,13,17,18,22,24,28,29,33,35,39,40,44,46,50,51,55,57,61,62,66,68,72,73,77,79,83,84,88,90,94,95,99,101,105,106,108,109,111,112,114,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   1.199 +    int i = 0;
   1.200 +    
   1.201 +    for(i=0; i<SIZE*8; i++)
   1.202 +        {
   1.203 +        output[i] = 0;
   1.204 +        input1[i] = i;
   1.205 +        input2[i] = i*2;
   1.206 +        }
   1.207 +    
   1.208 +    oil_avg2_8xn_u8(output, 2, input1, 3, input2, 4, SIZE);
   1.209 +    
   1.210 +    for(i = 0; i < SIZE*8; i++)
   1.211 +        {
   1.212 +        if(output[i] != linux_output[i])
   1.213 +            {
   1.214 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.215 +            assert_failed = 1;
   1.216 +            }
   1.217 +        }
   1.218 +    }
   1.219 +
   1.220 +void test_oil_combine2_12xn_u8()
   1.221 +    {
   1.222 +    //uint8_t * d_12xn, int ds1, const uint8_t * s1_12xn, int ss1, const uint8_t * s2_12xn, int ss2, const int16_t * s3_4, int n
   1.223 +    uint8_t input1[SIZE*12];
   1.224 +    uint8_t input2[SIZE*12];
   1.225 +    int16_t input3[4];
   1.226 +    uint8_t output[SIZE*12];
   1.227 +    int16_t linux_output[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   1.228 +    int i = 0;
   1.229 +    
   1.230 +    for(i=0; i<SIZE*12; i++)
   1.231 +        {
   1.232 +        output[i] = 0;
   1.233 +        input1[i] = i;
   1.234 +        input2[i] = i*2;
   1.235 +        
   1.236 +        if(i < 4)
   1.237 +            input3[i] = i*3;
   1.238 +        }
   1.239 +    
   1.240 +    oil_combine2_12xn_u8(output, 2, input1, 3, input2, 4, input3, SIZE);
   1.241 +    
   1.242 +    for(i = 0; i < SIZE*12; i++)
   1.243 +        {
   1.244 +        if(output[i] != linux_output[i])
   1.245 +            {
   1.246 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.247 +            assert_failed = 1;
   1.248 +            }
   1.249 +        }
   1.250 +    }
   1.251 +
   1.252 +void test_oil_combine2_16xn_u8()
   1.253 +    {
   1.254 +    //uint8_t * d_16xn, int ds1, const uint8_t * s1_16xn, int ss1, const uint8_t * s2_16xn, int ss2, const int16_t * s3_4, int n
   1.255 +    uint8_t input1[SIZE*16];
   1.256 +    uint8_t input2[SIZE*16];
   1.257 +    int16_t input3[4];
   1.258 +    uint8_t output[SIZE*16];
   1.259 +    int16_t linux_output[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
   1.260 +    int i = 0;
   1.261 +    
   1.262 +    for(i=0; i<SIZE*16; i++)
   1.263 +        {
   1.264 +        output[i] = 1;
   1.265 +        input1[i] = i;
   1.266 +        input2[i] = i*2;
   1.267 +        
   1.268 +        if(i < 4)
   1.269 +            input3[i] = i*3;
   1.270 +        }
   1.271 +    
   1.272 +    oil_combine2_16xn_u8(output, 2, input1, 3, input2, 4, input3, SIZE);
   1.273 +    
   1.274 +    for(i = 0; i < SIZE*16; i++)
   1.275 +        {
   1.276 +        if(output[i] != linux_output[i])
   1.277 +            {
   1.278 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.279 +            assert_failed = 1;
   1.280 +            }
   1.281 +        }
   1.282 +    }
   1.283 +
   1.284 +void test_oil_combine2_8xn_u8()
   1.285 +    {
   1.286 +    //uint8_t * d_8xn, int ds1, const uint8_t * s1_8xn, int ss1, const uint8_t * s2_8xn, int ss2, const int16_t * s3_4, int n
   1.287 +    uint8_t input1[SIZE*8];
   1.288 +    uint8_t input2[SIZE*8];
   1.289 +    int16_t input3[4];
   1.290 +    uint8_t output[SIZE*8];
   1.291 +    int16_t linux_output[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
   1.292 +    int i = 0;
   1.293 +    
   1.294 +    for(i=0; i<SIZE*8; i++)
   1.295 +        {
   1.296 +        output[i] = 2;
   1.297 +        input1[i] = i;
   1.298 +        input2[i] = i*2;
   1.299 +        
   1.300 +        if(i < 4)
   1.301 +            input3[i] = i*3;
   1.302 +        }
   1.303 +    
   1.304 +    oil_combine2_8xn_u8(output, 2, input1, 3, input2, 4, input3, SIZE);
   1.305 +    
   1.306 +    for(i = 0; i < SIZE*8; i++)
   1.307 +        {
   1.308 +        if(output[i] != linux_output[i])
   1.309 +            {
   1.310 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.311 +            assert_failed = 1;
   1.312 +            }
   1.313 +        }
   1.314 +    }
   1.315 +
   1.316 +void test_oil_combine4_12xn_u8()
   1.317 +    {
   1.318 +    //uint8_t * d_12xn, int ds1, const uint8_t * s1_12xn, int ss1, const uint8_t * s2_12xn, int ss2, const uint8_t * s3_12xn, int ss3, const uint8_t * s4_12xn, int ss4, const int16_t * s5_6, int n
   1.319 +    uint8_t input1[SIZE*12];
   1.320 +    uint8_t input2[SIZE*12];
   1.321 +    uint8_t input3[SIZE*12];
   1.322 +    uint8_t input4[SIZE*12];
   1.323 +    int16_t input5[6];
   1.324 +    uint8_t output[SIZE*12];
   1.325 + 	uint8_t expected_output[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
   1.326 +	   
   1.327 +    int i = 0;
   1.328 +    
   1.329 +    for(i=0; i<SIZE*12; i++)
   1.330 +        {
   1.331 +        output[i] = 1;
   1.332 +        input1[i] = i;
   1.333 +        input2[i] = i+2;
   1.334 +        input3[i] = i+3;
   1.335 +        input4[i] = i+4;
   1.336 +        
   1.337 +        if(i < 6)
   1.338 +            input5[i] = i+5;
   1.339 +        }
   1.340 +    
   1.341 +    oil_combine4_12xn_u8(output, 1, input1, 1, input2, 2, input3, 3, input4, 4, input5, SIZE);
   1.342 +    
   1.343 +    for(i = 0; i < SIZE*12; i++)
   1.344 +        {
   1.345 +        if(output[i] != expected_output[i])
   1.346 +            {
   1.347 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,expected_output[i],output[i]);
   1.348 +            assert_failed = 1;
   1.349 +            }
   1.350 +        }
   1.351 +    }
   1.352 +
   1.353 +void test_oil_combine4_16xn_u8()
   1.354 +    {
   1.355 +    //uint8_t * d_16xn, int ds1, const uint8_t * s1_16xn, int ss1, const uint8_t * s2_16xn, int ss2, const uint8_t * s3_16xn, int ss3, const uint8_t * s4_16xn, int ss4, const int16_t * s5_6, int n
   1.356 +    uint8_t input1[SIZE*16];
   1.357 +    uint8_t input2[SIZE*16];
   1.358 +    uint8_t input3[SIZE*16];
   1.359 +    uint8_t input4[SIZE*16];
   1.360 +    int16_t input5[6];
   1.361 +    uint8_t output[SIZE*16];
   1.362 +    uint8_t expected_output[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
   1.363 +    int i = 0;
   1.364 +    
   1.365 +    for(i=0; i<SIZE*16; i++)
   1.366 +        {
   1.367 +        output[i] = 1;
   1.368 +        input1[i] = i;
   1.369 +        input2[i] = i+2;
   1.370 +        input3[i] = i+3;
   1.371 +        input4[i] = i+4;
   1.372 +        
   1.373 +        if(i < 6)
   1.374 +            input5[i] = i+5;
   1.375 +        }
   1.376 +    
   1.377 +    oil_combine4_16xn_u8(output, 1, input1, 1, input2, 2, input3, 3, input4, 4, input5, SIZE);
   1.378 +    
   1.379 +    for(i = 0; i < SIZE*16; i++)
   1.380 +        {
   1.381 +        if(output[i] != expected_output[i])
   1.382 +            {
   1.383 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,expected_output[i],output[i]);
   1.384 +            assert_failed = 1;
   1.385 +            }
   1.386 +        }
   1.387 +    }
   1.388 +
   1.389 +void test_oil_combine4_8xn_u8()
   1.390 +    {
   1.391 +    //uint8_t * d_8xn, int ds1, const uint8_t * s1_8xn, int ss1, const uint8_t * s2_8xn, int ss2, const uint8_t * s3_8xn, int ss3, const uint8_t * s4_8xn, int ss4, const int16_t * s5_6, int n
   1.392 +    uint8_t input1[SIZE*8];
   1.393 +    uint8_t input2[SIZE*8];
   1.394 +    uint8_t input3[SIZE*8];
   1.395 +    uint8_t input4[SIZE*8];
   1.396 +    int16_t input5[6];
   1.397 +    uint8_t output[SIZE*8];
   1.398 +    uint8_t expected_output[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
   1.399 +    int i = 0;
   1.400 +    
   1.401 +    for(i=0; i<SIZE*8; i++)
   1.402 +        {
   1.403 +        output[i] = 1;
   1.404 +        input1[i] = i;
   1.405 +        input2[i] = i+2;
   1.406 +        input3[i] = i+3;
   1.407 +        input4[i] = i+4;
   1.408 +        
   1.409 +        if(i < 6)
   1.410 +            input5[i] = i+5;
   1.411 +        }
   1.412 +    
   1.413 +    oil_combine4_8xn_u8(output, 1, input1, 1, input2, 2, input3, 3, input4, 4, input5, SIZE);
   1.414 +    
   1.415 +    for(i = 0; i < SIZE*8; i++)
   1.416 +        {
   1.417 +        if(output[i] != expected_output[i])
   1.418 +            {
   1.419 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,expected_output[i],output[i]);
   1.420 +            assert_failed = 1;
   1.421 +            }
   1.422 +        }
   1.423 +    }
   1.424 +
   1.425 +void test_oil_deinterleave()
   1.426 +    {
   1.427 +    //int16_t * d_2xn, const int16_t * s_2xn, int n
   1.428 +    int16_t input[SIZE*2];
   1.429 +    int16_t output[SIZE*2];
   1.430 +    int16_t linux_output[] = {0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39};
   1.431 +    int i = 0;
   1.432 +    
   1.433 +    for(i=0; i<SIZE*2; i++)
   1.434 +        {
   1.435 +        output[i] = 0;
   1.436 +        input[i] = i;
   1.437 +        }
   1.438 +    
   1.439 +    oil_deinterleave(output, input, SIZE);
   1.440 +    
   1.441 +    for(i = 0; i < SIZE*2; i++)
   1.442 +        {
   1.443 +        if(output[i] != linux_output[i])
   1.444 +            {
   1.445 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.446 +            assert_failed = 1;
   1.447 +            }
   1.448 +        }
   1.449 +    }
   1.450 +
   1.451 +void test_oil_deinterleave2_s16()
   1.452 +    {
   1.453 +    //int16_t * d1_n, int16_t * d2_n, const int16_t * s_2xn, int n
   1.454 +    int16_t input[SIZE*2];
   1.455 +    int16_t output1[SIZE];
   1.456 +    int16_t output2[SIZE];
   1.457 +    int16_t linux_output1[] = {0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38};
   1.458 +    int16_t linux_output2[] = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39};
   1.459 +    int i = 0;
   1.460 +    
   1.461 +    for(i=0; i<SIZE*2; i++)
   1.462 +        {
   1.463 +        if(i < SIZE)
   1.464 +            {
   1.465 +            output1[i] = i+1;
   1.466 +            output2[i] = i+2;
   1.467 +            }
   1.468 +        input[i] = i;
   1.469 +        }
   1.470 +    
   1.471 +    oil_deinterleave2_s16(output1, output2, input, SIZE);
   1.472 +    
   1.473 +    for(i = 0; i < SIZE; i++)
   1.474 +        {
   1.475 +        if(output1[i] != linux_output1[i])
   1.476 +            {
   1.477 +            std_log(LOG_FILENAME_LINE, "output1[%d]: expected value - %d, actual value - %d", i,linux_output1[i],output1[i]);
   1.478 +            assert_failed = 1;
   1.479 +            }
   1.480 +        
   1.481 +        if(output2[i] != linux_output2[i])
   1.482 +            {
   1.483 +            std_log(LOG_FILENAME_LINE, "output2[%d]: expected value - %d, actual value - %d", i,linux_output2[i],output2[i]);
   1.484 +            assert_failed = 1;
   1.485 +            }
   1.486 +        }
   1.487 +    }
   1.488 +
   1.489 +void test_oil_interleave()
   1.490 +    {
   1.491 +    //int16_t * d_2xn, const int16_t * s_2xn, int n
   1.492 +    int16_t input[SIZE*2];
   1.493 +    int16_t output[SIZE*2];
   1.494 +    int16_t linux_output[] = {0,20,1,21,2,22,3,23,4,24,5,25,6,26,7,27,8,28,9,29,10,30,11,31,12,32,13,33,14,34,15,35,16,36,17,37,18,38,19,39};
   1.495 +    int i = 0;
   1.496 +    
   1.497 +    for(i=0; i<SIZE*2; i++)
   1.498 +        {
   1.499 +        output[i] = 0;
   1.500 +        input[i] = i;
   1.501 +        }
   1.502 +    
   1.503 +    oil_interleave(output, input, SIZE);
   1.504 +    
   1.505 +    for(i = 0; i < SIZE*2; i++)
   1.506 +        {
   1.507 +        if(output[i] != linux_output[i])
   1.508 +            {
   1.509 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.510 +            assert_failed = 1;
   1.511 +            }
   1.512 +        }
   1.513 +    }
   1.514 +
   1.515 +void test_oil_interleave2_s16()
   1.516 +    {
   1.517 +    //int16_t * d_2xn, const int16_t * s1_n, const int16_t * s2_n, int n
   1.518 +    int16_t input1[SIZE];
   1.519 +    int16_t input2[SIZE];
   1.520 +    int16_t output[SIZE*2];
   1.521 +    int16_t linux_output[] = {1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11};
   1.522 +    int i = 0;
   1.523 +    
   1.524 +    for(i=0; i<SIZE*2; i++)
   1.525 +        {
   1.526 +        if(i < SIZE)
   1.527 +            {
   1.528 +            input1[i] = i+1;
   1.529 +            input2[i] = i+2;
   1.530 +            }
   1.531 +        output[i] = 0;
   1.532 +        }
   1.533 +    
   1.534 +    oil_interleave2_s16(output, input1, input2, SIZE);
   1.535 +    
   1.536 +    for(i = 0; i < SIZE; i++)
   1.537 +        {
   1.538 +        if(output[i] != linux_output[i])
   1.539 +            {
   1.540 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.541 +            assert_failed = 1;
   1.542 +            }
   1.543 +        }
   1.544 +    }
   1.545 +
   1.546 +void test_oil_lift_add_135()
   1.547 +    {
   1.548 +    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, const int16_t * s5, int n
   1.549 +    int16_t output[SIZE];
   1.550 +    int16_t input1[SIZE];
   1.551 +    int16_t input2[SIZE];
   1.552 +    int16_t input3[SIZE];
   1.553 +    int16_t input4[SIZE];
   1.554 +    int16_t input5[SIZE];
   1.555 +    int16_t linux_output[] = {15,5,7,10,12,14,16,18,20,22,24,26,28,30,32,34,36,39,41,32};
   1.556 +    int i = 0;
   1.557 +    
   1.558 +    for(i=0; i<SIZE; i++)
   1.559 +        {
   1.560 +        input1[i] = i+1;
   1.561 +        input2[i] = i+2;
   1.562 +        input3[i] = i+3;
   1.563 +        input4[i] = i+4;
   1.564 +        input5[i] = i+5;
   1.565 +
   1.566 +        output[i] = 0;
   1.567 +        }
   1.568 +    
   1.569 +    oil_lift_add_135(output, input1, input2, input3, input4, input5, SIZE);
   1.570 +    
   1.571 +    for(i = 0; i < SIZE; i++)
   1.572 +        {
   1.573 +        if(output[i] != linux_output[i])
   1.574 +            {
   1.575 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.576 +            assert_failed = 1;
   1.577 +            }
   1.578 +        }
   1.579 +    }
   1.580 +
   1.581 +void test_oil_lift_add_mult_shift12()
   1.582 +    {
   1.583 +    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4_1, int n
   1.584 +    int16_t output[SIZE];
   1.585 +    int16_t input1[SIZE];
   1.586 +    int16_t input2[SIZE];
   1.587 +    int16_t input3[SIZE];
   1.588 +    int16_t input4[1];
   1.589 +    int16_t linux_output[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
   1.590 +    int i = 0;
   1.591 +    
   1.592 +    input4[0] = 4;
   1.593 +    for(i=0; i<SIZE; i++)
   1.594 +        {
   1.595 +        input1[i] = i+1;
   1.596 +        input2[i] = i+2;
   1.597 +        input3[i] = i+3;
   1.598 +        
   1.599 +        output[i] = 0;
   1.600 +        }
   1.601 +    
   1.602 +    oil_lift_add_mult_shift12(output, input1, input2, input3, input4, SIZE);
   1.603 +    
   1.604 +    for(i = 0; i < SIZE; i++)
   1.605 +        {
   1.606 +        if(output[i] != linux_output[i])
   1.607 +            {
   1.608 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.609 +            assert_failed = 1;
   1.610 +            }
   1.611 +        }
   1.612 +    }
   1.613 +
   1.614 +void test_oil_lift_add_shift1()
   1.615 +    {
   1.616 +    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n
   1.617 +    int16_t output[SIZE];
   1.618 +    int16_t input1[SIZE];
   1.619 +    int16_t input2[SIZE];
   1.620 +    int16_t input3[SIZE];
   1.621 +    int16_t linux_output[] = {3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41};
   1.622 +    int i = 0;
   1.623 +    
   1.624 +    for(i=0; i<SIZE; i++)
   1.625 +        {
   1.626 +        input1[i] = i+1;
   1.627 +        input2[i] = i+2;
   1.628 +        input3[i] = i+3;
   1.629 +        
   1.630 +        output[i] = 0;
   1.631 +        }
   1.632 +    
   1.633 +    oil_lift_add_shift1(output, input1, input2, input3, SIZE);
   1.634 +    
   1.635 +    for(i = 0; i < SIZE; i++)
   1.636 +        {
   1.637 +        if(output[i] != linux_output[i])
   1.638 +            {
   1.639 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.640 +            assert_failed = 1;
   1.641 +            }
   1.642 +        }
   1.643 +    }
   1.644 +
   1.645 +void test_oil_lift_add_shift2()
   1.646 +    {
   1.647 +    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n
   1.648 +    int16_t output[SIZE];
   1.649 +    int16_t input1[SIZE];
   1.650 +    int16_t input2[SIZE];
   1.651 +    int16_t input3[SIZE];
   1.652 +    int16_t linux_output[] = {2,3,5,6,8,9,11,12,14,15,17,18,20,21,23,24,26,27,29,30};
   1.653 +    int i = 0;
   1.654 +    
   1.655 +    for(i=0; i<SIZE; i++)
   1.656 +        {
   1.657 +        input1[i] = i+1;
   1.658 +        input2[i] = i+2;
   1.659 +        input3[i] = i+3;
   1.660 +        
   1.661 +        output[i] = 0;
   1.662 +        }
   1.663 +    
   1.664 +    oil_lift_add_shift2(output, input1, input2, input3, SIZE);
   1.665 +    
   1.666 +    for(i = 0; i < SIZE; i++)
   1.667 +        {
   1.668 +        if(output[i] != linux_output[i])
   1.669 +            {
   1.670 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.671 +            assert_failed = 1;
   1.672 +            }
   1.673 +        }
   1.674 +    }
   1.675 +
   1.676 +void test_oil_lift_sub_135()
   1.677 +    {
   1.678 +    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4, const int16_t * s5, int n
   1.679 +    int16_t output[SIZE];
   1.680 +    int16_t input1[SIZE];
   1.681 +    int16_t input2[SIZE];
   1.682 +    int16_t input3[SIZE];
   1.683 +    int16_t input4[SIZE];
   1.684 +    int16_t input5[SIZE];
   1.685 +    int16_t linux_output[] = {-13,-1,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-3,-3,8};
   1.686 +    int i = 0;
   1.687 +    
   1.688 +    for(i=0; i<SIZE; i++)
   1.689 +        {
   1.690 +        input1[i] = i+1;
   1.691 +        input2[i] = i+2;
   1.692 +        input3[i] = i+3;
   1.693 +        input4[i] = i+4;
   1.694 +        input5[i] = i+5;
   1.695 +
   1.696 +        output[i] = 0;
   1.697 +        }
   1.698 +    
   1.699 +    oil_lift_sub_135(output, input1, input2, input3, input4, input5, SIZE);
   1.700 +    
   1.701 +    for(i = 0; i < SIZE; i++)
   1.702 +        {
   1.703 +        if(output[i] != linux_output[i])
   1.704 +            {
   1.705 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.706 +            assert_failed = 1;
   1.707 +            }
   1.708 +        }
   1.709 +    }
   1.710 +
   1.711 +void test_oil_lift_sub_mult_shift12()
   1.712 +    {
   1.713 +    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4_1, int n
   1.714 +    int16_t output[SIZE];
   1.715 +    int16_t input1[SIZE];
   1.716 +    int16_t input2[SIZE];
   1.717 +    int16_t input3[SIZE];
   1.718 +    int16_t input4[1];
   1.719 +    int16_t linux_output[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
   1.720 +    int i = 0;
   1.721 +    
   1.722 +    input4[0] = 4;
   1.723 +    for(i=0; i<SIZE; i++)
   1.724 +        {
   1.725 +        input1[i] = i+1;
   1.726 +        input2[i] = i+2;
   1.727 +        input3[i] = i+3;
   1.728 +        
   1.729 +        output[i] = 0;
   1.730 +        }
   1.731 +    
   1.732 +    oil_lift_sub_mult_shift12(output, input1, input2, input3, input4, SIZE);
   1.733 +    
   1.734 +    for(i = 0; i < SIZE; i++)
   1.735 +        {
   1.736 +        if(output[i] != linux_output[i])
   1.737 +            {
   1.738 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.739 +            assert_failed = 1;
   1.740 +            }
   1.741 +        }
   1.742 +    }
   1.743 +
   1.744 +void test_oil_lift_sub_shift1()
   1.745 +    {
   1.746 +    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n
   1.747 +    int16_t output[SIZE];
   1.748 +    int16_t input1[SIZE];
   1.749 +    int16_t input2[SIZE];
   1.750 +    int16_t input3[SIZE];
   1.751 +    int16_t linux_output[] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
   1.752 +    int i = 0;
   1.753 +    
   1.754 +    for(i=0; i<SIZE; i++)
   1.755 +        {
   1.756 +        input1[i] = i+1;
   1.757 +        input2[i] = i+2;
   1.758 +        input3[i] = i+3;
   1.759 +        
   1.760 +        output[i] = 0;
   1.761 +        }
   1.762 +    
   1.763 +    oil_lift_sub_shift1(output, input1, input2, input3, SIZE);
   1.764 +    
   1.765 +    for(i = 0; i < SIZE; i++)
   1.766 +        {
   1.767 +        if(output[i] != linux_output[i])
   1.768 +            {
   1.769 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.770 +            assert_failed = 1;
   1.771 +            }
   1.772 +        }
   1.773 +    }
   1.774 +
   1.775 +void test_oil_lift_sub_shift2()
   1.776 +    {
   1.777 +    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n
   1.778 +    int16_t output[SIZE];
   1.779 +    int16_t input1[SIZE];
   1.780 +    int16_t input2[SIZE];
   1.781 +    int16_t input3[SIZE];
   1.782 +    int16_t linux_output[] = {0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10};
   1.783 +    int i = 0;
   1.784 +    
   1.785 +    for(i=0; i<SIZE; i++)
   1.786 +        {
   1.787 +        input1[i] = i+1;
   1.788 +        input2[i] = i+2;
   1.789 +        input3[i] = i+3;
   1.790 +        
   1.791 +        output[i] = 0;
   1.792 +        }
   1.793 +    
   1.794 +    oil_lift_sub_shift2(output, input1, input2, input3, SIZE);
   1.795 +    
   1.796 +    for(i = 0; i < SIZE; i++)
   1.797 +        {
   1.798 +        if(output[i] != linux_output[i])
   1.799 +            {
   1.800 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.801 +            assert_failed = 1;
   1.802 +            }
   1.803 +        }
   1.804 +    }
   1.805 +
   1.806 +void test_oil_lshift_s16()
   1.807 +    {
   1.808 +    //int16_t * d1, const int16_t * s1, const int16_t * s2_1, int n
   1.809 +    int16_t output[SIZE];
   1.810 +    int16_t input1[SIZE];
   1.811 +    int16_t input2[1];
   1.812 +    int16_t linux_output[] = {1024,2048,3072,4096,5120,6144,7168,8192,9216,10240,11264,12288,13312,14336,15360,16384,17408,18432,19456,20480};
   1.813 +    int i = 0;
   1.814 +    
   1.815 +    input2[0] = 10;
   1.816 +    for(i=0; i<SIZE; i++)
   1.817 +        {
   1.818 +        input1[i] = i+1;
   1.819 +               
   1.820 +        output[i] = 0;
   1.821 +        }
   1.822 +    
   1.823 +    oil_lshift_s16(output, input1, input2, SIZE);
   1.824 +    
   1.825 +    for(i = 0; i < SIZE; i++)
   1.826 +        {
   1.827 +        if(output[i] != linux_output[i])
   1.828 +            {
   1.829 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.830 +            assert_failed = 1;
   1.831 +            }
   1.832 +        }
   1.833 +    }
   1.834 +
   1.835 +void test_oil_multiply_and_acc_12xn_s16_u8()
   1.836 +    {
   1.837 +    //int16_t * i1_12xn, int is1, const int16_t * s1_12xn, int ss1, const uint8_t * s2_12xn, int ss2, int n
   1.838 +    int16_t input1[SIZE*12];
   1.839 +    uint8_t input2[SIZE*12];
   1.840 +    int16_t output[SIZE*12];
   1.841 +    int16_t linux_output[] = {2049,14105,-20630,-27882,1088,9482,6037,-508,-1416,11797,14588,22258,-22445,28216,-31104,-12536,9646,26705,29900,10241,25291,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   1.842 +    int i = 0;
   1.843 +    
   1.844 +    for(i=0; i<SIZE*12; i++)
   1.845 +        {
   1.846 +        input1[i] = i+1;
   1.847 +        input2[i] = i+1;
   1.848 +               
   1.849 +        output[i] = 0;
   1.850 +        }
   1.851 +    
   1.852 +    oil_multiply_and_acc_12xn_s16_u8(output, 1, input1, 2, input2, 3, SIZE);
   1.853 +    
   1.854 +    for(i = 0; i < SIZE*12; i++)
   1.855 +        {
   1.856 +        if(output[i] != linux_output[i])
   1.857 +            {
   1.858 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.859 +            assert_failed = 1;
   1.860 +            }
   1.861 +        }
   1.862 +    }
   1.863 +
   1.864 +void test_oil_multiply_and_acc_16xn_s16_u8()
   1.865 +    {
   1.866 +    //int16_t * i1_16xn, int is1, const int16_t * s1_16xn, int ss1, const uint8_t * s2_16xn, int ss2, int n
   1.867 +    int16_t input1[SIZE*16];
   1.868 +    uint8_t input2[SIZE*16];
   1.869 +    int16_t output[SIZE*16];
   1.870 +    int16_t linux_output[] = {2562,15902,-16778,-21204,11363,24125,25819,25184,30958,-13657,-8553,1687,16812,-28204,-2288,28512,-32621,-9442,23776,-7240,19842,30750,16744,-30913,10112,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   1.871 +    int i = 0;
   1.872 +    
   1.873 +    for(i=0; i<SIZE*16; i++)
   1.874 +        {
   1.875 +        input1[i] = i+1;
   1.876 +        input2[i] = i+2;
   1.877 +               
   1.878 +        output[i] = 0;
   1.879 +        }
   1.880 +    
   1.881 +    oil_multiply_and_acc_16xn_s16_u8(output, 1, input1, 2, input2, 3, SIZE);
   1.882 +    
   1.883 +    for(i = 0; i < SIZE*16; i++)
   1.884 +        {
   1.885 +        if(output[i] != linux_output[i])
   1.886 +            {
   1.887 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.888 +            assert_failed = 1;
   1.889 +            }
   1.890 +        }
   1.891 +    }
   1.892 +
   1.893 +void test_oil_multiply_and_acc_24xn_s16_u8()
   1.894 +    {
   1.895 +    //int16_t * i1_24xn, int is1, const int16_t * s1_24xn, int ss1, const uint8_t * s2_24xn, int ss2, int n
   1.896 +    int16_t input1[SIZE*24];
   1.897 +    uint8_t input2[SIZE*24];
   1.898 +    int16_t output[SIZE*24];
   1.899 +    int16_t linux_output[] = {2562,15902,-16778,-21204,11363,24125,25819,25184,30958,-13657,-8553,1687,16812,-28204,-2288,28512,-1083,-25540,20682,6507,-2529,-6425,-5181,1206,15666,28340,30493,13130,-31716,17517,20765,-29431,-11505,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   1.900 +    int i = 0;
   1.901 +    
   1.902 +    for(i=0; i<SIZE*24; i++)
   1.903 +        {
   1.904 +        input1[i] = i+1;
   1.905 +        input2[i] = i+2;
   1.906 +               
   1.907 +        output[i] = 0;
   1.908 +        }
   1.909 +    
   1.910 +    oil_multiply_and_acc_24xn_s16_u8(output, 1, input1, 2, input2, 3, SIZE);
   1.911 +    
   1.912 +    for(i = 0; i < SIZE*24; i++)
   1.913 +        {
   1.914 +        if(output[i] != linux_output[i])
   1.915 +            {
   1.916 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.917 +            assert_failed = 1;
   1.918 +            }
   1.919 +        }
   1.920 +    }
   1.921 +
   1.922 +void test_oil_multiply_and_acc_6xn_s16_u8()
   1.923 +    {
   1.924 +    //int16_t * i1_6xn, int is1, const int16_t * s1_6xn, int ss1, const uint8_t * s2_6xn, int ss2, int n
   1.925 +    int16_t input1[SIZE*6];
   1.926 +    uint8_t input2[SIZE*6];
   1.927 +    int16_t output[SIZE*6];
   1.928 +    int16_t linux_output[] = {2562,15902,-16778,-21204,11363,24125,3235,19354,6945,31545,-12086,19342,-13979,10284,17859,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   1.929 +    int i = 0;
   1.930 +    
   1.931 +    for(i=0; i<SIZE*6; i++)
   1.932 +        {
   1.933 +        input1[i] = i+1;
   1.934 +        input2[i] = i+2;
   1.935 +               
   1.936 +        output[i] = 0;
   1.937 +        }
   1.938 +    
   1.939 +    oil_multiply_and_acc_6xn_s16_u8(output, 1, input1, 2, input2, 3, SIZE);
   1.940 +    
   1.941 +    for(i = 0; i < SIZE*6; i++)
   1.942 +        {
   1.943 +        if(output[i] != linux_output[i])
   1.944 +            {
   1.945 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.946 +            assert_failed = 1;
   1.947 +            }
   1.948 +        }
   1.949 +    }
   1.950 +
   1.951 +void test_oil_multiply_and_acc_8xn_s16_u8()
   1.952 +    {
   1.953 +    //int16_t * i1_8xn, int is1, const int16_t * s1_8xn, int ss1, const uint8_t * s2_8xn, int ss2, int n
   1.954 +    int16_t input1[SIZE*8];
   1.955 +    uint8_t input2[SIZE*8];
   1.956 +    int16_t output[SIZE*8];
   1.957 +    int16_t linux_output[] = {2562,15902,-16778,-21204,11363,24125,25819,25184,-2412,19336,-14808,-27096,-26260,-21039,-20171,-32394,-910,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   1.958 +    int i = 0;
   1.959 +    
   1.960 +    for(i=0; i<SIZE*8; i++)
   1.961 +        {
   1.962 +        input1[i] = i+1;
   1.963 +        input2[i] = i+2;
   1.964 +               
   1.965 +        output[i] = 0;
   1.966 +        }
   1.967 +    
   1.968 +    oil_multiply_and_acc_8xn_s16_u8(output, 1, input1, 2, input2, 3, SIZE);
   1.969 +    
   1.970 +    for(i = 0; i < SIZE*8; i++)
   1.971 +        {
   1.972 +        if(output[i] != linux_output[i])
   1.973 +            {
   1.974 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
   1.975 +            assert_failed = 1;
   1.976 +            }
   1.977 +        }
   1.978 +    
   1.979 +    }
   1.980 +
   1.981 +void test_oil_multiply_and_add_s16()
   1.982 +    {
   1.983 +    //int16_t * d, const int16_t * src1, const int16_t * src2, const int16_t * src3, int n
   1.984 +    int16_t output[SIZE];
   1.985 +    int16_t input1[SIZE];
   1.986 +    int16_t input2[SIZE];
   1.987 +    int16_t input3[SIZE];
   1.988 +    int16_t linux_output[] = {7,14,23,34,47,62,79,98,119,142,167,194,223,254,287,322,359,398,439,482};
   1.989 +    int i = 0;
   1.990 +    
   1.991 +    for(i=0; i<SIZE; i++)
   1.992 +        {
   1.993 +        input1[i] = i+1;
   1.994 +        input2[i] = i+2;
   1.995 +        input3[i] = i+3;
   1.996 +        
   1.997 +        output[i] = 0;
   1.998 +        }
   1.999 +    
  1.1000 +    oil_multiply_and_add_s16(output, input1, input2, input3, SIZE);
  1.1001 +    
  1.1002 +    for(i = 0; i < SIZE; i++)
  1.1003 +        {
  1.1004 +        if(output[i] != linux_output[i])
  1.1005 +            {
  1.1006 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
  1.1007 +            assert_failed = 1;
  1.1008 +            }
  1.1009 +        }
  1.1010 +    }
  1.1011 +
  1.1012 +void test_oil_multiply_and_add_s16_u8()
  1.1013 +    {
  1.1014 +    //int16_t * d, const int16_t * src1, const int16_t * src2, const uint8_t * src3, int n
  1.1015 +    int16_t output[SIZE];
  1.1016 +    int16_t input1[SIZE];
  1.1017 +    int16_t input2[SIZE];
  1.1018 +    uint8_t input3[SIZE];
  1.1019 +    int16_t linux_output[] = {7,14,23,34,47,62,79,98,119,142,167,194,223,254,287,322,359,398,439,482};
  1.1020 +    int i = 0;
  1.1021 +    
  1.1022 +    for(i=0; i<SIZE; i++)
  1.1023 +        {
  1.1024 +        input1[i] = i+1;
  1.1025 +        input2[i] = i+2;
  1.1026 +        input3[i] = i+3;
  1.1027 +        
  1.1028 +        output[i] = 0;
  1.1029 +        }
  1.1030 +    
  1.1031 +    oil_multiply_and_add_s16_u8(output, input1, input2, input3, SIZE);
  1.1032 +    
  1.1033 +    for(i = 0; i < SIZE; i++)
  1.1034 +        {
  1.1035 +        if(output[i] != linux_output[i])
  1.1036 +            {
  1.1037 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
  1.1038 +            assert_failed = 1;
  1.1039 +            }
  1.1040 +        }
  1.1041 +    }
  1.1042 +
  1.1043 +void test_oil_split_135()
  1.1044 +    {
  1.1045 +    //int16_t * d_2xn, const int16_t * s_2xn, int n
  1.1046 +    int16_t output[SIZE*2];
  1.1047 +    int16_t input1[SIZE*2];
  1.1048 +    int16_t linux_output[] = {1,1,3,0,4,0,7,0,9,0,11,0,13,0,15,0,17,0,19,0,21,0,23,0,25,0,27,0,29,0,31,0,33,0,35,0,36,0,39,1};
  1.1049 +    int i = 0;
  1.1050 +    
  1.1051 +    for(i=0; i<SIZE*2; i++)
  1.1052 +        {
  1.1053 +        input1[i] = i+1;
  1.1054 +        output[i] = 0;
  1.1055 +        }
  1.1056 +    
  1.1057 +    oil_split_135(output, input1, SIZE);
  1.1058 +    
  1.1059 +    for(i = 0; i < SIZE*2; i++)
  1.1060 +        {
  1.1061 +        if(output[i] != linux_output[i])
  1.1062 +            {
  1.1063 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
  1.1064 +            assert_failed = 1;
  1.1065 +            }
  1.1066 +        }
  1.1067 +    }
  1.1068 +
  1.1069 +void test_oil_split_53()
  1.1070 +    {
  1.1071 +    //int16_t * d_2xn, const int16_t * s_2xn, int n
  1.1072 +    int16_t output[SIZE*2];
  1.1073 +    int16_t input1[SIZE*2];
  1.1074 +    int16_t linux_output[] = {1,0,3,0,5,0,7,0,9,0,11,0,13,0,15,0,17,0,19,0,21,0,23,0,25,0,27,0,29,0,31,0,33,0,35,0,37,0,39,1};
  1.1075 +    int i = 0;
  1.1076 +    
  1.1077 +    for(i=0; i<SIZE*2; i++)
  1.1078 +        {
  1.1079 +        input1[i] = i+1;
  1.1080 +        output[i] = 0;
  1.1081 +        }
  1.1082 +    
  1.1083 +    oil_split_53(output, input1, SIZE);
  1.1084 +    
  1.1085 +    for(i = 0; i < SIZE*2; i++)
  1.1086 +        {
  1.1087 +        if(output[i] != linux_output[i])
  1.1088 +            {
  1.1089 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
  1.1090 +            assert_failed = 1;
  1.1091 +            }
  1.1092 +        }
  1.1093 +    }
  1.1094 +
  1.1095 +void test_oil_split_approx97()
  1.1096 +    {
  1.1097 +    //int16_t * d_2xn, const int16_t * s_2xn, int n
  1.1098 +    int16_t output[SIZE*2];
  1.1099 +    int16_t input1[SIZE*2];
  1.1100 +    int16_t linux_output[] = {1,1,3,0,5,0,7,0,9,0,11,0,13,0,15,0,17,0,19,0,21,0,23,0,25,0,27,0,29,0,31,0,33,0,35,0,37,0,39,1};
  1.1101 +    int i = 0;
  1.1102 +    
  1.1103 +    for(i=0; i<SIZE*2; i++)
  1.1104 +        {
  1.1105 +        input1[i] = i+1;
  1.1106 +        output[i] = 0;
  1.1107 +        }
  1.1108 +    
  1.1109 +    oil_split_approx97(output, input1, SIZE);
  1.1110 +    
  1.1111 +    for(i = 0; i < SIZE*2; i++)
  1.1112 +        {
  1.1113 +        if(output[i] != linux_output[i])
  1.1114 +            {
  1.1115 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
  1.1116 +            assert_failed = 1;
  1.1117 +            }
  1.1118 +        }
  1.1119 +    }
  1.1120 +
  1.1121 +void test_oil_split_daub97()
  1.1122 +    {
  1.1123 +    //int16_t * d_2xn, const int16_t * s_2xn, int n
  1.1124 +    int16_t output[SIZE*2];
  1.1125 +    int16_t input1[SIZE*2];
  1.1126 +    int16_t linux_output[] = {2,1,4,1,7,1,9,1,12,1,14,0,16,0,19,1,21,0,24,1,26,1,29,0,31,1,34,1,36,1,39,1,41,1,43,0,46,0,48,1};
  1.1127 +    int i = 0;
  1.1128 +    
  1.1129 +    for(i=0; i<SIZE*2; i++)
  1.1130 +        {
  1.1131 +        input1[i] = i+1;
  1.1132 +        output[i] = 0;
  1.1133 +        }
  1.1134 +    
  1.1135 +    oil_split_daub97(output, input1, SIZE);
  1.1136 +    
  1.1137 +    for(i = 0; i < SIZE*2; i++)
  1.1138 +        {
  1.1139 +        if(output[i] != linux_output[i])
  1.1140 +            {
  1.1141 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
  1.1142 +            assert_failed = 1;
  1.1143 +            }
  1.1144 +        }
  1.1145 +    }
  1.1146 +
  1.1147 +void test_oil_synth_135()
  1.1148 +    {
  1.1149 +    //int16_t * d_2xn, const int16_t * s_2xn, int n
  1.1150 +    int16_t output[SIZE*2];
  1.1151 +    int16_t input1[SIZE*2];
  1.1152 +    int16_t linux_output[] = {1,3,2,6,3,9,4,12,5,15,6,18,7,21,8,24,9,27,10,30,11,33,12,36,13,39,14,42,15,45,16,48,17,51,18,54,19,57,20,60};
  1.1153 +    int i = 0;
  1.1154 +    
  1.1155 +    for(i=0; i<SIZE*2; i++)
  1.1156 +        {
  1.1157 +        input1[i] = i+1;
  1.1158 +        output[i] = 0;
  1.1159 +        }
  1.1160 +    
  1.1161 +    oil_synth_135(output, input1, SIZE);
  1.1162 +    
  1.1163 +    for(i = 0; i < SIZE*2; i++)
  1.1164 +        {
  1.1165 +        if(output[i] != linux_output[i])
  1.1166 +            {
  1.1167 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
  1.1168 +            assert_failed = 1;
  1.1169 +            }
  1.1170 +        }
  1.1171 +    }
  1.1172 +
  1.1173 +void test_oil_synth_53()
  1.1174 +    {
  1.1175 +    //int16_t * d_2xn, const int16_t * s_2xn, int n
  1.1176 +    int16_t output[SIZE*2];
  1.1177 +    int16_t input1[SIZE*2];
  1.1178 +    int16_t linux_output[] = {0,3,2,6,3,9,4,12,5,15,6,18,7,21,8,24,9,27,10,30,11,33,12,36,13,39,14,42,15,45,16,48,17,51,18,54,19,57,20,60};
  1.1179 +    int i = 0;
  1.1180 +    
  1.1181 +    for(i=0; i<SIZE*2; i++)
  1.1182 +        {
  1.1183 +        input1[i] = i+1;
  1.1184 +        output[i] = 0;
  1.1185 +        }
  1.1186 +    
  1.1187 +    oil_synth_53(output, input1, SIZE);
  1.1188 +    
  1.1189 +    for(i = 0; i < SIZE*2; i++)
  1.1190 +        {
  1.1191 +        if(output[i] != linux_output[i])
  1.1192 +            {
  1.1193 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
  1.1194 +            assert_failed = 1;
  1.1195 +            }
  1.1196 +        }
  1.1197 +    }
  1.1198 +
  1.1199 +void test_oil_synth_approx97()
  1.1200 +    {
  1.1201 +    //int16_t * d_2xn, const int16_t * s_2xn, int n
  1.1202 +    int16_t output[SIZE*2];
  1.1203 +    int16_t input1[SIZE*2];
  1.1204 +    int16_t linux_output[] = {0,2,2,6,3,9,4,12,5,15,6,18,7,21,8,24,9,27,10,30,11,33,12,36,13,39,14,42,15,45,16,48,17,51,18,54,19,57,20,60};
  1.1205 +    int i = 0;
  1.1206 +    
  1.1207 +    for(i=0; i<SIZE*2; i++)
  1.1208 +        {
  1.1209 +        input1[i] = i+1;
  1.1210 +        output[i] = 0;
  1.1211 +        }
  1.1212 +    
  1.1213 +    oil_synth_approx97(output, input1, SIZE);
  1.1214 +    
  1.1215 +    for(i = 0; i < SIZE*2; i++)
  1.1216 +        {
  1.1217 +        if(output[i] != linux_output[i])
  1.1218 +            {
  1.1219 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
  1.1220 +            assert_failed = 1;
  1.1221 +            }
  1.1222 +        }
  1.1223 +    }
  1.1224 +
  1.1225 +void test_oil_synth_daub97()
  1.1226 +    {
  1.1227 +    //int16_t * d_2xn, const int16_t * s_2xn, int n
  1.1228 +    int16_t output[SIZE*2];
  1.1229 +    int16_t input1[SIZE*2];
  1.1230 +    int16_t linux_output[] = {0,3,1,6,1,8,1,10,2,13,2,16,3,20,3,22,3,25,4,27,4,29,4,33,5,37,6,40,6,42,6,44,6,46,6,51,8,55,8,57};
  1.1231 +    int i = 0;
  1.1232 +    
  1.1233 +    for(i=0; i<SIZE*2; i++)
  1.1234 +        {
  1.1235 +        input1[i] = i+1;
  1.1236 +        output[i] = 0;
  1.1237 +        }
  1.1238 +    
  1.1239 +    oil_synth_daub97(output, input1, SIZE);
  1.1240 +    
  1.1241 +    for(i = 0; i < SIZE*2; i++)
  1.1242 +        {
  1.1243 +        if(output[i] != linux_output[i])
  1.1244 +            {
  1.1245 +            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
  1.1246 +            assert_failed = 1;
  1.1247 +            }
  1.1248 +        }
  1.1249 +    }
  1.1250 +
  1.1251 +int main (int argc, char *argv[])
  1.1252 +    {
  1.1253 +    oil_init();
  1.1254 +
  1.1255 +    std_log(LOG_FILENAME_LINE,"START oil_add2_rshift_add_s16 TEST");
  1.1256 +    test_oil_add2_rshift_add_s16();
  1.1257 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1258 +    
  1.1259 +    std_log(LOG_FILENAME_LINE,"START oil_add2_rshift_sub_s16 TEST");
  1.1260 +    test_oil_add2_rshift_sub_s16();
  1.1261 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1262 +    
  1.1263 +    std_log(LOG_FILENAME_LINE,"START oil_add_const_rshift_s16 TEST");
  1.1264 +    test_oil_add_const_rshift_s16();
  1.1265 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1266 +    
  1.1267 +    std_log(LOG_FILENAME_LINE,"START oil_avg2_12xn_u8 TEST");
  1.1268 +    test_oil_avg2_12xn_u8();
  1.1269 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1270 +    
  1.1271 +    std_log(LOG_FILENAME_LINE,"START oil_avg2_16xn_u8 TEST");
  1.1272 +    test_oil_avg2_16xn_u8();
  1.1273 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1274 +    
  1.1275 +    std_log(LOG_FILENAME_LINE,"START oil_avg2_8xn_u8 TEST");
  1.1276 +    test_oil_avg2_8xn_u8();
  1.1277 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1278 +    
  1.1279 +    std_log(LOG_FILENAME_LINE,"START oil_combine2_12xn_u8 TEST");
  1.1280 +    test_oil_combine2_12xn_u8();
  1.1281 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1282 +    
  1.1283 +    std_log(LOG_FILENAME_LINE,"START oil_combine2_16xn_u8 TEST");
  1.1284 +    test_oil_combine2_16xn_u8();
  1.1285 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1286 +    
  1.1287 +    std_log(LOG_FILENAME_LINE,"START oil_combine2_8xn_u8 TEST");
  1.1288 +    test_oil_combine2_8xn_u8();
  1.1289 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1290 +    
  1.1291 +    std_log(LOG_FILENAME_LINE,"START oil_combine4_12xn_u8 TEST");
  1.1292 +    test_oil_combine4_12xn_u8(); //case fails...getting diff result than linux one.
  1.1293 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1294 +    
  1.1295 +    std_log(LOG_FILENAME_LINE,"START oil_combine4_16xn_u8 TEST");
  1.1296 +    test_oil_combine4_16xn_u8(); //case fails...getting diff result than linux one.
  1.1297 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1298 +    
  1.1299 +    std_log(LOG_FILENAME_LINE,"START oil_combine4_8xn_u8 TEST");
  1.1300 +    test_oil_combine4_8xn_u8(); //case fails...getting diff result than linux one.
  1.1301 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1302 +    
  1.1303 +    std_log(LOG_FILENAME_LINE,"START oil_deinterleave TEST");
  1.1304 +    test_oil_deinterleave();
  1.1305 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1306 +    
  1.1307 +    std_log(LOG_FILENAME_LINE,"START oil_deinterleave2_s16 TEST");
  1.1308 +    test_oil_deinterleave2_s16();
  1.1309 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1310 +    
  1.1311 +    std_log(LOG_FILENAME_LINE,"START oil_interleave TEST");
  1.1312 +    test_oil_interleave();
  1.1313 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1314 +    
  1.1315 +    std_log(LOG_FILENAME_LINE,"START oil_interleave2_s16 TEST");
  1.1316 +    test_oil_interleave2_s16();
  1.1317 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1318 +    
  1.1319 +    std_log(LOG_FILENAME_LINE,"START oil_lift_add_135 TEST");
  1.1320 +    test_oil_lift_add_135();
  1.1321 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1322 +    
  1.1323 +    std_log(LOG_FILENAME_LINE,"START oil_lift_add_mult_shift12 TEST");
  1.1324 +    test_oil_lift_add_mult_shift12();
  1.1325 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1326 +    
  1.1327 +    std_log(LOG_FILENAME_LINE,"START oil_lift_add_shift1 TEST");
  1.1328 +    test_oil_lift_add_shift1();
  1.1329 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1330 +    
  1.1331 +    std_log(LOG_FILENAME_LINE,"START oil_interleave2_s16 TEST");
  1.1332 +    test_oil_lift_add_shift2();
  1.1333 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1334 +    
  1.1335 +    std_log(LOG_FILENAME_LINE,"START oil_lift_sub_135 TEST");
  1.1336 +    test_oil_lift_sub_135();
  1.1337 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1338 +    
  1.1339 +    std_log(LOG_FILENAME_LINE,"START oil_lift_sub_mult_shift12 TEST");
  1.1340 +    test_oil_lift_sub_mult_shift12();
  1.1341 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1342 +    
  1.1343 +    std_log(LOG_FILENAME_LINE,"START oil_lift_sub_shift1 TEST");
  1.1344 +    test_oil_lift_sub_shift1();
  1.1345 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1346 +    
  1.1347 +    std_log(LOG_FILENAME_LINE,"START oil_lift_sub_shift2 TEST");
  1.1348 +    test_oil_lift_sub_shift2();
  1.1349 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1350 +    
  1.1351 +    std_log(LOG_FILENAME_LINE,"START oil_lshift_s16 TEST");
  1.1352 +    test_oil_lshift_s16();
  1.1353 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1354 +    
  1.1355 +    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_acc_12xn_s16_u8 TEST");
  1.1356 +    test_oil_multiply_and_acc_12xn_s16_u8();
  1.1357 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1358 +    
  1.1359 +    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_acc_16xn_s16_u8 TEST");
  1.1360 +    test_oil_multiply_and_acc_16xn_s16_u8();
  1.1361 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1362 +    
  1.1363 +    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_acc_24xn_s16_u8 TEST");
  1.1364 +    test_oil_multiply_and_acc_24xn_s16_u8();
  1.1365 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1366 +    
  1.1367 +    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_acc_6xn_s16_u8 TEST");
  1.1368 +    test_oil_multiply_and_acc_6xn_s16_u8();
  1.1369 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1370 +    
  1.1371 +    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_acc_8xn_s16_u8 TEST");
  1.1372 +    test_oil_multiply_and_acc_8xn_s16_u8();
  1.1373 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1374 +    
  1.1375 +    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_add_s16 TEST");
  1.1376 +    test_oil_multiply_and_add_s16();
  1.1377 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1378 +    
  1.1379 +    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_add_s16_u8 TEST");
  1.1380 +    test_oil_multiply_and_add_s16_u8();
  1.1381 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1382 +    
  1.1383 +    std_log(LOG_FILENAME_LINE,"START oil_split_135 TEST");
  1.1384 +    test_oil_split_135();
  1.1385 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1386 +    
  1.1387 +    std_log(LOG_FILENAME_LINE,"START oil_split_53 TEST");
  1.1388 +    test_oil_split_53();
  1.1389 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1390 +    
  1.1391 +    std_log(LOG_FILENAME_LINE,"START oil_split_approx97 TEST");
  1.1392 +    test_oil_split_approx97();
  1.1393 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1394 +    
  1.1395 +    std_log(LOG_FILENAME_LINE,"START oil_split_daub97 TEST");
  1.1396 +    test_oil_split_daub97();
  1.1397 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1398 +    
  1.1399 +    std_log(LOG_FILENAME_LINE,"START oil_synth_135 TEST");
  1.1400 +    test_oil_synth_135();
  1.1401 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1402 +    
  1.1403 +    std_log(LOG_FILENAME_LINE,"START oil_synth_53 TEST");
  1.1404 +    test_oil_synth_53();
  1.1405 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1406 +    
  1.1407 +    std_log(LOG_FILENAME_LINE,"START oil_synth_approx97 TEST");
  1.1408 +    test_oil_synth_approx97();
  1.1409 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1410 +    
  1.1411 +    std_log(LOG_FILENAME_LINE,"START oil_synth_daub97 TEST");
  1.1412 +    test_oil_synth_daub97();
  1.1413 +    std_log(LOG_FILENAME_LINE,"END TEST\n");
  1.1414 +    
  1.1415 +    if(assert_failed)
  1.1416 +      std_log(LOG_FILENAME_LINE,"Test Failed");
  1.1417 +    else
  1.1418 +      std_log(LOG_FILENAME_LINE,"Test Successful");
  1.1419 +    
  1.1420 +    create_xml(0);
  1.1421 +    
  1.1422 +    return 0;
  1.1423 +    }
  1.1424 +