pld [r1]
mov r3, #0x07c0
vdup.16 q15, r3
+ tst r0, #8
+ beq 0f
+ @ align the dst
+ vld1.16 {d0}, [r1]!
+ sub r2, r2, #8
+ vshl.u16 d0, d0, #1
+ vshl.u16 d1, d0, #10
+ vsri.u16 d1, d0, #11
+ vbit d1, d0, d30
+ vst1.16 {d1}, [r0]!
+0:
subs r2, r2, #64
blt btr16_end64
0:
pld [r1, #64*2]
@ Pulls 15-bit BGR color values (which are actually 16 bits) into q0-q3.
@ example: q0 = 0111 1110 0101 0011
- vldmia r1!, {q0-q3}
+ vld1.16 {d0-d3}, [r1]!
+ vld1.16 {d4-d7}, [r1]!
@ Shift BGR color 1 bit to the left, discarding MSB and preparing for vbit.
@ MSB is used for transparency (not needed here, and can mess with green).
@ example: q0 = 1111 1100 1010 0110
vdup.16 q14, r3
0:
pld [r1, #64*2]
- vldmia r1!, {q0-q3}
+ vld1.16 {d0-d3}, [r1]!
+ vld1.16 {d4-d7}, [r1]!
vand.u16 q8, q0, q14
vand.u16 q9, q1, q14
vand.u16 q10, q2, q14
bx lr
-@ vim:filetype=armasm
+@ vim:filetype=armasm:expandtab