1/*
2 * Copyright (C) 2007-2008 ARM Limited
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 */
17/*
18 *
19 */
20
21    .eabi_attribute 24, 1
22    .eabi_attribute 25, 1
23
24    .arm
25    .fpu neon
26    .text
27
28    .global omxVCM4P10_FilterDeblockingChroma_HorEdge_I
29omxVCM4P10_FilterDeblockingChroma_HorEdge_I:
30    PUSH     {r4-r10,lr}
31    VPUSH    {d8-d15}
32    VLD1.8   {d0[]},[r2]!
33    SUB      r0,r0,r1,LSL #1
34    SUB      r0,r0,r1
35    VLD1.8   {d2[]},[r3]!
36    LDR      r4,[sp,#0x64]
37    LDR      r5,[sp,#0x60]
38    LDR      r9, =0x3030303
39    LDR      r8, =0x4040404
40    VMOV.I8  d14,#0
41    VMOV.I8  d15,#0x1
42    VMOV.I16 d1,#0x4
43    MOV      r7,#0x40000000
44L0x38:
45    LDR      r6,[r4],#8
46    VLD1.8   {d6},[r0],r1
47    VLD1.8   {d5},[r0],r1
48    CMP      r6,#0
49    VLD1.8   {d4},[r0],r1
50    VLD1.8   {d8},[r0],r1
51    VABD.U8  d19,d6,d4
52    VLD1.8   {d9},[r0],r1
53    VABD.U8  d13,d4,d8
54    VLD1.8   {d10},[r0],r1
55    BEQ      L0xe4
56    VABD.U8  d12,d5,d4
57    VABD.U8  d18,d9,d8
58    VCGT.U8  d16,d0,d13
59    VMOV.32  d26[0],r6
60    VMAX.U8  d12,d18,d12
61    VMOVL.U8 q13,d26
62    VABD.U8  d17,d10,d8
63    VCGT.S16 d27,d26,#0
64    VCGT.U8  d12,d2,d12
65    VCGT.U8  d19,d2,d19
66    VAND     d16,d16,d27
67    TST      r6,r9
68    VCGT.U8  d17,d2,d17
69    VAND     d16,d16,d12
70    VAND     d12,d16,d17
71    VAND     d17,d16,d19
72    BLNE     armVCM4P10_DeblockingChromabSLT4_unsafe
73    TST      r6,r8
74    SUB      r0,r0,r1,LSL #2
75    VTST.16  d26,d26,d1
76    BLNE     armVCM4P10_DeblockingChromabSGE4_unsafe
77    VBIT     d29,d13,d26
78    VBIT     d24,d31,d26
79    VBIF     d29,d4,d16
80    VBIF     d24,d8,d16
81    VST1.8   {d29},[r0],r1
82    ADDS     r7,r7,r7
83    VST1.8   {d24},[r0],r1
84    BNE      L0x38
85    MOV      r0,#0
86    VPOP     {d8-d15}
87    POP      {r4-r10,pc}
88L0xe4:
89    VLD1.8   {d0[]},[r2]
90    SUB      r0,r0,r1,LSL #1
91    ADDS     r7,r7,r7
92    VLD1.8   {d2[]},[r3]
93    ADD      r5,r5,#4
94    BNE      L0x38
95    MOV      r0,#0
96    VPOP     {d8-d15}
97    POP      {r4-r10,pc}
98
99    .end
100
101