Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Side by Side Diff: src/opts/SkColor_opts_neon.h

Issue 26627004: ARM Skia NEON patches - 30 - Xfermode: NEON modeprocs (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Add a workaround for gcc4.6 Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #ifndef SkColor_opts_neon_DEFINED 1 #ifndef SkColor_opts_neon_DEFINED
2 #define SkColor_opts_neon_DEFINED 2 #define SkColor_opts_neon_DEFINED
3 3
4 #include "SkTypes.h" 4 #include "SkTypes.h"
5 5
6 #include <arm_neon.h>
7
6 #define NEON_A (SK_A32_SHIFT / 8) 8 #define NEON_A (SK_A32_SHIFT / 8)
7 #define NEON_R (SK_R32_SHIFT / 8) 9 #define NEON_R (SK_R32_SHIFT / 8)
8 #define NEON_G (SK_G32_SHIFT / 8) 10 #define NEON_G (SK_G32_SHIFT / 8)
9 #define NEON_B (SK_B32_SHIFT / 8) 11 #define NEON_B (SK_B32_SHIFT / 8)
10 12
13 static inline uint16x8_t SkAlpha255To256_neon8(uint8x8_t alpha) {
14 return vaddw_u8(vdupq_n_u16(1), alpha);
15 }
16
17 static inline uint8x8_t SkAlphaMul_neon8(uint8x8_t color, uint16x8_t scale) {
18 return vshrn_n_u16(vmovl_u8(color) * scale, 8);
19 }
20
21 static inline uint8x8x4_t SkAlphaMulQ_neon8(uint8x8x4_t color, uint16x8_t scale) {
22 uint8x8x4_t ret;
23
24 ret.val[NEON_A] = SkAlphaMul_neon8(color.val[NEON_A], scale);
25 ret.val[NEON_R] = SkAlphaMul_neon8(color.val[NEON_R], scale);
26 ret.val[NEON_G] = SkAlphaMul_neon8(color.val[NEON_G], scale);
27 ret.val[NEON_B] = SkAlphaMul_neon8(color.val[NEON_B], scale);
28
29 return ret;
30 }
31
11 #endif /* #ifndef SkColor_opts_neon_DEFINED */ 32 #endif /* #ifndef SkColor_opts_neon_DEFINED */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698