Home | History | Annotate | Download | only in opts
      1 /***************************************************************************
      2  * Copyright (c) 2010, Code Aurora Forum. All rights reserved.
      3  * Copyright 2006-2010, The Android Open Source Project
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  ***************************************************************************/
      8 
      9 /* Changes:
     10  * 2011-04-01 ARM
     11  *    Merged the functions from src/opts/opts_check_arm_neon.cpp
     12  *    Modified to return ARM version of memset16 and memset32 if no neon
     13  *    available in the core
     14  */
     15 
     16 #include "SkBlitRow.h"
     17 #include "SkUtils.h"
     18 
     19 #include "SkUtilsArm.h"
     20 
     21 #if defined(SK_CPU_LENDIAN) && !SK_ARM_NEON_IS_NONE
     22 extern "C" void memset16_neon(uint16_t dst[], uint16_t value, int count);
     23 extern "C" void memset32_neon(uint32_t dst[], uint32_t value, int count);
     24 #endif
     25 
     26 #if defined(SK_CPU_LENDIAN)
     27 extern "C" void arm_memset16(uint16_t* dst, uint16_t value, int count);
     28 extern "C" void arm_memset32(uint32_t* dst, uint32_t value, int count);
     29 #endif
     30 
     31 SkMemset16Proc SkMemset16GetPlatformProc() {
     32     // FIXME: memset.arm.S is using syntax incompatible with XCode
     33 #if !defined(SK_CPU_LENDIAN) || defined(SK_BUILD_FOR_IOS)
     34     return NULL;
     35 #elif SK_ARM_NEON_IS_DYNAMIC
     36     if (sk_cpu_arm_has_neon()) {
     37         return memset16_neon;
     38     } else {
     39         return arm_memset16;
     40     }
     41 #elif SK_ARM_NEON_IS_ALWAYS
     42     return memset16_neon;
     43 #else
     44     return arm_memset16;
     45 #endif
     46 }
     47 
     48 SkMemset32Proc SkMemset32GetPlatformProc() {
     49     // FIXME: memset.arm.S is using syntax incompatible with XCode
     50 #if !defined(SK_CPU_LENDIAN) || defined(SK_BUILD_FOR_IOS)
     51     return NULL;
     52 #elif SK_ARM_NEON_IS_DYNAMIC
     53     if (sk_cpu_arm_has_neon()) {
     54         return memset32_neon;
     55     } else {
     56         return arm_memset32;
     57     }
     58 #elif SK_ARM_NEON_IS_ALWAYS
     59     return memset32_neon;
     60 #else
     61     return arm_memset32;
     62 #endif
     63 }
     64 
     65 SkBlitRow::ColorRectProc PlatformColorRectProcFactory() {
     66     return NULL;
     67 }
     68