os/ossrv/genericopenlibs/liboil/src/clamp_sse.c
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
/*
sl@0
     2
 * Copyright (c) 2005
sl@0
     3
 *	Eric Anholt.  All rights reserved.
sl@0
     4
 *
sl@0
     5
 * Redistribution and use in source and binary forms, with or without
sl@0
     6
 * modification, are permitted provided that the following conditions
sl@0
     7
 * are met:
sl@0
     8
 * 1. Redistributions of source code must retain the above copyright
sl@0
     9
 *    notice, this list of conditions and the following disclaimer.
sl@0
    10
 * 2. Redistributions in binary form must reproduce the above copyright
sl@0
    11
 *    notice, this list of conditions and the following disclaimer in the
sl@0
    12
 *    documentation and/or other materials provided with the distribution.
sl@0
    13
 *
sl@0
    14
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
sl@0
    15
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
sl@0
    16
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
sl@0
    17
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
sl@0
    18
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
sl@0
    19
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
sl@0
    20
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
sl@0
    21
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
sl@0
    22
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
sl@0
    23
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
sl@0
    24
 * SUCH DAMAGE.
sl@0
    25
 */
sl@0
    26
//Portions Copyright (c)  2008-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. 
sl@0
    27
sl@0
    28
#ifdef HAVE_CONFIG_H
sl@0
    29
#include "config.h"
sl@0
    30
#endif
sl@0
    31
#include "liboil/liboilclasses.h"
sl@0
    32
#include "liboil/liboilfunction.h"
sl@0
    33
#include <emmintrin.h>
sl@0
    34
#include <xmmintrin.h>
sl@0
    35
sl@0
    36
/* TODO: If we have gcc 4.2 or above, do this. Otherwise, disable all SSE use */
sl@0
    37
#define SSE_FUNCTION __attribute__((force_align_arg_pointer))
sl@0
    38
sl@0
    39
SSE_FUNCTION static void
sl@0
    40
clamp_u8_sse (uint8_t *dest, uint8_t *src1, int n, uint8_t *src2_1,
sl@0
    41
    uint8_t *src3_1)
sl@0
    42
{
sl@0
    43
  __m128i xmm1, xmm2;
sl@0
    44
  uint8_t min = *src2_1;
sl@0
    45
  uint8_t max = *src3_1;
sl@0
    46
sl@0
    47
  /* Initial operations to align the destination pointer */
sl@0
    48
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
    49
    uint8_t x = *src1++;
sl@0
    50
    if (x < min)
sl@0
    51
      x = min;
sl@0
    52
    if (x > max)
sl@0
    53
      x = max;
sl@0
    54
    *dest++ = x;
sl@0
    55
  }
sl@0
    56
  xmm1 = _mm_set1_epi8(min);
sl@0
    57
  xmm2 = _mm_set1_epi8(max);
sl@0
    58
  for (; n >= 16; n -= 16) {
sl@0
    59
    __m128i xmm0;
sl@0
    60
    xmm0 = _mm_loadu_si128((__m128i *)src1);
sl@0
    61
    xmm0 = _mm_max_epu8(xmm0, xmm1);
sl@0
    62
    xmm0 = _mm_min_epu8(xmm0, xmm2);
sl@0
    63
    _mm_store_si128((__m128i *)dest, xmm0);
sl@0
    64
    dest += 16;
sl@0
    65
    src1 += 16;
sl@0
    66
  }
sl@0
    67
  for (; n > 0; n--) {
sl@0
    68
    uint8_t x = *src1++;
sl@0
    69
    if (x < min)
sl@0
    70
      x = min;
sl@0
    71
    if (x > max)
sl@0
    72
      x = max;
sl@0
    73
    *dest++ = x;
sl@0
    74
  }
sl@0
    75
}
sl@0
    76
OIL_DEFINE_IMPL_FULL (clamp_u8_sse, clamp_u8, OIL_IMPL_FLAG_SSE2);
sl@0
    77
sl@0
    78
