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