1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/genericopenlibs/liboil/src/math/ag_math.c Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,1016 @@
1.4 +/* This file is autogenerated. Do not edit. */
1.5 +/*
1.6 + * LIBOIL - Library of Optimized Inner Loops
1.7 + * Copyright (c) 2005 David A. Schleef <ds.org>
1.8 + * All rights reserved.
1.9 + *
1.10 + * Redistribution and use in source and binary forms, with or without
1.11 + * modification, are permitted provided that the following conditions
1.12 + * are met:
1.13 + * 1. Redistributions of source code must retain the above copyright
1.14 + * notice, this list of conditions and the following disclaimer.
1.15 + * 2. Redistributions in binary form must reproduce the above copyright
1.16 + * notice, this list of conditions and the following disclaimer in the
1.17 + * documentation and/or other materials provided with the distribution.
1.18 + *
1.19 + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1.20 + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1.21 + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1.22 + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
1.23 + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1.24 + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1.25 + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1.26 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1.27 + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1.28 + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1.29 + * POSSIBILITY OF SUCH DAMAGE.
1.30 + */
1.31 +//Portions Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
1.32 +
1.33 +#ifdef HAVE_CONFIG_H
1.34 +#include "config.h"
1.35 +#endif
1.36 +
1.37 +#include <math.h>
1.38 +
1.39 +#include <liboil/liboil.h>
1.40 +#include <liboil/liboilclasses.h>
1.41 +
1.42 +static void
1.43 +add_f32_pointer (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.44 +{
1.45 + while (n) {
1.46 + *dest = *src1 + *src2;
1.47 + dest++;
1.48 + src1++;
1.49 + src2++;
1.50 + n--;
1.51 + }
1.52 +}
1.53 +OIL_DEFINE_IMPL (add_f32_pointer, add_f32);
1.54 +
1.55 +static void
1.56 +add_f32_unroll2 (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.57 +{
1.58 + int i;
1.59 +
1.60 + if (n & 1) {
1.61 + dest[0] = src1[0] + src2[0];
1.62 + dest++;
1.63 + src1++;
1.64 + src2++;
1.65 + n--;
1.66 + }
1.67 + for(i=0;i<n;i+=2){
1.68 + dest[i] = src1[i] + src2[i];
1.69 + dest[i+1] = src1[i+1] + src2[i+1];
1.70 + }
1.71 +}
1.72 +OIL_DEFINE_IMPL (add_f32_unroll2, add_f32);
1.73 +
1.74 +static void
1.75 +add_f32_unroll4a (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.76 +{
1.77 + int i;
1.78 +
1.79 + while (n & 3) {
1.80 + dest[0] = src1[0] + src2[0];
1.81 + dest++;
1.82 + src1++;
1.83 + src2++;
1.84 + n--;
1.85 + }
1.86 + for(i=0;i<n;i+=4){
1.87 + dest[i] = src1[i] + src2[i];
1.88 + dest[i+1] = src1[i+1] + src2[i+1];
1.89 + dest[i+2] = src1[i+2] + src2[i+2];
1.90 + dest[i+3] = src1[i+3] + src2[i+3];
1.91 + }
1.92 +}
1.93 +OIL_DEFINE_IMPL (add_f32_unroll4a, add_f32);
1.94 +
1.95 +static void
1.96 +add_f32_unroll4b (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.97 +{
1.98 + int i;
1.99 +
1.100 + for(i=0;i<(n&(~0x3));i+=4){
1.101 + dest[i+0] = src1[i+0] + src2[i+0];
1.102 + dest[i+1] = src1[i+1] + src2[i+1];
1.103 + dest[i+2] = src1[i+2] + src2[i+2];
1.104 + dest[i+3] = src1[i+3] + src2[i+3];
1.105 + }
1.106 + for(;i<n;i++){
1.107 + dest[i] = src1[i] + src2[i];
1.108 + }
1.109 +}
1.110 +OIL_DEFINE_IMPL (add_f32_unroll4b, add_f32);
1.111 +
1.112 +static void
1.113 +add_f32_unroll4c (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.114 +{
1.115 + int i;
1.116 +
1.117 + for(i=0;i<(n&(~0x3));i+=4){
1.118 + *dest++ = *src1++ + *src2++;
1.119 + *dest++ = *src1++ + *src2++;
1.120 + *dest++ = *src1++ + *src2++;
1.121 + *dest++ = *src1++ + *src2++;
1.122 + }
1.123 + for(;i<n;i++){
1.124 + *dest++ = *src1++ + *src2++;
1.125 + }
1.126 +}
1.127 +OIL_DEFINE_IMPL (add_f32_unroll4c, add_f32);
1.128 +
1.129 +static void
1.130 +add_f64_pointer (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.131 +{
1.132 + while (n) {
1.133 + *dest = *src1 + *src2;
1.134 + dest++;
1.135 + src1++;
1.136 + src2++;
1.137 + n--;
1.138 + }
1.139 +}
1.140 +OIL_DEFINE_IMPL (add_f64_pointer, add_f64);
1.141 +
1.142 +static void
1.143 +add_f64_unroll2 (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.144 +{
1.145 + int i;
1.146 +
1.147 + if (n & 1) {
1.148 + dest[0] = src1[0] + src2[0];
1.149 + dest++;
1.150 + src1++;
1.151 + src2++;
1.152 + n--;
1.153 + }
1.154 + for(i=0;i<n;i+=2){
1.155 + dest[i] = src1[i] + src2[i];
1.156 + dest[i+1] = src1[i+1] + src2[i+1];
1.157 + }
1.158 +}
1.159 +OIL_DEFINE_IMPL (add_f64_unroll2, add_f64);
1.160 +
1.161 +static void
1.162 +add_f64_unroll4a (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.163 +{
1.164 + int i;
1.165 +
1.166 + while (n & 3) {
1.167 + dest[0] = src1[0] + src2[0];
1.168 + dest++;
1.169 + src1++;
1.170 + src2++;
1.171 + n--;
1.172 + }
1.173 + for(i=0;i<n;i+=4){
1.174 + dest[i] = src1[i] + src2[i];
1.175 + dest[i+1] = src1[i+1] + src2[i+1];
1.176 + dest[i+2] = src1[i+2] + src2[i+2];
1.177 + dest[i+3] = src1[i+3] + src2[i+3];
1.178 + }
1.179 +}
1.180 +OIL_DEFINE_IMPL (add_f64_unroll4a, add_f64);
1.181 +
1.182 +static void
1.183 +add_f64_unroll4b (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.184 +{
1.185 + int i;
1.186 +
1.187 + for(i=0;i<(n&(~0x3));i+=4){
1.188 + dest[i+0] = src1[i+0] + src2[i+0];
1.189 + dest[i+1] = src1[i+1] + src2[i+1];
1.190 + dest[i+2] = src1[i+2] + src2[i+2];
1.191 + dest[i+3] = src1[i+3] + src2[i+3];
1.192 + }
1.193 + for(;i<n;i++){
1.194 + dest[i] = src1[i] + src2[i];
1.195 + }
1.196 +}
1.197 +OIL_DEFINE_IMPL (add_f64_unroll4b, add_f64);
1.198 +
1.199 +static void
1.200 +add_f64_unroll4c (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.201 +{
1.202 + int i;
1.203 +
1.204 + for(i=0;i<(n&(~0x3));i+=4){
1.205 + *dest++ = *src1++ + *src2++;
1.206 + *dest++ = *src1++ + *src2++;
1.207 + *dest++ = *src1++ + *src2++;
1.208 + *dest++ = *src1++ + *src2++;
1.209 + }
1.210 + for(;i<n;i++){
1.211 + *dest++ = *src1++ + *src2++;
1.212 + }
1.213 +}
1.214 +OIL_DEFINE_IMPL (add_f64_unroll4c, add_f64);
1.215 +
1.216 +static void
1.217 +subtract_f32_pointer (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.218 +{
1.219 + while (n) {
1.220 + *dest = *src1 - *src2;
1.221 + dest++;
1.222 + src1++;
1.223 + src2++;
1.224 + n--;
1.225 + }
1.226 +}
1.227 +OIL_DEFINE_IMPL (subtract_f32_pointer, subtract_f32);
1.228 +
1.229 +static void
1.230 +subtract_f32_unroll2 (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.231 +{
1.232 + int i;
1.233 +
1.234 + if (n & 1) {
1.235 + dest[0] = src1[0] - src2[0];
1.236 + dest++;
1.237 + src1++;
1.238 + src2++;
1.239 + n--;
1.240 + }
1.241 + for(i=0;i<n;i+=2){
1.242 + dest[i] = src1[i] - src2[i];
1.243 + dest[i+1] = src1[i+1] - src2[i+1];
1.244 + }
1.245 +}
1.246 +OIL_DEFINE_IMPL (subtract_f32_unroll2, subtract_f32);
1.247 +
1.248 +static void
1.249 +subtract_f32_unroll4a (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.250 +{
1.251 + int i;
1.252 +
1.253 + while (n & 3) {
1.254 + dest[0] = src1[0] - src2[0];
1.255 + dest++;
1.256 + src1++;
1.257 + src2++;
1.258 + n--;
1.259 + }
1.260 + for(i=0;i<n;i+=4){
1.261 + dest[i] = src1[i] - src2[i];
1.262 + dest[i+1] = src1[i+1] - src2[i+1];
1.263 + dest[i+2] = src1[i+2] - src2[i+2];
1.264 + dest[i+3] = src1[i+3] - src2[i+3];
1.265 + }
1.266 +}
1.267 +OIL_DEFINE_IMPL (subtract_f32_unroll4a, subtract_f32);
1.268 +
1.269 +static void
1.270 +subtract_f32_unroll4b (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.271 +{
1.272 + int i;
1.273 +
1.274 + for(i=0;i<(n&(~0x3));i+=4){
1.275 + dest[i+0] = src1[i+0] - src2[i+0];
1.276 + dest[i+1] = src1[i+1] - src2[i+1];
1.277 + dest[i+2] = src1[i+2] - src2[i+2];
1.278 + dest[i+3] = src1[i+3] - src2[i+3];
1.279 + }
1.280 + for(;i<n;i++){
1.281 + dest[i] = src1[i] - src2[i];
1.282 + }
1.283 +}
1.284 +OIL_DEFINE_IMPL (subtract_f32_unroll4b, subtract_f32);
1.285 +
1.286 +static void
1.287 +subtract_f32_unroll4c (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.288 +{
1.289 + int i;
1.290 +
1.291 + for(i=0;i<(n&(~0x3));i+=4){
1.292 + *dest++ = *src1++ - *src2++;
1.293 + *dest++ = *src1++ - *src2++;
1.294 + *dest++ = *src1++ - *src2++;
1.295 + *dest++ = *src1++ - *src2++;
1.296 + }
1.297 + for(;i<n;i++){
1.298 + *dest++ = *src1++ - *src2++;
1.299 + }
1.300 +}
1.301 +OIL_DEFINE_IMPL (subtract_f32_unroll4c, subtract_f32);
1.302 +
1.303 +static void
1.304 +subtract_f64_pointer (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.305 +{
1.306 + while (n) {
1.307 + *dest = *src1 - *src2;
1.308 + dest++;
1.309 + src1++;
1.310 + src2++;
1.311 + n--;
1.312 + }
1.313 +}
1.314 +OIL_DEFINE_IMPL (subtract_f64_pointer, subtract_f64);
1.315 +
1.316 +static void
1.317 +subtract_f64_unroll2 (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.318 +{
1.319 + int i;
1.320 +
1.321 + if (n & 1) {
1.322 + dest[0] = src1[0] - src2[0];
1.323 + dest++;
1.324 + src1++;
1.325 + src2++;
1.326 + n--;
1.327 + }
1.328 + for(i=0;i<n;i+=2){
1.329 + dest[i] = src1[i] - src2[i];
1.330 + dest[i+1] = src1[i+1] - src2[i+1];
1.331 + }
1.332 +}
1.333 +OIL_DEFINE_IMPL (subtract_f64_unroll2, subtract_f64);
1.334 +
1.335 +static void
1.336 +subtract_f64_unroll4a (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.337 +{
1.338 + int i;
1.339 +
1.340 + while (n & 3) {
1.341 + dest[0] = src1[0] - src2[0];
1.342 + dest++;
1.343 + src1++;
1.344 + src2++;
1.345 + n--;
1.346 + }
1.347 + for(i=0;i<n;i+=4){
1.348 + dest[i] = src1[i] - src2[i];
1.349 + dest[i+1] = src1[i+1] - src2[i+1];
1.350 + dest[i+2] = src1[i+2] - src2[i+2];
1.351 + dest[i+3] = src1[i+3] - src2[i+3];
1.352 + }
1.353 +}
1.354 +OIL_DEFINE_IMPL (subtract_f64_unroll4a, subtract_f64);
1.355 +
1.356 +static void
1.357 +subtract_f64_unroll4b (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.358 +{
1.359 + int i;
1.360 +
1.361 + for(i=0;i<(n&(~0x3));i+=4){
1.362 + dest[i+0] = src1[i+0] - src2[i+0];
1.363 + dest[i+1] = src1[i+1] - src2[i+1];
1.364 + dest[i+2] = src1[i+2] - src2[i+2];
1.365 + dest[i+3] = src1[i+3] - src2[i+3];
1.366 + }
1.367 + for(;i<n;i++){
1.368 + dest[i] = src1[i] - src2[i];
1.369 + }
1.370 +}
1.371 +OIL_DEFINE_IMPL (subtract_f64_unroll4b, subtract_f64);
1.372 +
1.373 +static void
1.374 +subtract_f64_unroll4c (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.375 +{
1.376 + int i;
1.377 +
1.378 + for(i=0;i<(n&(~0x3));i+=4){
1.379 + *dest++ = *src1++ - *src2++;
1.380 + *dest++ = *src1++ - *src2++;
1.381 + *dest++ = *src1++ - *src2++;
1.382 + *dest++ = *src1++ - *src2++;
1.383 + }
1.384 + for(;i<n;i++){
1.385 + *dest++ = *src1++ - *src2++;
1.386 + }
1.387 +}
1.388 +OIL_DEFINE_IMPL (subtract_f64_unroll4c, subtract_f64);
1.389 +
1.390 +static void
1.391 +divide_f32_pointer (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.392 +{
1.393 + while (n) {
1.394 + *dest = *src1 / *src2;
1.395 + dest++;
1.396 + src1++;
1.397 + src2++;
1.398 + n--;
1.399 + }
1.400 +}
1.401 +OIL_DEFINE_IMPL (divide_f32_pointer, divide_f32);
1.402 +
1.403 +static void
1.404 +divide_f32_unroll2 (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.405 +{
1.406 + int i;
1.407 +
1.408 + if (n & 1) {
1.409 + dest[0] = src1[0] / src2[0];
1.410 + dest++;
1.411 + src1++;
1.412 + src2++;
1.413 + n--;
1.414 + }
1.415 + for(i=0;i<n;i+=2){
1.416 + dest[i] = src1[i] / src2[i];
1.417 + dest[i+1] = src1[i+1] / src2[i+1];
1.418 + }
1.419 +}
1.420 +OIL_DEFINE_IMPL (divide_f32_unroll2, divide_f32);
1.421 +
1.422 +static void
1.423 +divide_f32_unroll4a (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.424 +{
1.425 + int i;
1.426 +
1.427 + while (n & 3) {
1.428 + dest[0] = src1[0] / src2[0];
1.429 + dest++;
1.430 + src1++;
1.431 + src2++;
1.432 + n--;
1.433 + }
1.434 + for(i=0;i<n;i+=4){
1.435 + dest[i] = src1[i] / src2[i];
1.436 + dest[i+1] = src1[i+1] / src2[i+1];
1.437 + dest[i+2] = src1[i+2] / src2[i+2];
1.438 + dest[i+3] = src1[i+3] / src2[i+3];
1.439 + }
1.440 +}
1.441 +OIL_DEFINE_IMPL (divide_f32_unroll4a, divide_f32);
1.442 +
1.443 +static void
1.444 +divide_f32_unroll4b (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.445 +{
1.446 + int i;
1.447 +
1.448 + for(i=0;i<(n&(~0x3));i+=4){
1.449 + dest[i+0] = src1[i+0] / src2[i+0];
1.450 + dest[i+1] = src1[i+1] / src2[i+1];
1.451 + dest[i+2] = src1[i+2] / src2[i+2];
1.452 + dest[i+3] = src1[i+3] / src2[i+3];
1.453 + }
1.454 + for(;i<n;i++){
1.455 + dest[i] = src1[i] / src2[i];
1.456 + }
1.457 +}
1.458 +OIL_DEFINE_IMPL (divide_f32_unroll4b, divide_f32);
1.459 +
1.460 +static void
1.461 +divide_f32_unroll4c (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.462 +{
1.463 + int i;
1.464 +
1.465 + for(i=0;i<(n&(~0x3));i+=4){
1.466 + *dest++ = *src1++ / *src2++;
1.467 + *dest++ = *src1++ / *src2++;
1.468 + *dest++ = *src1++ / *src2++;
1.469 + *dest++ = *src1++ / *src2++;
1.470 + }
1.471 + for(;i<n;i++){
1.472 + *dest++ = *src1++ / *src2++;
1.473 + }
1.474 +}
1.475 +OIL_DEFINE_IMPL (divide_f32_unroll4c, divide_f32);
1.476 +
1.477 +static void
1.478 +divide_f64_pointer (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.479 +{
1.480 + while (n) {
1.481 + *dest = *src1 / *src2;
1.482 + dest++;
1.483 + src1++;
1.484 + src2++;
1.485 + n--;
1.486 + }
1.487 +}
1.488 +OIL_DEFINE_IMPL (divide_f64_pointer, divide_f64);
1.489 +
1.490 +static void
1.491 +divide_f64_unroll2 (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.492 +{
1.493 + int i;
1.494 +
1.495 + if (n & 1) {
1.496 + dest[0] = src1[0] / src2[0];
1.497 + dest++;
1.498 + src1++;
1.499 + src2++;
1.500 + n--;
1.501 + }
1.502 + for(i=0;i<n;i+=2){
1.503 + dest[i] = src1[i] / src2[i];
1.504 + dest[i+1] = src1[i+1] / src2[i+1];
1.505 + }
1.506 +}
1.507 +OIL_DEFINE_IMPL (divide_f64_unroll2, divide_f64);
1.508 +
1.509 +static void
1.510 +divide_f64_unroll4a (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.511 +{
1.512 + int i;
1.513 +
1.514 + while (n & 3) {
1.515 + dest[0] = src1[0] / src2[0];
1.516 + dest++;
1.517 + src1++;
1.518 + src2++;
1.519 + n--;
1.520 + }
1.521 + for(i=0;i<n;i+=4){
1.522 + dest[i] = src1[i] / src2[i];
1.523 + dest[i+1] = src1[i+1] / src2[i+1];
1.524 + dest[i+2] = src1[i+2] / src2[i+2];
1.525 + dest[i+3] = src1[i+3] / src2[i+3];
1.526 + }
1.527 +}
1.528 +OIL_DEFINE_IMPL (divide_f64_unroll4a, divide_f64);
1.529 +
1.530 +static void
1.531 +divide_f64_unroll4b (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.532 +{
1.533 + int i;
1.534 +
1.535 + for(i=0;i<(n&(~0x3));i+=4){
1.536 + dest[i+0] = src1[i+0] / src2[i+0];
1.537 + dest[i+1] = src1[i+1] / src2[i+1];
1.538 + dest[i+2] = src1[i+2] / src2[i+2];
1.539 + dest[i+3] = src1[i+3] / src2[i+3];
1.540 + }
1.541 + for(;i<n;i++){
1.542 + dest[i] = src1[i] / src2[i];
1.543 + }
1.544 +}
1.545 +OIL_DEFINE_IMPL (divide_f64_unroll4b, divide_f64);
1.546 +
1.547 +static void
1.548 +divide_f64_unroll4c (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.549 +{
1.550 + int i;
1.551 +
1.552 + for(i=0;i<(n&(~0x3));i+=4){
1.553 + *dest++ = *src1++ / *src2++;
1.554 + *dest++ = *src1++ / *src2++;
1.555 + *dest++ = *src1++ / *src2++;
1.556 + *dest++ = *src1++ / *src2++;
1.557 + }
1.558 + for(;i<n;i++){
1.559 + *dest++ = *src1++ / *src2++;
1.560 + }
1.561 +}
1.562 +OIL_DEFINE_IMPL (divide_f64_unroll4c, divide_f64);
1.563 +
1.564 +static void
1.565 +multiply_f32_pointer (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.566 +{
1.567 + while (n) {
1.568 + *dest = *src1 * *src2;
1.569 + dest++;
1.570 + src1++;
1.571 + src2++;
1.572 + n--;
1.573 + }
1.574 +}
1.575 +OIL_DEFINE_IMPL (multiply_f32_pointer, multiply_f32);
1.576 +
1.577 +static void
1.578 +multiply_f32_unroll2 (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.579 +{
1.580 + int i;
1.581 +
1.582 + if (n & 1) {
1.583 + dest[0] = src1[0] * src2[0];
1.584 + dest++;
1.585 + src1++;
1.586 + src2++;
1.587 + n--;
1.588 + }
1.589 + for(i=0;i<n;i+=2){
1.590 + dest[i] = src1[i] * src2[i];
1.591 + dest[i+1] = src1[i+1] * src2[i+1];
1.592 + }
1.593 +}
1.594 +OIL_DEFINE_IMPL (multiply_f32_unroll2, multiply_f32);
1.595 +
1.596 +static void
1.597 +multiply_f32_unroll4a (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.598 +{
1.599 + int i;
1.600 +
1.601 + while (n & 3) {
1.602 + dest[0] = src1[0] * src2[0];
1.603 + dest++;
1.604 + src1++;
1.605 + src2++;
1.606 + n--;
1.607 + }
1.608 + for(i=0;i<n;i+=4){
1.609 + dest[i] = src1[i] * src2[i];
1.610 + dest[i+1] = src1[i+1] * src2[i+1];
1.611 + dest[i+2] = src1[i+2] * src2[i+2];
1.612 + dest[i+3] = src1[i+3] * src2[i+3];
1.613 + }
1.614 +}
1.615 +OIL_DEFINE_IMPL (multiply_f32_unroll4a, multiply_f32);
1.616 +
1.617 +static void
1.618 +multiply_f32_unroll4b (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.619 +{
1.620 + int i;
1.621 +
1.622 + for(i=0;i<(n&(~0x3));i+=4){
1.623 + dest[i+0] = src1[i+0] * src2[i+0];
1.624 + dest[i+1] = src1[i+1] * src2[i+1];
1.625 + dest[i+2] = src1[i+2] * src2[i+2];
1.626 + dest[i+3] = src1[i+3] * src2[i+3];
1.627 + }
1.628 + for(;i<n;i++){
1.629 + dest[i] = src1[i] * src2[i];
1.630 + }
1.631 +}
1.632 +OIL_DEFINE_IMPL (multiply_f32_unroll4b, multiply_f32);
1.633 +
1.634 +static void
1.635 +multiply_f32_unroll4c (oil_type_f32 *dest, oil_type_f32 *src1, oil_type_f32 *src2, int n)
1.636 +{
1.637 + int i;
1.638 +
1.639 + for(i=0;i<(n&(~0x3));i+=4){
1.640 + *dest++ = *src1++ * *src2++;
1.641 + *dest++ = *src1++ * *src2++;
1.642 + *dest++ = *src1++ * *src2++;
1.643 + *dest++ = *src1++ * *src2++;
1.644 + }
1.645 + for(;i<n;i++){
1.646 + *dest++ = *src1++ * *src2++;
1.647 + }
1.648 +}
1.649 +OIL_DEFINE_IMPL (multiply_f32_unroll4c, multiply_f32);
1.650 +
1.651 +static void
1.652 +multiply_f64_pointer (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.653 +{
1.654 + while (n) {
1.655 + *dest = *src1 * *src2;
1.656 + dest++;
1.657 + src1++;
1.658 + src2++;
1.659 + n--;
1.660 + }
1.661 +}
1.662 +OIL_DEFINE_IMPL (multiply_f64_pointer, multiply_f64);
1.663 +
1.664 +static void
1.665 +multiply_f64_unroll2 (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.666 +{
1.667 + int i;
1.668 +
1.669 + if (n & 1) {
1.670 + dest[0] = src1[0] * src2[0];
1.671 + dest++;
1.672 + src1++;
1.673 + src2++;
1.674 + n--;
1.675 + }
1.676 + for(i=0;i<n;i+=2){
1.677 + dest[i] = src1[i] * src2[i];
1.678 + dest[i+1] = src1[i+1] * src2[i+1];
1.679 + }
1.680 +}
1.681 +OIL_DEFINE_IMPL (multiply_f64_unroll2, multiply_f64);
1.682 +
1.683 +static void
1.684 +multiply_f64_unroll4a (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.685 +{
1.686 + int i;
1.687 +
1.688 + while (n & 3) {
1.689 + dest[0] = src1[0] * src2[0];
1.690 + dest++;
1.691 + src1++;
1.692 + src2++;
1.693 + n--;
1.694 + }
1.695 + for(i=0;i<n;i+=4){
1.696 + dest[i] = src1[i] * src2[i];
1.697 + dest[i+1] = src1[i+1] * src2[i+1];
1.698 + dest[i+2] = src1[i+2] * src2[i+2];
1.699 + dest[i+3] = src1[i+3] * src2[i+3];
1.700 + }
1.701 +}
1.702 +OIL_DEFINE_IMPL (multiply_f64_unroll4a, multiply_f64);
1.703 +
1.704 +static void
1.705 +multiply_f64_unroll4b (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.706 +{
1.707 + int i;
1.708 +
1.709 + for(i=0;i<(n&(~0x3));i+=4){
1.710 + dest[i+0] = src1[i+0] * src2[i+0];
1.711 + dest[i+1] = src1[i+1] * src2[i+1];
1.712 + dest[i+2] = src1[i+2] * src2[i+2];
1.713 + dest[i+3] = src1[i+3] * src2[i+3];
1.714 + }
1.715 + for(;i<n;i++){
1.716 + dest[i] = src1[i] * src2[i];
1.717 + }
1.718 +}
1.719 +OIL_DEFINE_IMPL (multiply_f64_unroll4b, multiply_f64);
1.720 +
1.721 +static void
1.722 +multiply_f64_unroll4c (oil_type_f64 *dest, oil_type_f64 *src1, oil_type_f64 *src2, int n)
1.723 +{
1.724 + int i;
1.725 +
1.726 + for(i=0;i<(n&(~0x3));i+=4){
1.727 + *dest++ = *src1++ * *src2++;
1.728 + *dest++ = *src1++ * *src2++;
1.729 + *dest++ = *src1++ * *src2++;
1.730 + *dest++ = *src1++ * *src2++;
1.731 + }
1.732 + for(;i<n;i++){
1.733 + *dest++ = *src1++ * *src2++;
1.734 + }
1.735 +}
1.736 +OIL_DEFINE_IMPL (multiply_f64_unroll4c, multiply_f64);
1.737 +
1.738 +
1.739 +
1.740 +#ifdef __SYMBIAN32__
1.741 +
1.742 +OilFunctionImpl* __oil_function_impl_add_f32_pointer() {
1.743 + return &_oil_function_impl_add_f32_pointer;
1.744 +}
1.745 +#endif
1.746 +
1.747 +#ifdef __SYMBIAN32__
1.748 +
1.749 +OilFunctionImpl* __oil_function_impl_add_f32_unroll2() {
1.750 + return &_oil_function_impl_add_f32_unroll2;
1.751 +}
1.752 +#endif
1.753 +
1.754 +#ifdef __SYMBIAN32__
1.755 +
1.756 +OilFunctionImpl* __oil_function_impl_add_f32_unroll4a() {
1.757 + return &_oil_function_impl_add_f32_unroll4a;
1.758 +}
1.759 +#endif
1.760 +
1.761 +#ifdef __SYMBIAN32__
1.762 +
1.763 +OilFunctionImpl* __oil_function_impl_add_f32_unroll4b() {
1.764 + return &_oil_function_impl_add_f32_unroll4b;
1.765 +}
1.766 +#endif
1.767 +
1.768 +#ifdef __SYMBIAN32__
1.769 +
1.770 +OilFunctionImpl* __oil_function_impl_add_f32_unroll4c() {
1.771 + return &_oil_function_impl_add_f32_unroll4c;
1.772 +}
1.773 +#endif
1.774 +
1.775 +#ifdef __SYMBIAN32__
1.776 +
1.777 +OilFunctionImpl* __oil_function_impl_add_f64_pointer() {
1.778 + return &_oil_function_impl_add_f64_pointer;
1.779 +}
1.780 +#endif
1.781 +
1.782 +#ifdef __SYMBIAN32__
1.783 +
1.784 +OilFunctionImpl* __oil_function_impl_add_f64_unroll2() {
1.785 + return &_oil_function_impl_add_f64_unroll2;
1.786 +}
1.787 +#endif
1.788 +
1.789 +#ifdef __SYMBIAN32__
1.790 +
1.791 +OilFunctionImpl* __oil_function_impl_add_f64_unroll4a() {
1.792 + return &_oil_function_impl_add_f64_unroll4a;
1.793 +}
1.794 +#endif
1.795 +
1.796 +#ifdef __SYMBIAN32__
1.797 +
1.798 +OilFunctionImpl* __oil_function_impl_add_f64_unroll4b() {
1.799 + return &_oil_function_impl_add_f64_unroll4b;
1.800 +}
1.801 +#endif
1.802 +
1.803 +#ifdef __SYMBIAN32__
1.804 +
1.805 +OilFunctionImpl* __oil_function_impl_add_f64_unroll4c() {
1.806 + return &_oil_function_impl_add_f64_unroll4c;
1.807 +}
1.808 +#endif
1.809 +
1.810 +#ifdef __SYMBIAN32__
1.811 +
1.812 +OilFunctionImpl* __oil_function_impl_subtract_f32_pointer() {
1.813 + return &_oil_function_impl_subtract_f32_pointer;
1.814 +}
1.815 +#endif
1.816 +
1.817 +#ifdef __SYMBIAN32__
1.818 +
1.819 +OilFunctionImpl* __oil_function_impl_subtract_f32_unroll2() {
1.820 + return &_oil_function_impl_subtract_f32_unroll2;
1.821 +}
1.822 +#endif
1.823 +
1.824 +#ifdef __SYMBIAN32__
1.825 +
1.826 +OilFunctionImpl* __oil_function_impl_subtract_f32_unroll4a() {
1.827 + return &_oil_function_impl_subtract_f32_unroll4a;
1.828 +}
1.829 +#endif
1.830 +
1.831 +#ifdef __SYMBIAN32__
1.832 +
1.833 +OilFunctionImpl* __oil_function_impl_subtract_f32_unroll4b() {
1.834 + return &_oil_function_impl_subtract_f32_unroll4b;
1.835 +}
1.836 +#endif
1.837 +
1.838 +#ifdef __SYMBIAN32__
1.839 +
1.840 +OilFunctionImpl* __oil_function_impl_subtract_f32_unroll4c() {
1.841 + return &_oil_function_impl_subtract_f32_unroll4c;
1.842 +}
1.843 +#endif
1.844 +
1.845 +#ifdef __SYMBIAN32__
1.846 +
1.847 +OilFunctionImpl* __oil_function_impl_subtract_f64_pointer() {
1.848 + return &_oil_function_impl_subtract_f64_pointer;
1.849 +}
1.850 +#endif
1.851 +
1.852 +#ifdef __SYMBIAN32__
1.853 +
1.854 +OilFunctionImpl* __oil_function_impl_subtract_f64_unroll2() {
1.855 + return &_oil_function_impl_subtract_f64_unroll2;
1.856 +}
1.857 +#endif
1.858 +
1.859 +#ifdef __SYMBIAN32__
1.860 +
1.861 +OilFunctionImpl* __oil_function_impl_subtract_f64_unroll4a() {
1.862 + return &_oil_function_impl_subtract_f64_unroll4a;
1.863 +}
1.864 +#endif
1.865 +
1.866 +#ifdef __SYMBIAN32__
1.867 +
1.868 +OilFunctionImpl* __oil_function_impl_subtract_f64_unroll4b() {
1.869 + return &_oil_function_impl_subtract_f64_unroll4b;
1.870 +}
1.871 +#endif
1.872 +
1.873 +#ifdef __SYMBIAN32__
1.874 +
1.875 +OilFunctionImpl* __oil_function_impl_subtract_f64_unroll4c() {
1.876 + return &_oil_function_impl_subtract_f64_unroll4c;
1.877 +}
1.878 +#endif
1.879 +
1.880 +#ifdef __SYMBIAN32__
1.881 +
1.882 +OilFunctionImpl* __oil_function_impl_divide_f32_pointer() {
1.883 + return &_oil_function_impl_divide_f32_pointer;
1.884 +}
1.885 +#endif
1.886 +
1.887 +#ifdef __SYMBIAN32__
1.888 +
1.889 +OilFunctionImpl* __oil_function_impl_divide_f32_unroll2() {
1.890 + return &_oil_function_impl_divide_f32_unroll2;
1.891 +}
1.892 +#endif
1.893 +
1.894 +#ifdef __SYMBIAN32__
1.895 +
1.896 +OilFunctionImpl* __oil_function_impl_divide_f32_unroll4a() {
1.897 + return &_oil_function_impl_divide_f32_unroll4a;
1.898 +}
1.899 +#endif
1.900 +
1.901 +#ifdef __SYMBIAN32__
1.902 +
1.903 +OilFunctionImpl* __oil_function_impl_divide_f32_unroll4b() {
1.904 + return &_oil_function_impl_divide_f32_unroll4b;
1.905 +}
1.906 +#endif
1.907 +
1.908 +#ifdef __SYMBIAN32__
1.909 +
1.910 +OilFunctionImpl* __oil_function_impl_divide_f32_unroll4c() {
1.911 + return &_oil_function_impl_divide_f32_unroll4c;
1.912 +}
1.913 +#endif
1.914 +
1.915 +#ifdef __SYMBIAN32__
1.916 +
1.917 +OilFunctionImpl* __oil_function_impl_divide_f64_pointer() {
1.918 + return &_oil_function_impl_divide_f64_pointer;
1.919 +}
1.920 +#endif
1.921 +
1.922 +#ifdef __SYMBIAN32__
1.923 +
1.924 +OilFunctionImpl* __oil_function_impl_divide_f64_unroll2() {
1.925 + return &_oil_function_impl_divide_f64_unroll2;
1.926 +}
1.927 +#endif
1.928 +
1.929 +#ifdef __SYMBIAN32__
1.930 +
1.931 +OilFunctionImpl* __oil_function_impl_divide_f64_unroll4a() {
1.932 + return &_oil_function_impl_divide_f64_unroll4a;
1.933 +}
1.934 +#endif
1.935 +
1.936 +#ifdef __SYMBIAN32__
1.937 +
1.938 +OilFunctionImpl* __oil_function_impl_divide_f64_unroll4b() {
1.939 + return &_oil_function_impl_divide_f64_unroll4b;
1.940 +}
1.941 +#endif
1.942 +
1.943 +#ifdef __SYMBIAN32__
1.944 +
1.945 +OilFunctionImpl* __oil_function_impl_divide_f64_unroll4c() {
1.946 + return &_oil_function_impl_divide_f64_unroll4c;
1.947 +}
1.948 +#endif
1.949 +
1.950 +#ifdef __SYMBIAN32__
1.951 +
1.952 +OilFunctionImpl* __oil_function_impl_multiply_f32_pointer() {
1.953 + return &_oil_function_impl_multiply_f32_pointer;
1.954 +}
1.955 +#endif
1.956 +
1.957 +#ifdef __SYMBIAN32__
1.958 +
1.959 +OilFunctionImpl* __oil_function_impl_multiply_f32_unroll2() {
1.960 + return &_oil_function_impl_multiply_f32_unroll2;
1.961 +}
1.962 +#endif
1.963 +
1.964 +#ifdef __SYMBIAN32__
1.965 +
1.966 +OilFunctionImpl* __oil_function_impl_multiply_f32_unroll4a() {
1.967 + return &_oil_function_impl_multiply_f32_unroll4a;
1.968 +}
1.969 +#endif
1.970 +
1.971 +#ifdef __SYMBIAN32__
1.972 +
1.973 +OilFunctionImpl* __oil_function_impl_multiply_f32_unroll4b() {
1.974 + return &_oil_function_impl_multiply_f32_unroll4b;
1.975 +}
1.976 +#endif
1.977 +
1.978 +#ifdef __SYMBIAN32__
1.979 +
1.980 +OilFunctionImpl* __oil_function_impl_multiply_f32_unroll4c() {
1.981 + return &_oil_function_impl_multiply_f32_unroll4c;
1.982 +}
1.983 +#endif
1.984 +
1.985 +#ifdef __SYMBIAN32__
1.986 +
1.987 +OilFunctionImpl* __oil_function_impl_multiply_f64_pointer() {
1.988 + return &_oil_function_impl_multiply_f64_pointer;
1.989 +}
1.990 +#endif
1.991 +
1.992 +#ifdef __SYMBIAN32__
1.993 +
1.994 +OilFunctionImpl* __oil_function_impl_multiply_f64_unroll2() {
1.995 + return &_oil_function_impl_multiply_f64_unroll2;
1.996 +}
1.997 +#endif
1.998 +
1.999 +#ifdef __SYMBIAN32__
1.1000 +
1.1001 +OilFunctionImpl* __oil_function_impl_multiply_f64_unroll4a() {
1.1002 + return &_oil_function_impl_multiply_f64_unroll4a;
1.1003 +}
1.1004 +#endif
1.1005 +
1.1006 +#ifdef __SYMBIAN32__
1.1007 +
1.1008 +OilFunctionImpl* __oil_function_impl_multiply_f64_unroll4b() {
1.1009 + return &_oil_function_impl_multiply_f64_unroll4b;
1.1010 +}
1.1011 +#endif
1.1012 +
1.1013 +#ifdef __SYMBIAN32__
1.1014 +
1.1015 +OilFunctionImpl* __oil_function_impl_multiply_f64_unroll4c() {
1.1016 + return &_oil_function_impl_multiply_f64_unroll4c;
1.1017 +}
1.1018 +#endif
1.1019 +