SSE_FUNCTION static void
sl@0
    79
clamp_s16_sse (int16_t *dest, int16_t *src1, int n, int16_t *src2_1,
sl@0
    80
    int16_t *src3_1)
sl@0
    81
{
sl@0
    82
  __m128i xmm1, xmm2;
sl@0
    83
  int16_t min = *src2_1;
sl@0
    84
  int16_t max = *src3_1;
sl@0
    85
sl@0
    86
  /* Initial operations to align the destination pointer */
sl@0
    87
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
    88
    int16_t x = *src1++;
sl@0
    89
    if (x < min)
sl@0
    90
      x = min;
sl@0
    91
    if (x > max)
sl@0
    92
      x = max;
sl@0
    93
    *dest++ = x;
sl@0
    94
  }
sl@0
    95
  xmm1 = _mm_set1_epi16(min);
sl@0
    96
  xmm2 = _mm_set1_epi16(max);
sl@0
    97
  for (; n >= 8; n -= 8) {
sl@0
    98
    __m128i xmm0;
sl@0
    99
    xmm0 = _mm_loadu_si128((__m128i *)src1);
sl@0
   100
    xmm0 = _mm_max_epi16(xmm0, xmm1);
sl@0
   101
    xmm0 = _mm_min_epi16(xmm0, xmm2);
sl@0
   102
    _mm_store_si128((__m128i *)dest, xmm0);
sl@0
   103
    dest += 8;
sl@0
   104
    src1 += 8;
sl@0
   105
  }
sl@0
   106
  for (; n > 0; n--) {
sl@0
   107
    int16_t x = *src1++;
sl@0
   108
    if (x < min)
sl@0
   109
      x = min;
sl@0
   110
    if (x > max)
sl@0
   111
      x = max;
sl@0
   112
    *dest++ = x;
sl@0
   113
  }
sl@0
   114
}
sl@0
   115
OIL_DEFINE_IMPL_FULL (clamp_s16_sse, clamp_s16, OIL_IMPL_FLAG_SSE2);
sl@0
   116
sl@0
   117
SSE_FUNCTION static void
sl@0
   118
clamp_f32_sse (float *dest, const float *src1, int n, const float *src2_1,
sl@0
   119
    const float *src3_1)
sl@0
   120
{
sl@0
   121
  __m128 xmm1, xmm2;
sl@0
   122
  float min = *src2_1;
sl@0
   123
  float max = *src3_1;
sl@0
   124
sl@0
   125
  /* Initial operations to align the destination pointer */
sl@0
   126
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
   127
    float x = *src1++;
sl@0
   128
    if (x < min)
sl@0
   129
      x = min;
sl@0
   130
    if (x > max)
sl@0
   131
      x = max;
sl@0
   132
    *dest++ = x;
sl@0
   133
  }
sl@0
   134
  xmm1 = _mm_set_ps1(min);
sl@0
   135
  xmm2 = _mm_set_ps1(max);
sl@0
   136
  for (; n >= 4; n -= 4) {
sl@0
   137
    __m128 xmm0;
sl@0
   138
    xmm0 = _mm_loadu_ps(src1);
sl@0
   139
    xmm0 = _mm_max_ps(xmm0, xmm1);
sl@0
   140
    xmm0 = _mm_min_ps(xmm0, xmm2);
sl@0
   141
    _mm_store_ps(dest, xmm0);
sl@0
   142
    dest += 4;
sl@0
   143
    src1 += 4;
sl@0
   144
  }
sl@0
   145
  for (; n > 0; n--) {
sl@0
   146
    float x = *src1++;
sl@0
   147
    if (x < min)
sl@0
   148
      x = min;
sl@0
   149
    if (x > max)
sl@0
   150
      x = max;
sl@0
   151
    *dest++ = x;
sl@0
   152
  }
sl@0
   153
}
sl@0
   154
OIL_DEFINE_IMPL_FULL (clamp_f32_sse, clamp_f32, OIL_IMPL_FLAG_SSE);
sl@0
   155
