genericopenlibs/liboil/tsrc/testsuite/wavelet/src/wavelet.c
changeset 59 09fa7c3c5079
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genericopenlibs/liboil/tsrc/testsuite/wavelet/src/wavelet.c	Thu Sep 02 22:16:05 2010 +0300
@@ -0,0 +1,1421 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <liboil/liboil.h>
+#include <liboil/liboilfunction.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <liboil/globals.h>
+
+#define LOG_FILE "c:\\logs\\testsuite_wavelet_log.txt"
+#include "std_log_result.h"
+#define LOG_FILENAME_LINE __FILE__, __LINE__
+
+#define SIZE    20
+
+void create_xml(int result)
+{
+    if(result)
+        assert_failed = 1;
+    
+    testResultXml("testsuite_wavelet");
+    close_log_file();
+}
+
+void test_oil_add2_rshift_add_s16()
+    {
+    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4_2, int n
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t input4[2];
+    int16_t output[SIZE];
+    int16_t linux_output[] = {0,1,2,3,5,6,7,9,10,11,13,14,15,17,18,19,21,22,23,24};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i;
+        input2[i] = i*2;
+        input3[i] = i*3;
+        if(i < 2)
+            input4[i] = i*4;
+        }
+    
+    oil_add2_rshift_add_s16(output, input1, input2, input3, input4, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_add2_rshift_sub_s16()
+    {
+    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4_2, int n
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t input4[2];
+    int16_t output[SIZE];
+    int16_t linux_output[] = {0,1,2,3,3,4,5,5,6,7,7,8,9,9,10,11,11,12,13,14};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i;
+        input2[i] = i*2;
+        input3[i] = i*3;
+        if(i < 2)
+            input4[i] = i*4;
+        }
+    
+    oil_add2_rshift_sub_s16(output, input1, input2, input3, input4, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_add_const_rshift_s16()
+    {
+    //int16_t * d1, const int16_t * s1, const int16_t * s2_2, int n
+    int16_t input1[SIZE];
+    int16_t input2[2];
+    int16_t output[SIZE];
+    int16_t linux_output[] = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i;
+        if(i < 2)
+            input2[i] = i*2;
+        }
+    
+    oil_add_const_rshift_s16(output, input1, input2, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_avg2_12xn_u8()
+    {
+    //uint8_t * d_12xn, int ds1, const uint8_t * s1_12xn, int ss1, const uint8_t * s2_12xn, int ss2, int n
+    uint8_t input1[SIZE*12];
+    uint8_t input2[SIZE*12];
+    uint8_t output[SIZE*12];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*12; i++)
+        {
+        output[i] = 0;
+        input1[i] = i;
+        input2[i] = i*2;
+        }
+    
+    oil_avg2_12xn_u8(output, 2, input1, 3, input2, 4, SIZE);
+    
+    for(i = 0; i < SIZE*12; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_avg2_16xn_u8()
+    {
+    //uint8_t * d_16xn, int ds1, const uint8_t * s1_16xn, int ss1, const uint8_t * s2_16xn, int ss2, int n
+    uint8_t input1[SIZE*16];
+    uint8_t input2[SIZE*16];
+    uint8_t output[SIZE*16];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*16; i++)
+        {
+        output[i] = 0;
+        input1[i] = i;
+        input2[i] = i*2;
+        }
+    
+    oil_avg2_16xn_u8(output, 2, input1, 3, input2, 4, SIZE);
+    
+    for(i = 0; i < SIZE*16; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_avg2_8xn_u8()
+    {
+    //uint8_t * d_8xn, int ds1, const uint8_t * s1_8xn, int ss1, const uint8_t * s2_8xn, int ss2, int n
+    uint8_t input1[SIZE*8];
+    uint8_t input2[SIZE*8];
+    uint8_t output[SIZE*8];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*8; i++)
+        {
+        output[i] = 0;
+        input1[i] = i;
+        input2[i] = i*2;
+        }
+    
+    oil_avg2_8xn_u8(output, 2, input1, 3, input2, 4, SIZE);
+    
+    for(i = 0; i < SIZE*8; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_combine2_12xn_u8()
+    {
+    //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
+    uint8_t input1[SIZE*12];
+    uint8_t input2[SIZE*12];
+    int16_t input3[4];
+    uint8_t output[SIZE*12];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*12; i++)
+        {
+        output[i] = 0;
+        input1[i] = i;
+        input2[i] = i*2;
+        
+        if(i < 4)
+            input3[i] = i*3;
+        }
+    
+    oil_combine2_12xn_u8(output, 2, input1, 3, input2, 4, input3, SIZE);
+    
+    for(i = 0; i < SIZE*12; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_combine2_16xn_u8()
+    {
+    //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
+    uint8_t input1[SIZE*16];
+    uint8_t input2[SIZE*16];
+    int16_t input3[4];
+    uint8_t output[SIZE*16];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*16; i++)
+        {
+        output[i] = 1;
+        input1[i] = i;
+        input2[i] = i*2;
+        
+        if(i < 4)
+            input3[i] = i*3;
+        }
+    
+    oil_combine2_16xn_u8(output, 2, input1, 3, input2, 4, input3, SIZE);
+    
+    for(i = 0; i < SIZE*16; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_combine2_8xn_u8()
+    {
+    //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
+    uint8_t input1[SIZE*8];
+    uint8_t input2[SIZE*8];
+    int16_t input3[4];
+    uint8_t output[SIZE*8];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*8; i++)
+        {
+        output[i] = 2;
+        input1[i] = i;
+        input2[i] = i*2;
+        
+        if(i < 4)
+            input3[i] = i*3;
+        }
+    
+    oil_combine2_8xn_u8(output, 2, input1, 3, input2, 4, input3, SIZE);
+    
+    for(i = 0; i < SIZE*8; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_combine4_12xn_u8()
+    {
+    //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
+    uint8_t input1[SIZE*12];
+    uint8_t input2[SIZE*12];
+    uint8_t input3[SIZE*12];
+    uint8_t input4[SIZE*12];
+    int16_t input5[6];
+    uint8_t output[SIZE*12];
+ 	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};
+	   
+    int i = 0;
+    
+    for(i=0; i<SIZE*12; i++)
+        {
+        output[i] = 1;
+        input1[i] = i;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        input4[i] = i+4;
+        
+        if(i < 6)
+            input5[i] = i+5;
+        }
+    
+    oil_combine4_12xn_u8(output, 1, input1, 1, input2, 2, input3, 3, input4, 4, input5, SIZE);
+    
+    for(i = 0; i < SIZE*12; i++)
+        {
+        if(output[i] != expected_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,expected_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_combine4_16xn_u8()
+    {
+    //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
+    uint8_t input1[SIZE*16];
+    uint8_t input2[SIZE*16];
+    uint8_t input3[SIZE*16];
+    uint8_t input4[SIZE*16];
+    int16_t input5[6];
+    uint8_t output[SIZE*16];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*16; i++)
+        {
+        output[i] = 1;
+        input1[i] = i;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        input4[i] = i+4;
+        
+        if(i < 6)
+            input5[i] = i+5;
+        }
+    
+    oil_combine4_16xn_u8(output, 1, input1, 1, input2, 2, input3, 3, input4, 4, input5, SIZE);
+    
+    for(i = 0; i < SIZE*16; i++)
+        {
+        if(output[i] != expected_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,expected_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_combine4_8xn_u8()
+    {
+    //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
+    uint8_t input1[SIZE*8];
+    uint8_t input2[SIZE*8];
+    uint8_t input3[SIZE*8];
+    uint8_t input4[SIZE*8];
+    int16_t input5[6];
+    uint8_t output[SIZE*8];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*8; i++)
+        {
+        output[i] = 1;
+        input1[i] = i;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        input4[i] = i+4;
+        
+        if(i < 6)
+            input5[i] = i+5;
+        }
+    
+    oil_combine4_8xn_u8(output, 1, input1, 1, input2, 2, input3, 3, input4, 4, input5, SIZE);
+    
+    for(i = 0; i < SIZE*8; i++)
+        {
+        if(output[i] != expected_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,expected_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_deinterleave()
+    {
+    //int16_t * d_2xn, const int16_t * s_2xn, int n
+    int16_t input[SIZE*2];
+    int16_t output[SIZE*2];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        output[i] = 0;
+        input[i] = i;
+        }
+    
+    oil_deinterleave(output, input, SIZE);
+    
+    for(i = 0; i < SIZE*2; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_deinterleave2_s16()
+    {
+    //int16_t * d1_n, int16_t * d2_n, const int16_t * s_2xn, int n
+    int16_t input[SIZE*2];
+    int16_t output1[SIZE];
+    int16_t output2[SIZE];
+    int16_t linux_output1[] = {0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38};
+    int16_t linux_output2[] = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        if(i < SIZE)
+            {
+            output1[i] = i+1;
+            output2[i] = i+2;
+            }
+        input[i] = i;
+        }
+    
+    oil_deinterleave2_s16(output1, output2, input, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output1[i] != linux_output1[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output1[%d]: expected value - %d, actual value - %d", i,linux_output1[i],output1[i]);
+            assert_failed = 1;
+            }
+        
+        if(output2[i] != linux_output2[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output2[%d]: expected value - %d, actual value - %d", i,linux_output2[i],output2[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_interleave()
+    {
+    //int16_t * d_2xn, const int16_t * s_2xn, int n
+    int16_t input[SIZE*2];
+    int16_t output[SIZE*2];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        output[i] = 0;
+        input[i] = i;
+        }
+    
+    oil_interleave(output, input, SIZE);
+    
+    for(i = 0; i < SIZE*2; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_interleave2_s16()
+    {
+    //int16_t * d_2xn, const int16_t * s1_n, const int16_t * s2_n, int n
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t output[SIZE*2];
+    int16_t linux_output[] = {1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        if(i < SIZE)
+            {
+            input1[i] = i+1;
+            input2[i] = i+2;
+            }
+        output[i] = 0;
+        }
+    
+    oil_interleave2_s16(output, input1, input2, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_lift_add_135()
+    {
+    //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
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t input4[SIZE];
+    int16_t input5[SIZE];
+    int16_t linux_output[] = {15,5,7,10,12,14,16,18,20,22,24,26,28,30,32,34,36,39,41,32};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        input4[i] = i+4;
+        input5[i] = i+5;
+
+        output[i] = 0;
+        }
+    
+    oil_lift_add_135(output, input1, input2, input3, input4, input5, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_lift_add_mult_shift12()
+    {
+    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4_1, int n
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t input4[1];
+    int16_t linux_output[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
+    int i = 0;
+    
+    input4[0] = 4;
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        
+        output[i] = 0;
+        }
+    
+    oil_lift_add_mult_shift12(output, input1, input2, input3, input4, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_lift_add_shift1()
+    {
+    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t linux_output[] = {3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        
+        output[i] = 0;
+        }
+    
+    oil_lift_add_shift1(output, input1, input2, input3, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_lift_add_shift2()
+    {
+    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t linux_output[] = {2,3,5,6,8,9,11,12,14,15,17,18,20,21,23,24,26,27,29,30};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        
+        output[i] = 0;
+        }
+    
+    oil_lift_add_shift2(output, input1, input2, input3, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_lift_sub_135()
+    {
+    //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
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t input4[SIZE];
+    int16_t input5[SIZE];
+    int16_t linux_output[] = {-13,-1,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-3,-3,8};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        input4[i] = i+4;
+        input5[i] = i+5;
+
+        output[i] = 0;
+        }
+    
+    oil_lift_sub_135(output, input1, input2, input3, input4, input5, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_lift_sub_mult_shift12()
+    {
+    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, const int16_t * s4_1, int n
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t input4[1];
+    int16_t linux_output[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
+    int i = 0;
+    
+    input4[0] = 4;
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        
+        output[i] = 0;
+        }
+    
+    oil_lift_sub_mult_shift12(output, input1, input2, input3, input4, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_lift_sub_shift1()
+    {
+    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t linux_output[] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        
+        output[i] = 0;
+        }
+    
+    oil_lift_sub_shift1(output, input1, input2, input3, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_lift_sub_shift2()
+    {
+    //int16_t * d, const int16_t * s1, const int16_t * s2, const int16_t * s3, int n
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t linux_output[] = {0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        
+        output[i] = 0;
+        }
+    
+    oil_lift_sub_shift2(output, input1, input2, input3, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_lshift_s16()
+    {
+    //int16_t * d1, const int16_t * s1, const int16_t * s2_1, int n
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[1];
+    int16_t linux_output[] = {1024,2048,3072,4096,5120,6144,7168,8192,9216,10240,11264,12288,13312,14336,15360,16384,17408,18432,19456,20480};
+    int i = 0;
+    
+    input2[0] = 10;
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+               
+        output[i] = 0;
+        }
+    
+    oil_lshift_s16(output, input1, input2, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_multiply_and_acc_12xn_s16_u8()
+    {
+    //int16_t * i1_12xn, int is1, const int16_t * s1_12xn, int ss1, const uint8_t * s2_12xn, int ss2, int n
+    int16_t input1[SIZE*12];
+    uint8_t input2[SIZE*12];
+    int16_t output[SIZE*12];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*12; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+1;
+               
+        output[i] = 0;
+        }
+    
+    oil_multiply_and_acc_12xn_s16_u8(output, 1, input1, 2, input2, 3, SIZE);
+    
+    for(i = 0; i < SIZE*12; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_multiply_and_acc_16xn_s16_u8()
+    {
+    //int16_t * i1_16xn, int is1, const int16_t * s1_16xn, int ss1, const uint8_t * s2_16xn, int ss2, int n
+    int16_t input1[SIZE*16];
+    uint8_t input2[SIZE*16];
+    int16_t output[SIZE*16];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*16; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+               
+        output[i] = 0;
+        }
+    
+    oil_multiply_and_acc_16xn_s16_u8(output, 1, input1, 2, input2, 3, SIZE);
+    
+    for(i = 0; i < SIZE*16; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_multiply_and_acc_24xn_s16_u8()
+    {
+    //int16_t * i1_24xn, int is1, const int16_t * s1_24xn, int ss1, const uint8_t * s2_24xn, int ss2, int n
+    int16_t input1[SIZE*24];
+    uint8_t input2[SIZE*24];
+    int16_t output[SIZE*24];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*24; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+               
+        output[i] = 0;
+        }
+    
+    oil_multiply_and_acc_24xn_s16_u8(output, 1, input1, 2, input2, 3, SIZE);
+    
+    for(i = 0; i < SIZE*24; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_multiply_and_acc_6xn_s16_u8()
+    {
+    //int16_t * i1_6xn, int is1, const int16_t * s1_6xn, int ss1, const uint8_t * s2_6xn, int ss2, int n
+    int16_t input1[SIZE*6];
+    uint8_t input2[SIZE*6];
+    int16_t output[SIZE*6];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*6; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+               
+        output[i] = 0;
+        }
+    
+    oil_multiply_and_acc_6xn_s16_u8(output, 1, input1, 2, input2, 3, SIZE);
+    
+    for(i = 0; i < SIZE*6; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_multiply_and_acc_8xn_s16_u8()
+    {
+    //int16_t * i1_8xn, int is1, const int16_t * s1_8xn, int ss1, const uint8_t * s2_8xn, int ss2, int n
+    int16_t input1[SIZE*8];
+    uint8_t input2[SIZE*8];
+    int16_t output[SIZE*8];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*8; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+               
+        output[i] = 0;
+        }
+    
+    oil_multiply_and_acc_8xn_s16_u8(output, 1, input1, 2, input2, 3, SIZE);
+    
+    for(i = 0; i < SIZE*8; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    
+    }
+
+void test_oil_multiply_and_add_s16()
+    {
+    //int16_t * d, const int16_t * src1, const int16_t * src2, const int16_t * src3, int n
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    int16_t input3[SIZE];
+    int16_t linux_output[] = {7,14,23,34,47,62,79,98,119,142,167,194,223,254,287,322,359,398,439,482};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        
+        output[i] = 0;
+        }
+    
+    oil_multiply_and_add_s16(output, input1, input2, input3, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_multiply_and_add_s16_u8()
+    {
+    //int16_t * d, const int16_t * src1, const int16_t * src2, const uint8_t * src3, int n
+    int16_t output[SIZE];
+    int16_t input1[SIZE];
+    int16_t input2[SIZE];
+    uint8_t input3[SIZE];
+    int16_t linux_output[] = {7,14,23,34,47,62,79,98,119,142,167,194,223,254,287,322,359,398,439,482};
+    int i = 0;
+    
+    for(i=0; i<SIZE; i++)
+        {
+        input1[i] = i+1;
+        input2[i] = i+2;
+        input3[i] = i+3;
+        
+        output[i] = 0;
+        }
+    
+    oil_multiply_and_add_s16_u8(output, input1, input2, input3, SIZE);
+    
+    for(i = 0; i < SIZE; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_split_135()
+    {
+    //int16_t * d_2xn, const int16_t * s_2xn, int n
+    int16_t output[SIZE*2];
+    int16_t input1[SIZE*2];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        input1[i] = i+1;
+        output[i] = 0;
+        }
+    
+    oil_split_135(output, input1, SIZE);
+    
+    for(i = 0; i < SIZE*2; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_split_53()
+    {
+    //int16_t * d_2xn, const int16_t * s_2xn, int n
+    int16_t output[SIZE*2];
+    int16_t input1[SIZE*2];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        input1[i] = i+1;
+        output[i] = 0;
+        }
+    
+    oil_split_53(output, input1, SIZE);
+    
+    for(i = 0; i < SIZE*2; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_split_approx97()
+    {
+    //int16_t * d_2xn, const int16_t * s_2xn, int n
+    int16_t output[SIZE*2];
+    int16_t input1[SIZE*2];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        input1[i] = i+1;
+        output[i] = 0;
+        }
+    
+    oil_split_approx97(output, input1, SIZE);
+    
+    for(i = 0; i < SIZE*2; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_split_daub97()
+    {
+    //int16_t * d_2xn, const int16_t * s_2xn, int n
+    int16_t output[SIZE*2];
+    int16_t input1[SIZE*2];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        input1[i] = i+1;
+        output[i] = 0;
+        }
+    
+    oil_split_daub97(output, input1, SIZE);
+    
+    for(i = 0; i < SIZE*2; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_synth_135()
+    {
+    //int16_t * d_2xn, const int16_t * s_2xn, int n
+    int16_t output[SIZE*2];
+    int16_t input1[SIZE*2];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        input1[i] = i+1;
+        output[i] = 0;
+        }
+    
+    oil_synth_135(output, input1, SIZE);
+    
+    for(i = 0; i < SIZE*2; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_synth_53()
+    {
+    //int16_t * d_2xn, const int16_t * s_2xn, int n
+    int16_t output[SIZE*2];
+    int16_t input1[SIZE*2];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        input1[i] = i+1;
+        output[i] = 0;
+        }
+    
+    oil_synth_53(output, input1, SIZE);
+    
+    for(i = 0; i < SIZE*2; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_synth_approx97()
+    {
+    //int16_t * d_2xn, const int16_t * s_2xn, int n
+    int16_t output[SIZE*2];
+    int16_t input1[SIZE*2];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        input1[i] = i+1;
+        output[i] = 0;
+        }
+    
+    oil_synth_approx97(output, input1, SIZE);
+    
+    for(i = 0; i < SIZE*2; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+void test_oil_synth_daub97()
+    {
+    //int16_t * d_2xn, const int16_t * s_2xn, int n
+    int16_t output[SIZE*2];
+    int16_t input1[SIZE*2];
+    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};
+    int i = 0;
+    
+    for(i=0; i<SIZE*2; i++)
+        {
+        input1[i] = i+1;
+        output[i] = 0;
+        }
+    
+    oil_synth_daub97(output, input1, SIZE);
+    
+    for(i = 0; i < SIZE*2; i++)
+        {
+        if(output[i] != linux_output[i])
+            {
+            std_log(LOG_FILENAME_LINE, "output[%d]: expected value - %d, actual value - %d", i,linux_output[i],output[i]);
+            assert_failed = 1;
+            }
+        }
+    }
+
+int main (int argc, char *argv[])
+    {
+    oil_init();
+
+    std_log(LOG_FILENAME_LINE,"START oil_add2_rshift_add_s16 TEST");
+    test_oil_add2_rshift_add_s16();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_add2_rshift_sub_s16 TEST");
+    test_oil_add2_rshift_sub_s16();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_add_const_rshift_s16 TEST");
+    test_oil_add_const_rshift_s16();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_avg2_12xn_u8 TEST");
+    test_oil_avg2_12xn_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_avg2_16xn_u8 TEST");
+    test_oil_avg2_16xn_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_avg2_8xn_u8 TEST");
+    test_oil_avg2_8xn_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_combine2_12xn_u8 TEST");
+    test_oil_combine2_12xn_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_combine2_16xn_u8 TEST");
+    test_oil_combine2_16xn_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_combine2_8xn_u8 TEST");
+    test_oil_combine2_8xn_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_combine4_12xn_u8 TEST");
+    test_oil_combine4_12xn_u8(); //case fails...getting diff result than linux one.
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_combine4_16xn_u8 TEST");
+    test_oil_combine4_16xn_u8(); //case fails...getting diff result than linux one.
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_combine4_8xn_u8 TEST");
+    test_oil_combine4_8xn_u8(); //case fails...getting diff result than linux one.
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_deinterleave TEST");
+    test_oil_deinterleave();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_deinterleave2_s16 TEST");
+    test_oil_deinterleave2_s16();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_interleave TEST");
+    test_oil_interleave();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_interleave2_s16 TEST");
+    test_oil_interleave2_s16();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_lift_add_135 TEST");
+    test_oil_lift_add_135();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_lift_add_mult_shift12 TEST");
+    test_oil_lift_add_mult_shift12();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_lift_add_shift1 TEST");
+    test_oil_lift_add_shift1();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_interleave2_s16 TEST");
+    test_oil_lift_add_shift2();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_lift_sub_135 TEST");
+    test_oil_lift_sub_135();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_lift_sub_mult_shift12 TEST");
+    test_oil_lift_sub_mult_shift12();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_lift_sub_shift1 TEST");
+    test_oil_lift_sub_shift1();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_lift_sub_shift2 TEST");
+    test_oil_lift_sub_shift2();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_lshift_s16 TEST");
+    test_oil_lshift_s16();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_acc_12xn_s16_u8 TEST");
+    test_oil_multiply_and_acc_12xn_s16_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_acc_16xn_s16_u8 TEST");
+    test_oil_multiply_and_acc_16xn_s16_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_acc_24xn_s16_u8 TEST");
+    test_oil_multiply_and_acc_24xn_s16_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_acc_6xn_s16_u8 TEST");
+    test_oil_multiply_and_acc_6xn_s16_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_acc_8xn_s16_u8 TEST");
+    test_oil_multiply_and_acc_8xn_s16_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_add_s16 TEST");
+    test_oil_multiply_and_add_s16();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_multiply_and_add_s16_u8 TEST");
+    test_oil_multiply_and_add_s16_u8();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_split_135 TEST");
+    test_oil_split_135();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_split_53 TEST");
+    test_oil_split_53();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_split_approx97 TEST");
+    test_oil_split_approx97();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_split_daub97 TEST");
+    test_oil_split_daub97();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_synth_135 TEST");
+    test_oil_synth_135();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_synth_53 TEST");
+    test_oil_synth_53();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_synth_approx97 TEST");
+    test_oil_synth_approx97();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    std_log(LOG_FILENAME_LINE,"START oil_synth_daub97 TEST");
+    test_oil_synth_daub97();
+    std_log(LOG_FILENAME_LINE,"END TEST\n");
+    
+    if(assert_failed)
+      std_log(LOG_FILENAME_LINE,"Test Failed");
+    else
+      std_log(LOG_FILENAME_LINE,"Test Successful");
+    
+    create_xml(0);
+    
+    return 0;
+    }
+