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 omxVCM4P10_FilterDeblockingLuma_VerEdge_I
14bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    .func   omxVCM4P10_FilterDeblockingLuma_VerEdge_I
15bebc99d6fa433c04139294a5057f8439d772dbd9James DongomxVCM4P10_FilterDeblockingLuma_VerEdge_I:
16bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    PUSH     {r4-r12,lr}
17bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VPUSH    {d8-d15}
18bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r7,r2,#1
19bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r8,r3,#1
20bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d0[]},[r2]
21bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    SUB      r0,r0,#4
22bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d2[]},[r3]
23bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    LDR      r4,[sp,#0x6c]
24bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    LDR      r5,[sp,#0x68]
25bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    MOV      r6,#0
26bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VMOV.I8  d14,#0
27bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VMOV.I8  d15,#0x1
28bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    MOV      r9,#0x11000000
29bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r11,r1,r1
30bebc99d6fa433c04139294a5057f8439d772dbd9James DongL0x38:
31bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    LDRH     r12,[r4],#4
32bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    CMP      r12,#0
33bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    BEQ      L0x160
34bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r10,r0,r1
35bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d7},[r0],r11
36bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d8},[r10],r11
37bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d5},[r0],r11
38bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d7,d8
39bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d10},[r10],r11
40bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d6},[r0],r11
41bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d5,d10
42bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d9},[r10],r11
43bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d4},[r0],r11
44bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d11},[r10],r11
45bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d6,d9
46bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d8,d10
47bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d4,d11
48bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    SUB      r0,r0,r1,LSL #3
49bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d7,d5
50bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d9,d11
51bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d6,d4
52bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d8,d9
53bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d5,d4
54bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d10,d11
55bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d7,d6
56bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VABD.U8  d13,d4,d8
57bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VABD.U8  d12,d5,d4
58bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VABD.U8  d18,d9,d8
59bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VABD.U8  d19,d6,d4
60bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    TST      r12,#0xff
61bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VCGT.U8  d16,d0,d13
62bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VMAX.U8  d12,d18,d12
63bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VABD.U8  d17,d10,d8
64bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VMOVEQ.32 d16[0],r6
65bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    TST      r12,#0xff00
66bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VCGT.U8  d19,d2,d19
67bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VCGT.U8  d12,d2,d12
68bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VMOVEQ.32 d16[1],r6
69bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VCGT.U8  d17,d2,d17
70bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VAND     d16,d16,d12
71bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    TST      r12,#4
72bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VAND     d12,d16,d17
73bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VAND     d17,d16,d19
74bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    BNE      L0x17c
75bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    BL       armVCM4P10_DeblockingLumabSLT4_unsafe
76bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d7,d6
77bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d30,d29
78bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d24,d25
79bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d10,d11
80bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d7,d30
81bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r10,r0,r1
82bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d24,d10
83bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d25,d11
84bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d6,d29
85bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d7,d24
86bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d30,d10
87bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d6,d25
88bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d29,d11
89bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d7},[r0],r11
90bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d24},[r10],r11
91bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d30},[r0],r11
92bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d10},[r10],r11
93bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d6},[r0],r11
94bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d25},[r10],r11
95bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADDS     r9,r9,r9
96bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d29},[r0],r11
97bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r5,r5,#2
98bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d11},[r10],r1
99bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    SUB      r0,r0,r1,LSL #3
100bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d0[]},[r7]
101bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r0,r0,#4
102bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d2[]},[r8]
103bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    BCC      L0x38
104bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    B        L0x1f0
105bebc99d6fa433c04139294a5057f8439d772dbd9James DongL0x160:
106bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r0,r0,#4
107bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADDS     r9,r9,r9
108bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d0[]},[r7]
109bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r5,r5,#4
110bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d2[]},[r8]
111bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    BCC      L0x38
112bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    B        L0x1f0
113bebc99d6fa433c04139294a5057f8439d772dbd9James DongL0x17c:
114bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    BL       armVCM4P10_DeblockingLumabSGE4_unsafe
115bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d7,d31
116bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d30,d29
117bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d24,d25
118bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.8   d28,d11
119bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d7,d30
120bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r10,r0,r1
121bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d24,d28
122bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d25,d11
123bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VZIP.16  d31,d29
124bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d7,d24
125bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d30,d28
126bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d31,d25
127bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VTRN.32  d29,d11
128bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d7},[r0],r11
129bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d24},[r10],r11
130bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d30},[r0],r11
131bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d28},[r10],r11
132bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d31},[r0],r11
133bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d25},[r10],r11
134bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADDS     r9,r9,r9
135bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d29},[r0],r11
136bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r5,r5,#4
137bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VST1.8   {d11},[r10],r11
138bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    SUB      r0,r0,r1,LSL #3
139bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d0[]},[r7]
140bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r0,r0,#4
141bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d2[]},[r8]
142bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    BCC      L0x38
143bebc99d6fa433c04139294a5057f8439d772dbd9James DongL0x1f0:
144bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    SUB      r4,r4,#0xe
145bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    SUB      r5,r5,#0xe
146bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    SUB      r0,r0,#0x10
147bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d0[]},[r2]
148bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    ADD      r0,r0,r1,LSL #3
149bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VLD1.8   {d2[]},[r3]
150bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    BNE      L0x38
151bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    MOV      r0,#0
152bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    VPOP     {d8-d15}
153bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    POP      {r4-r12,pc}
154bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    .endfunc
155bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
156bebc99d6fa433c04139294a5057f8439d772dbd9James Dong    .end
157bebc99d6fa433c04139294a5057f8439d772dbd9James Dong
158