sl@0
   156
SSE_FUNCTION static void
sl@0
   157
clamp_f64_sse (double *dest, const double *src1, int n, const double *src2_1,
sl@0
   158
    const double *src3_1)
sl@0
   159
{
sl@0
   160
  __m128d xmm1, xmm2;
sl@0
   161
  double min = *src2_1;
sl@0
   162
  double max = *src3_1;
sl@0
   163
sl@0
   164
  /* Initial operations to align the destination pointer */
sl@0
   165
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
   166
    double x = *src1++;
sl@0
   167
    if (x < min)
sl@0
   168
      x = min;
sl@0
   169
    if (x > max)
sl@0
   170
      x = max;
sl@0
   171
    *dest++ = x;
sl@0
   172
  }
sl@0
   173
  xmm1 = _mm_set1_pd(min);
sl@0
   174
  xmm2 = _mm_set1_pd(max);
sl@0
   175
  for (; n >= 2; n -= 2) {
sl@0
   176
    __m128d xmm0;
sl@0
   177
    xmm0 = _mm_loadu_pd(src1);
sl@0
   178
    xmm0 = _mm_max_pd(xmm0, xmm1);
sl@0
   179
    xmm0 = _mm_min_pd(xmm0, xmm2);
sl@0
   180
    _mm_store_pd(dest, xmm0);
sl@0
   181
    dest += 2;
sl@0
   182
    src1 += 2;
sl@0
   183
  }
sl@0
   184
  for (; n > 0; n--) {
sl@0
   185
    double x = *src1++;
sl@0
   186
    if (x < min)
sl@0
   187
      x = min;
sl@0
   188
    if (x > max)
sl@0
   189
      x = max;
sl@0
   190
    *dest++ = x;
sl@0
   191
  }
sl@0
   192
}
sl@0
   193
OIL_DEFINE_IMPL_FULL (clamp_f64_sse, clamp_f64,
sl@0
   194
    OIL_IMPL_FLAG_SSE | OIL_IMPL_FLAG_SSE2);
sl@0
   195
sl@0
   196
SSE_FUNCTION static void
sl@0
   197
clamplow_u8_sse (uint8_t *dest, const uint8_t *src1, int n,
sl@0
   198
    const uint8_t *src2_1)
sl@0
   199
{
sl@0
   200
  __m128i xmm1;
sl@0
   201
  uint8_t min = *src2_1;
sl@0
   202
sl@0
   203
  /* Initial operations to align the destination pointer */
sl@0
   204
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
   205
    uint8_t x = *src1++;
sl@0
   206
    if (x < min)
sl@0
   207
      x = min;
sl@0
   208
    *dest++ = x;
sl@0
   209
  }
sl@0
   210
  xmm1 = _mm_set1_epi8(min);
sl@0
   211
  for (; n >= 16; n -= 16) {
sl@0
   212
    __m128i xmm0;
sl@0
   213
    xmm0 = _mm_loadu_si128((__m128i *)src1);
sl@0
   214
    xmm0 = _mm_max_epu8(xmm0, xmm1);
sl@0
   215
    _mm_store_si128((__m128i *)dest, xmm0);
sl@0
   216
    dest += 16;
sl@0
   217
    src1 += 16;
sl@0
   218
  }
sl@0
   219
  for (; n > 0; n--) {
sl@0
   220
    uint8_t x = *src1++;
sl@0
   221
    if (x < min)
sl@0
   222
      x = min;
sl@0
   223
    *dest++ = x;
sl@0
   224
  }
sl@0
   225
}
sl@0
   226
OIL_DEFINE_IMPL_FULL (clamplow_u8_sse, clamplow_u8, OIL_IMPL_FLAG_SSE2);
sl@0
   227
sl@0
   228
SSE_FUNCTION static void
sl@0
   229
clamplow_s16_sse (int16_t *dest, const int16_t *src1, int n,
sl@0
   230
    const int16_t *src2_1)
