• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2014 ARM Ltd.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "SkUtils.h"
9 #include "SkUtilsArm.h"
10 
11 #if defined(SK_CPU_LENDIAN) && !SK_ARM_NEON_IS_NONE
12 extern "C" void memset16_neon(uint16_t dst[], uint16_t value, int count);
13 extern "C" void memset32_neon(uint32_t dst[], uint32_t value, int count);
14 #endif
15 
16 #if defined(SK_CPU_LENDIAN)
17 extern "C" void arm_memset16(uint16_t* dst, uint16_t value, int count);
18 extern "C" void arm_memset32(uint32_t* dst, uint32_t value, int count);
19 #endif
20 
SkMemset16GetPlatformProc()21 SkMemset16Proc SkMemset16GetPlatformProc() {
22     // FIXME: memset.arm.S is using syntax incompatible with XCode
23 #if !defined(SK_CPU_LENDIAN) || defined(SK_BUILD_FOR_IOS)
24     return NULL;
25 #elif SK_ARM_NEON_IS_DYNAMIC
26     if (sk_cpu_arm_has_neon()) {
27         return memset16_neon;
28     } else {
29         return arm_memset16;
30     }
31 #elif SK_ARM_NEON_IS_ALWAYS
32     return memset16_neon;
33 #else
34     return arm_memset16;
35 #endif
36 }
37 
SkMemset32GetPlatformProc()38 SkMemset32Proc SkMemset32GetPlatformProc() {
39     // FIXME: memset.arm.S is using syntax incompatible with XCode
40 #if !defined(SK_CPU_LENDIAN) || defined(SK_BUILD_FOR_IOS)
41     return NULL;
42 #elif SK_ARM_NEON_IS_DYNAMIC
43     if (sk_cpu_arm_has_neon()) {
44         return memset32_neon;
45     } else {
46         return arm_memset32;
47     }
48 #elif SK_ARM_NEON_IS_ALWAYS
49     return memset32_neon;
50 #else
51     return arm_memset32;
52 #endif
53 }
54 
SkMemcpy32GetPlatformProc()55 SkMemcpy32Proc SkMemcpy32GetPlatformProc() {
56     return NULL;
57 }
58