1 /* 2 * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 3 * 4 */ 5 6 .eabi_attribute 24, 1 7 .eabi_attribute 25, 1 8 9 .arm 10 .fpu neon 11 .text 12 13 .global armVCM4P10_UnpackBlock4x4 14 .func armVCM4P10_UnpackBlock4x4 15 armVCM4P10_UnpackBlock4x4: 16 PUSH {r4-r8,lr} 17 LDR r2,[r0,#0] 18 MOV r7,#0x1f 19 MOV r4,#0 20 MOV r5,#0 21 LDRB r3,[r2],#1 22 STRD r4,r5,[r1,#0] 23 STRD r4,r5,[r1,#8] 24 STRD r4,r5,[r1,#0x10] 25 STRD r4,r5,[r1,#0x18] 26 unpackLoop: 27 TST r3,#0x10 28 LDRNESB r5,[r2,#1] 29 LDRNEB r4,[r2],#2 30 AND r6,r7,r3,LSL #1 31 LDREQSB r4,[r2],#1 32 ORRNE r4,r4,r5,LSL #8 33 TST r3,#0x20 34 LDREQB r3,[r2],#1 35 STRH r4,[r1,r6] 36 BEQ unpackLoop 37 STR r2,[r0,#0] 38 POP {r4-r8,pc} 39 .endfunc 40 .end 41