sl@0
   231
{
sl@0
   232
  __m128i xmm1;
sl@0
   233
  int16_t min = *src2_1;
sl@0
   234
sl@0
   235
  /* Initial operations to align the destination pointer */
sl@0
   236
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
   237
    int16_t x = *src1++;
sl@0
   238
    if (x < min)
sl@0
   239
      x = min;
sl@0
   240
    *dest++ = x;
sl@0
   241
  }
sl@0
   242
  xmm1 = _mm_set1_epi16(min);
sl@0
   243
  for (; n >= 8; n -= 8) {
sl@0
   244
    __m128i xmm0;
sl@0
   245
    xmm0 = _mm_loadu_si128((__m128i *)src1);
sl@0
   246
    xmm0 = _mm_max_epi16(xmm0, xmm1);
sl@0
   247
    _mm_store_si128((__m128i *)dest, xmm0);
sl@0
   248
    dest += 8;
sl@0
   249
    src1 += 8;
sl@0
   250
  }
sl@0
   251
  for (; n > 0; n--) {
sl@0
   252
    int16_t x = *src1++;
sl@0
   253
    if (x < min)
sl@0
   254
      x = min;
sl@0
   255
    *dest++ = x;
sl@0
   256
  }
sl@0
   257
}
sl@0
   258
OIL_DEFINE_IMPL_FULL (clamplow_s16_sse, clamplow_s16, OIL_IMPL_FLAG_SSE2);
sl@0
   259
sl@0
   260
SSE_FUNCTION static void
sl@0
   261
clamplow_f32_sse (float *dest, const float *src1, int n, const float *src2_1)
sl@0
   262
{
sl@0
   263
  __m128 xmm1;
sl@0
   264
  float min = *src2_1;
sl@0
   265
sl@0
   266
  /* Initial operations to align the destination pointer */
sl@0
   267
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
   268
    float x = *src1++;
sl@0
   269
    if (x < min)
sl@0
   270
      x = min;
sl@0
   271
    *dest++ = x;
sl@0
   272
  }
sl@0
   273
  xmm1 = _mm_set_ps1(min);
sl@0
   274
  for (; n >= 4; n -= 4) {
sl@0
   275
    __m128 xmm0;
sl@0
   276
    xmm0 = _mm_loadu_ps(src1);
sl@0
   277
    xmm0 = _mm_max_ps(xmm0, xmm1);
sl@0
   278
    _mm_store_ps(dest, xmm0);
sl@0
   279
    dest += 4;
sl@0
   280
    src1 += 4;
sl@0
   281
  }
sl@0
   282
  for (; n > 0; n--) {
sl@0
   283
    float x = *src1++;
sl@0
   284
    if (x < min)
sl@0
   285
      x = min;
sl@0
   286
    *dest++ = x;
sl@0
   287
  }
sl@0
   288
}
sl@0
   289
OIL_DEFINE_IMPL_FULL (clamplow_f32_sse, clamplow_f32, OIL_IMPL_FLAG_SSE);
sl@0
   290
sl@0
   291
SSE_FUNCTION static void
sl@0
   292
clamplow_f64_sse (double *dest, const double *src1, int n, const double *src2_1)
sl@0
   293
{
sl@0
   294
  __m128d xmm1;
sl@0
   295
  double min = *src2_1;
sl@0
   296
sl@0
   297
  /* Initial operations to align the destination pointer */
sl@0
   298
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
   299
    double x = *src1++;
sl@0
   300
    if (x < min)
sl@0
   301
      x = min;
sl@0
   302
    *dest++ = x;
sl@0
   303
  }
sl@0
   304
  xmm1 = _mm_set1_pd(min);
sl@0
   305
  for (; n >= 2; n -= 2) {
sl@0
   306
    __m128d xmm0;
sl@0
   307
    xmm0 = _mm_loadu_pd(src1);
sl@0
   308
    xmm0 = _mm_max_pd(xmm0, xmm1);
sl@0
   309
    _mm_store_pd(dest, xmm0);
sl@0
   310
    dest += 2;
sl@0
   311
    src1 += 2;
sl@0
   312
  }
