2 * (C) GraÅžvydas "notaz" Ignotas, 2011,2012
4 * This work is licensed under the terms of any of these licenses
6 * - GNU GPL, version 2 or later.
7 * - GNU LGPL, version 2.1 or later.
8 * See the COPYING file in the top-level directory.
18 @ void *dst, const void *src, int count, uint abits
19 .macro do_argb bgr2rgb
24 vswp d4, d6 @ BGR->RGB
35 @ void *dst, const void *src, int count, uint global_alpha
36 .macro do_argb_alpha bgr2rgb global_alpha
48 vswp d4, d6 @ BGR->RGB
53 @ d = (((s-d)*a+255)>>8)+d
60 vaddhn.i16 d4, q8, q12
61 vaddhn.i16 d5, q9, q12
62 vaddhn.i16 d6, q10,q12
77 vzip.8 d4, d5 @ RRR..|GGG.. -> RGRG..
78 vzip.8 d6, d7 @ BBB..|000.. -> B0B0..
103 @ void *dst, const void *src, int count, uint global_alpha
104 .macro do_argb_to_rgb565_alpha bgr2rgb global_alpha
113 vld4.8 {d4-d7}, [r1]!
116 vswp d4, d6 @ BGR->RGB
123 vsri.i8 d0, d0, #5 @ B
125 vsri.i8 d2, d2, #5 @ R
126 vsri.i8 d1, d1, #6 @ G
127 @ d = (((s-d)*a+255)>>8)+d
134 vaddhn.i16 d4, q8, q12
135 vaddhn.i16 d5, q9, q12
136 vaddhn.i16 d6, q10,q12
138 vadd.i8 d2, d6 @ rrrr rrrr
140 vshr.u8 d1, d4, #3 @ 000b bbbb
141 vsri.i8 d2, d5, #5 @ rrrr rggg
142 vsli.i8 d1, d0, #5 @ gggb bbbb
145 vst2.8 {d1-d2}, [r0]!
178 func(neon_ARGBtoXRGB):
181 func(neon_ABGRtoXRGB):
184 func(neon_ARGBtoXRGBalpha):
187 func(neon_ABGRtoXRGBalpha):
190 func(neon_ARGBtoXRGBalphaS):
193 func(neon_ABGRtoXRGBalphaS):
196 func(neon_ARGBtoRGB565alpha):
197 do_argb_to_rgb565_alpha 0, 0
199 func(neon_ABGRtoRGB565alpha):
200 do_argb_to_rgb565_alpha 1, 0
202 @ vim:filetype=armasm