blob: c552f8dcfbcf9e8b4938b534211f27b84eabb9d3 [file] [log] [blame]
/*
* (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
*
*/
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.arm
.fpu neon
.text
.global armVCM4P10_UnpackBlock4x4
.func armVCM4P10_UnpackBlock4x4
armVCM4P10_UnpackBlock4x4:
PUSH {r4-r8,lr}
LDR r2,[r0,#0]
MOV r7,#0x1f
MOV r4,#0
MOV r5,#0
LDRB r3,[r2],#1
STRD r4,r5,[r1,#0]
STRD r4,r5,[r1,#8]
STRD r4,r5,[r1,#0x10]
STRD r4,r5,[r1,#0x18]
unpackLoop:
TST r3,#0x10
LDRNESB r5,[r2,#1]
LDRNEB r4,[r2],#2
AND r6,r7,r3,LSL #1
LDREQSB r4,[r2],#1
ORRNE r4,r4,r5,LSL #8
TST r3,#0x20
LDREQB r3,[r2],#1
STRH r4,[r1,r6]
BEQ unpackLoop
STR r2,[r0,#0]
POP {r4-r8,pc}
.endfunc
.end