sl@0
   313
  for (; n > 0; n--) {
sl@0
   314
    double x = *src1++;
sl@0
   315
    if (x < min)
sl@0
   316
      x = min;
sl@0
   317
    *dest++ = x;
sl@0
   318
  }
sl@0
   319
}
sl@0
   320
OIL_DEFINE_IMPL_FULL (clamplow_f64_sse, clamplow_f64,
sl@0
   321
    OIL_IMPL_FLAG_SSE | OIL_IMPL_FLAG_SSE2);
sl@0
   322
sl@0
   323
SSE_FUNCTION static void
sl@0
   324
clamphigh_u8_sse (uint8_t *dest, const uint8_t *src1, int n,
sl@0
   325
    const uint8_t *src2_1)
sl@0
   326
{
sl@0
   327
  __m128i xmm1;
sl@0
   328
  uint8_t max = *src2_1;
sl@0
   329
sl@0
   330
  /* Initial operations to align the destination pointer */
sl@0
   331
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
   332
    uint8_t x = *src1++;
sl@0
   333
    if (x > max)
sl@0
   334
      x = max;
sl@0
   335
    *dest++ = x;
sl@0
   336
  }
sl@0
   337
  xmm1 = _mm_set1_epi8(max);
sl@0
   338
  for (; n >= 16; n -= 16) {
sl@0
   339
    __m128i xmm0;
sl@0
   340
    xmm0 = _mm_loadu_si128((__m128i *)src1);
sl@0
   341
    xmm0 = _mm_min_epu8(xmm0, xmm1);
sl@0
   342
    _mm_store_si128((__m128i *)dest, xmm0);
sl@0
   343
    dest += 16;
sl@0
   344
    src1 += 16;
sl@0
   345
  }
sl@0
   346
  for (; n > 0; n--) {
sl@0
   347
    uint8_t x = *src1++;
sl@0
   348
    if (x > max)
sl@0
   349
      x = max;
sl@0
   350
    *dest++ = x;
sl@0
   351
  }
sl@0
   352
}
sl@0
   353
OIL_DEFINE_IMPL_FULL (clamphigh_u8_sse, clamphigh_u8, OIL_IMPL_FLAG_SSE2);
sl@0
   354
sl@0
   355
SSE_FUNCTION static void
sl@0
   356
clamphigh_s16_sse (int16_t *dest, const int16_t *src1, int n,
sl@0
   357
    const int16_t *src2_1)
sl@0
   358
{
sl@0
   359
  __m128i xmm1;
sl@0
   360
  int16_t max = *src2_1;
sl@0
   361
sl@0
   362
  /* Initial operations to align the destination pointer */
sl@0
   363
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
   364
    int16_t x = *src1++;
sl@0
   365
    if (x > max)
sl@0
   366
      x = max;
sl@0
   367
    *dest++ = x;
sl@0
   368
  }
sl@0
   369
  xmm1 = _mm_set1_epi16(max);
sl@0
   370
  for (; n >= 8; n -= 8) {
sl@0
   371
    __m128i xmm0;
sl@0
   372
    xmm0 = _mm_loadu_si128((__m128i *)src1);
sl@0
   373
    xmm0 = _mm_min_epi16(xmm0, xmm1);
sl@0
   374
    _mm_store_si128((__m128i *)dest, xmm0);
sl@0
   375
    dest += 8;
sl@0
   376
    src1 += 8;
sl@0
   377
  }
sl@0
   378
  for (; n > 0; n--) {
sl@0
   379
    int16_t x = *src1++;
sl@0
   380
    if (x > max)
sl@0
   381
      x = max;
sl@0
   382
    *dest++ = x;
sl@0
   383
  }
sl@0
   384
}
sl@0
   385
OIL_DEFINE_IMPL_FULL (clamphigh_s16_sse, clamphigh_s16, OIL_IMPL_FLAG_SSE2);
sl@0
   386
