1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/liboil/src/ref/sad8x8_broken.c Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,162 @@
1.4 +/*
1.5 + * LIBOIL - Library of Optimized Inner Loops
1.6 + * Copyright (c) 2003,2004 David A. Schleef <ds@schleef.org>
1.7 + * All rights reserved.
1.8 + *
1.9 + * Redistribution and use in source and binary forms, with or without
1.10 + * modification, are permitted provided that the following conditions
1.11 + * are met:
1.12 + * 1. Redistributions of source code must retain the above copyright
1.13 + * notice, this list of conditions and the following disclaimer.
1.14 + * 2. Redistributions in binary form must reproduce the above copyright
1.15 + * notice, this list of conditions and the following disclaimer in the
1.16 + * documentation and/or other materials provided with the distribution.
1.17 + *
1.18 + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1.19 + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1.20 + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1.21 + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
1.22 + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1.23 + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1.24 + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1.25 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1.26 + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1.27 + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1.28 + * POSSIBILITY OF SUCH DAMAGE.
1.29 + */
1.30 +//Portions Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
1.31 +
1.32 +#ifdef HAVE_CONFIG_H
1.33 +#include "config.h"
1.34 +#endif
1.35 +
1.36 +#include <liboil/liboilfunction.h>
1.37 +#include "liboil/simdpack/simdpack.h"
1.38 +#include <math.h>
1.39 +
1.40 +#ifdef __SYMBIAN32__
1.41 +#ifdef __WINSCW__
1.42 +#pragma warn_unusedarg off
1.43 +#endif//__WINSCW__
1.44 +#endif//__SYMBIAN32__
1.45 +/**
1.46 + * oil_sad8x8_s16:
1.47 + * @d_8x8:
1.48 + * @ds:
1.49 + * @s1_8x8:
1.50 + * @ss1:
1.51 + * @s2_8x8:
1.52 + * @ss2:
1.53 + *
1.54 + * FIXME: This function is broken and has been replaced by
1.55 + * @oil_sad8x8_s16_2() because the destination of this function
1.56 + * is an 8x8 block instead of a single value.
1.57 + */
1.58 +OIL_DEFINE_CLASS (sad8x8_s16,
1.59 + "uint32_t *d_8x8, int ds, int16_t *s1_8x8, int ss1, int16_t *s2_8x8, int ss2");
1.60 +/**
1.61 + * oil_sad8x8_f64:
1.62 + * @d_8x8:
1.63 + * @ds:
1.64 + * @s1_8x8:
1.65 + * @ss1:
1.66 + * @s2_8x8:
1.67 + * @ss2:
1.68 + *
1.69 + * FIXME: This function is broken and has been replaced by
1.70 + * @oil_sad8x8_f64_2() because the destination of this function
1.71 + * is an 8x8 block instead of a single value.
1.72 + */
1.73 +OIL_DEFINE_CLASS (sad8x8_f64,
1.74 + "double *d_8x8, int ds, double *s1_8x8, int ss1, double *s2_8x8, int ss2");
1.75 +
1.76 +static void
1.77 +sad8x8_f64_ref(double *dest, int dstr, double *src1, int sstr1, double *src2,
1.78 + int sstr2)
1.79 +{
1.80 + int i,j;
1.81 + double sum;
1.82 +
1.83 + sum = 0;
1.84 + for(i=0;i<8;i++){
1.85 + for(j=0;j<8;j++){
1.86 + sum += fabs(OIL_GET(src1,sstr1*i+j*sizeof(double), double) -
1.87 + OIL_GET(src2,sstr2*i+j*sizeof(double), double));
1.88 + }
1.89 + }
1.90 + *dest = sum;
1.91 +}
1.92 +
1.93 +OIL_DEFINE_IMPL_REF(sad8x8_f64_ref, sad8x8_f64);
1.94 +
1.95 +static void
1.96 +sad8x8_s16_ref(uint32_t *dest, int dstr, int16_t *src1, int sstr1, int16_t *src2,
1.97 + int sstr2)
1.98 +{
1.99 + int i,j;
1.100 + int d;
1.101 + uint32_t sum;
1.102 +
1.103 + sum = 0;
1.104 + for(i=0;i<8;i++){
1.105 + for(j=0;j<8;j++){
1.106 + d = ((int)OIL_GET(src1,sstr1*i+j*sizeof(int16_t), int16_t)) -
1.107 + ((int)OIL_GET(src2,sstr2*i+j*sizeof(int16_t), int16_t));
1.108 + sum += (d<0) ? -d : d;
1.109 + }
1.110 + }
1.111 + *dest = sum;
1.112 +}
1.113 +
1.114 +OIL_DEFINE_IMPL_REF(sad8x8_s16_ref, sad8x8_s16);
1.115 +
1.116 +
1.117 +
1.118 +#ifdef __SYMBIAN32__
1.119 +
1.120 +OilFunctionClass* __oil_function_class_sad8x8_s16() {
1.121 + return &_oil_function_class_sad8x8_s16;
1.122 +}
1.123 +#endif
1.124 +
1.125 +#ifdef __SYMBIAN32__
1.126 +
1.127 +OilFunctionClass* __oil_function_class_sad8x8_f64() {
1.128 + return &_oil_function_class_sad8x8_f64;
1.129 +}
1.130 +#endif
1.131 +
1.132 +
1.133 +
1.134 +#ifdef __SYMBIAN32__
1.135 +
1.136 +OilFunctionImpl* __oil_function_impl_sad8x8_f64_ref() {
1.137 + return &_oil_function_impl_sad8x8_f64_ref;
1.138 +}
1.139 +#endif
1.140 +
1.141 +#ifdef __SYMBIAN32__
1.142 +
1.143 +OilFunctionImpl* __oil_function_impl_sad8x8_s16_ref() {
1.144 + return &_oil_function_impl_sad8x8_s16_ref;
1.145 +}
1.146 +#endif
1.147 +
1.148 +
1.149 +
1.150 +#ifdef __SYMBIAN32__
1.151 +
1.152 +EXPORT_C void** _oil_function_class_ptr_sad8x8_s16 () {
1.153 + oil_function_class_ptr_sad8x8_s16 = __oil_function_class_sad8x8_s16();
1.154 + return &oil_function_class_ptr_sad8x8_s16->func;
1.155 + }
1.156 +#endif
1.157 +
1.158 +#ifdef __SYMBIAN32__
1.159 +
1.160 +EXPORT_C void** _oil_function_class_ptr_sad8x8_f64 () {
1.161 + oil_function_class_ptr_sad8x8_f64 = __oil_function_class_sad8x8_f64();
1.162 + return &oil_function_class_ptr_sad8x8_f64->func;
1.163 + }
1.164 +#endif
1.165 +