summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/on2/h264dec/omxdl/arm_neon/vc/m4p10/src_gcc/armVCM4P10_UnpackBlock4x4_s.S
blob: c552f8dcfbcf9e8b4938b534211f27b84eabb9d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
 * (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