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
15armVCM4P10_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]
26unpackLoop:
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