sl@0
   387
SSE_FUNCTION static void
sl@0
   388
clamphigh_f32_sse (float *dest, const float *src1, int n, const float *src2_1)
sl@0
   389
{
sl@0
   390
  __m128 xmm1;
sl@0
   391
  float max = *src2_1;
sl@0
   392
sl@0
   393
  /* Initial operations to align the destination pointer */
sl@0
   394
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
   395
    float x = *src1++;
sl@0
   396
    if (x > max)
sl@0
   397
      x = max;
sl@0
   398
    *dest++ = x;
sl@0
   399
  }
sl@0
   400
  xmm1 = _mm_set_ps1(max);
sl@0
   401
  for (; n >= 4; n -= 4) {
sl@0
   402
    __m128 xmm0;
sl@0
   403
    xmm0 = _mm_loadu_ps(src1);
sl@0
   404
    xmm0 = _mm_min_ps(xmm0, xmm1);
sl@0
   405
    _mm_store_ps(dest, xmm0);
sl@0
   406
    dest += 4;
sl@0
   407
    src1 += 4;
sl@0
   408
  }
sl@0
   409
  for (; n > 0; n--) {
sl@0
   410
    float x = *src1++;
sl@0
   411
    if (x > max)
sl@0
   412
      x = max;
sl@0
   413
    *dest++ = x;
sl@0
   414
  }
sl@0
   415
}
sl@0
   416
OIL_DEFINE_IMPL_FULL (clamphigh_f32_sse, clamphigh_f32, OIL_IMPL_FLAG_SSE);
sl@0
   417
sl@0
   418
SSE_FUNCTION static void
sl@0
   419
clamphigh_f64_sse (double *dest, const double *src1, int n, const double *src2_1)
sl@0
   420
{
sl@0
   421
  __m128d xmm1;
sl@0
   422
  double max = *src2_1;
sl@0
   423
sl@0
   424
  /* Initial operations to align the destination pointer */
sl@0
   425
  for (; ((long)dest & 15) && (n > 0); n--) {
sl@0
   426
    double x = *src1++;
sl@0
   427
    if (x > max)
sl@0
   428
      x = max;
sl@0
   429
    *dest++ = x;
sl@0
   430
  }
sl@0
   431
  xmm1 = _mm_set1_pd(max);
sl@0
   432
  for (; n >= 2; n -= 2) {
sl@0
   433
    __m128d xmm0;
sl@0
   434
    xmm0 = _mm_loadu_pd(src1);
sl@0
   435
    xmm0 = _mm_min_pd(xmm0, xmm1);
sl@0
   436
    _mm_store_pd(dest, xmm0);
sl@0
   437
    dest += 2;
sl@0
   438
    src1 += 2;
sl@0
   439
  }
sl@0
   440
  for (; n > 0; n--) {
sl@0
   441
    double x = *src1++;
sl@0
   442
    if (x > max)
sl@0
   443
      x = max;
sl@0
   444
    *dest++ = x;
sl@0
   445
  }
sl@0
   446
}
sl@0
   447
OIL_DEFINE_IMPL_FULL (clamphigh_f64_sse, clamphigh_f64,
sl@0
   448
    OIL_IMPL_FLAG_SSE | OIL_IMPL_FLAG_SSE2);
sl@0
   449
sl@0
   450
sl@0
   451
#ifdef	__SYMBIAN32__
sl@0
   452
 
sl@0
   453
OilFunctionImpl* __oil_function_impl_clamp_u8_sse, clamp_u8() {
sl@0
   454
		return &_oil_function_impl_clamp_u8_sse, clamp_u8;
sl@0
   455
}
sl@0
   456
#endif
sl@0
   457
sl@0
   458
#ifdef	__SYMBIAN32__
sl@0
   459
 
sl@0
   460
OilFunctionImpl* __oil_function_impl_clamp_s16_sse, clamp_s16() {
sl@0
   461
		return &_oil_function_impl_clamp_s16_sse, clamp_s16;
sl@0
   462
}
sl@0
   463
