|
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 |
|
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 |
|
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 } |