os/ossrv/genericopenlibs/liboil/tsrc/testsuite/abs/src/abs.c
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 /*
     2  * LIBOIL - Library of Optimized Inner Loops
     3  * Copyright (c) 2004 David A. Schleef <ds@schleef.org>
     4  * All rights reserved.
     5  *
     6  * Redistribution and use in source and binary forms, with or without
     7  * modification, are permitted provided that the following conditions
     8  * are met:
     9  * 1. Redistributions of source code must retain the above copyright
    10  *    notice, this list of conditions and the following disclaimer.
    11  * 2. Redistributions in binary form must reproduce the above copyright
    12  *    notice, this list of conditions and the following disclaimer in the
    13  *    documentation and/or other materials provided with the distribution.
    14  * 
    15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
    16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
    19  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    21  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    23  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
    24  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    25  * POSSIBILITY OF SUCH DAMAGE.
    26  */
    27 
    28 
    29 #include <liboil/liboil.h>
    30 #include <liboil/liboilfunction.h>
    31 #include <stdio.h>
    32 #include <stdlib.h>
    33 
    34 #include <liboil/globals.h>
    35 
    36 #define LOG_FILE "c:\\logs\\testsuite_abs_log.txt"
    37 #include "std_log_result.h"
    38 #define LOG_FILENAME_LINE __FILE__, __LINE__
    39 
    40 void create_xml(int result)
    41 {
    42     if(result)
    43         assert_failed = 1;
    44     
    45     testResultXml("testsuite_abs");
    46     close_log_file();
    47 }
    48 
    49 void test(void)
    50 {
    51   int i;
    52   float *src;
    53   float *dest;
    54 
    55   src = malloc(100*sizeof(float));
    56   dest = malloc(100*sizeof(float));
    57 
    58   for(i=0;i<100;i++){
    59     src[i] = (i-50)*100;
    60   }
    61 
    62   //_oil_function_class_ptr_abs_f32_f32(dest, 4, src, 4, 100);
    63   oil_abs_f32_f32 (dest, 4, src, 4, 100);
    64    
    65  
    66   for (i=0; i<100; i++) {
    67       float f = (src[i] < 0) ? -1*src[i] : src[i]; 
    68       if(dest[i] != f){
    69       std_log(LOG_FILENAME_LINE,"Failed at %g", src[i]);
    70           assert_failed = 1;
    71       }
    72       std_log(LOG_FILENAME_LINE,"%d %g %g\n", i, src[i], dest[i]);
    73   }
    74 }
    75 
    76 int main (int argc, char *argv[])
    77 {
    78   OilFunctionClass *klass;
    79   OilFunctionImpl *impl;
    80 
    81   std_log(LOG_FILENAME_LINE, "Test Started testsuite_abs");
    82   oil_init ();
    83 
    84   klass = (OilFunctionClass *)oil_class_get ("abs_f32_f32");
    85   oil_class_optimize(klass);
    86 
    87   std_log(LOG_FILENAME_LINE, "class=%s\n", klass->name);
    88   for (impl = klass->first_impl; impl; impl=impl->next) {
    89       std_log(LOG_FILENAME_LINE,"impl=%p\n", impl);
    90       std_log(LOG_FILENAME_LINE,"  func=%p\n", impl->func);
    91       std_log(LOG_FILENAME_LINE,"  name=%s\n", impl->name);
    92       std_log(LOG_FILENAME_LINE,"  flags=%08x\n", impl->flags);
    93 
    94   }
    95   impl = klass->chosen_impl;
    96   std_log(LOG_FILENAME_LINE,"chosen=%p\n", impl);
    97   impl = klass->reference_impl;
    98   std_log(LOG_FILENAME_LINE,"ref=%p\n", impl);
    99 
   100   test();
   101 
   102   if(assert_failed)
   103       std_log(LOG_FILENAME_LINE,"Test Fail");
   104   else
   105       std_log(LOG_FILENAME_LINE,"Test Successful");
   106   create_xml(0);
   107   return 0;
   108 }
   109