1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
/*
* (C) Gražvydas "notaz" Ignotas, 2010
*
* This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory.
*/
.text
.align 2
.global bgr555_to_rgb565
bgr555_to_rgb565:
mov r3, #0x03e0
vdup.16 q15, r3
mov r2, r2, lsr #6
0:
vldmia r1!, {q0-q3}
vshr.u16 q4, q0, #10
vshr.u16 q5, q1, #10
vshr.u16 q6, q2, #10
vshr.u16 q7, q3, #10
vshl.u16 q8, q0, #11
vshl.u16 q9, q1, #11
vshl.u16 q10, q2, #11
vshl.u16 q11, q3, #11
vand q0, q0, q15
vand q1, q1, q15
vand q2, q2, q15
vand q3, q3, q15
vshl.u16 q0, q0, #1
vshl.u16 q1, q1, #1
vshl.u16 q2, q2, #1
vshl.u16 q3, q3, #1
vorr q0, q0, q4
vorr q1, q1, q5
vorr q2, q2, q6
vorr q3, q3, q7
vorr q0, q0, q8
vorr q1, q1, q9
vorr q2, q2, q10
vorr q3, q3, q11
vstmia r0!, {q0-q3}
subs r2, r2, #1
bne 0b
bx lr
@ vim:filetype=armasm
|