#endif
sl@0
   464
sl@0
   465
#ifdef	__SYMBIAN32__
sl@0
   466
 
sl@0
   467
OilFunctionImpl* __oil_function_impl_clamp_f32_sse, clamp_f32() {
sl@0
   468
		return &_oil_function_impl_clamp_f32_sse, clamp_f32;
sl@0
   469
}
sl@0
   470
#endif
sl@0
   471
sl@0
   472
#ifdef	__SYMBIAN32__
sl@0
   473
 
sl@0
   474
OilFunctionImpl* __oil_function_impl_clamp_f64_sse, clamp_f64() {
sl@0
   475
		return &_oil_function_impl_clamp_f64_sse, clamp_f64;
sl@0
   476
}
sl@0
   477
#endif
sl@0
   478
sl@0
   479
#ifdef	__SYMBIAN32__
sl@0
   480
 
sl@0
   481
OilFunctionImpl* __oil_function_impl_clamplow_u8_sse, clamplow_u8() {
sl@0
   482
		return &_oil_function_impl_clamplow_u8_sse, clamplow_u8;
sl@0
   483
}
sl@0
   484
#endif
sl@0
   485
sl@0
   486
#ifdef	__SYMBIAN32__
sl@0
   487
 
sl@0
   488
OilFunctionImpl* __oil_function_impl_clamplow_s16_sse, clamplow_s16() {
sl@0
   489
		return &_oil_function_impl_clamplow_s16_sse, clamplow_s16;
sl@0
   490
}
sl@0
   491
#endif
sl@0
   492
sl@0
   493
#ifdef	__SYMBIAN32__
sl@0
   494
 
sl@0
   495
OilFunctionImpl* __oil_function_impl_clamplow_f32_sse, clamplow_f32() {
sl@0
   496
		return &_oil_function_impl_clamplow_f32_sse, clamplow_f32;
sl@0
   497
}
sl@0
   498
#endif
sl@0
   499
sl@0
   500
#ifdef	__SYMBIAN32__
sl@0
   501
 
sl@0
   502
OilFunctionImpl* __oil_function_impl_clamplow_f64_sse, clamplow_f64() {
sl@0
   503
		return &_oil_function_impl_clamplow_f64_sse, clamplow_f64;
sl@0
   504
}
sl@0
   505
#endif
sl@0
   506
sl@0
   507
#ifdef	__SYMBIAN32__
sl@0
   508
 
sl@0
   509
OilFunctionImpl* __oil_function_impl_clamphigh_u8_sse, clamphigh_u8() {
sl@0
   510
		return &_oil_function_impl_clamphigh_u8_sse, clamphigh_u8;
sl@0
   511
}
sl@0
   512
#endif
sl@0
   513
sl@0
   514
#ifdef	__SYMBIAN32__
sl@0
   515
 
sl@0
   516
OilFunctionImpl* __oil_function_impl_clamphigh_s16_sse, clamphigh_s16() {
sl@0
   517
		return &_oil_function_impl_clamphigh_s16_sse, clamphigh_s16;
sl@0
   518
}
sl@0
   519
#endif
sl@0
   520
sl@0
   521
#ifdef	__SYMBIAN32__
sl@0
   522
 
sl@0
   523
OilFunctionImpl* __oil_function_impl_clamphigh_f32_sse, clamphigh_f32() {
sl@0
   524
		return &_oil_function_impl_clamphigh_f32_sse, clamphigh_f32;
sl@0
   525
}
sl@0
   526
#endif
sl@0
   527
sl@0
   528
#ifdef	__SYMBIAN32__
sl@0
   529
 
sl@0
   530
OilFunctionImpl* __oil_function_impl_clamphigh_f64_sse, clamphigh_f64() {
sl@0
   531
		return &_oil_function_impl_clamphigh_f64_sse, clamphigh_f64;
sl@0
   532
}
sl@0
   533
#endif
sl@0
   534