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 omxVCM4P10_FilterDeblockingLuma_HorEdge_I
14    .func   omxVCM4P10_FilterDeblockingLuma_HorEdge_I
15omxVCM4P10_FilterDeblockingLuma_HorEdge_I:
16    PUSH     {r4-r12,lr}
17    VPUSH    {d8-d15}
18    ADD      r7,r2,#1
19    ADD      r8,r3,#1
20    VLD1.8   {d0[]},[r2]
21    SUB      r0,r0,r1,LSL #2
22    VLD1.8   {d2[]},[r3]
23    LDR      r4,[sp,#0x6c]
24    LDR      r5,[sp,#0x68]
25    MOV      r11,#0
26    VMOV.I8  d14,#0
27    VMOV.I8  d15,#0x1
28    ADD      r10,r1,r1
29    MOV      r9,#0x55000000
30L0x38:
31    LDRH     r12,[r4],#2
32    ADD      r6,r0,r1
33    CMP      r12,#0
34    BEQ      L0xe4
35    VLD1.8   {d7},[r0],r10
36    VLD1.8   {d6},[r6],r10
37    VLD1.8   {d5},[r0],r10
38    VLD1.8   {d4},[r6],r10
39    VLD1.8   {d8},[r0],r10
40    VABD.U8  d12,d4,d5
41    VLD1.8   {d9},[r6]
42    VABD.U8  d13,d8,d4
43    VLD1.8   {d10},[r0],r1
44    VABD.U8  d18,d9,d8
45    VABD.U8  d19,d6,d4
46    VCGT.U8  d16,d0,d13
47    TST      r12,#0xff
48    VMAX.U8  d12,d18,d12
49    VABD.U8  d17,d10,d8
50    VMOVEQ.32 d16[0],r11
51    TST      r12,#0xff00
52    VCGT.U8  d19,d2,d19
53    VCGT.U8  d12,d2,d12
54    VMOVEQ.32 d16[1],r11
55    VCGT.U8  d17,d2,d17
56    VLD1.8   {d11},[r0]
57    VAND     d16,d16,d12
58    TST      r12,#4
59    VAND     d12,d16,d17
60    VAND     d17,d16,d19
61    BNE      L0xf8
62    SUB      r0,r0,r1,LSL #2
63    SUB      r0,r0,r1
64    BL       armVCM4P10_DeblockingLumabSLT4_unsafe
65    VST1.8   {d30},[r0],r1
66    VST1.8   {d29},[r0],r1
67    SUB      r6,r0,r1,LSL #2
68    VST1.8   {d24},[r0],r1
69    ADDS     r9,r9,r9
70    VST1.8   {d25},[r0]
71    ADD      r0,r6,#8
72    BCC      L0x38
73    B        L0x130
74L0xe4:
75    ADD      r0,r0,#8
76    ADDS     r9,r9,r9
77    ADD      r5,r5,#2
78    BCC      L0x38
79    B        L0x130
80L0xf8:
81    SUB      r0,r0,r1,LSL #2
82    SUB      r0,r0,r1,LSL #1
83    BL       armVCM4P10_DeblockingLumabSGE4_unsafe
84    VST1.8   {d31},[r0],r1
85    VST1.8   {d30},[r0],r1
86    VST1.8   {d29},[r0],r1
87    SUB      r6,r0,r1,LSL #2
88    VST1.8   {d24},[r0],r1
89    ADDS     r9,r9,r9
90    VST1.8   {d25},[r0],r1
91    ADD      r5,r5,#2
92    VST1.8   {d28},[r0]
93    ADD      r0,r6,#8
94    BCC      L0x38
95L0x130:
96    SUB      r0,r0,#0x10
97    VLD1.8   {d0[]},[r7]
98    ADD      r0,r0,r1,LSL #2
99    VLD1.8   {d2[]},[r8]
100    BNE      L0x38
101    MOV      r0,#0
102    VPOP     {d8-d15}
103    POP      {r4-r12,pc}
104    .endfunc
105
106    .end
107
108