omxVCM4P10_FilterDeblockingChroma_VerEdge_I_s.S revision 0c1bc742181ded4930842b46e9507372f0b1b963
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_FilterDeblockingChroma_VerEdge_I
14    .func   omxVCM4P10_FilterDeblockingChroma_VerEdge_I
15omxVCM4P10_FilterDeblockingChroma_VerEdge_I:
16    PUSH     {r4-r12,lr}
17    VPUSH    {d8-d15}
18    VLD1.8   {d0[]},[r2]!
19    SUB      r0,r0,#4
20    VLD1.8   {d2[]},[r3]!
21    LDR      r4,[sp,#0x6c]
22    LDR      r5,[sp,#0x68]
23    LDR      r8, =0x4040404
24    LDR      r9, =0x3030303
25    VMOV.I8  d14,#0
26    VMOV.I8  d15,#0x1
27    VMOV.I16 d1,#0x4
28    MOV      r7,#0x40000000
29L0x34:
30    LDR      r6,[r4],#8
31    ADD      r10,r0,r1
32    ADD      lr,r1,r1
33    VLD1.8   {d7},[r0],lr
34    VLD1.8   {d8},[r10],lr
35    VLD1.8   {d5},[r0],lr
36    VLD1.8   {d10},[r10],lr
37    VLD1.8   {d6},[r0],lr
38    VLD1.8   {d9},[r10],lr
39    VLD1.8   {d4},[r0],lr
40    VLD1.8   {d11},[r10],lr
41    VZIP.8   d7,d8
42    VZIP.8   d5,d10
43    VZIP.8   d6,d9
44    VZIP.8   d4,d11
45    VZIP.16  d7,d5
46    VZIP.16  d8,d10
47    VZIP.16  d6,d4
48    VZIP.16  d9,d11
49    VTRN.32  d7,d6
50    VTRN.32  d5,d4
51    VTRN.32  d10,d11
52    VTRN.32  d8,d9
53    CMP      r6,#0
54    VABD.U8  d19,d6,d4
55    VABD.U8  d13,d4,d8
56    BEQ      L0x170
57    VABD.U8  d12,d5,d4
58    VABD.U8  d18,d9,d8
59    VMOV.32  d26[0],r6
60    VCGT.U8  d16,d0,d13
61    VMAX.U8  d12,d18,d12
62    VMOVL.U8 q13,d26
63    VABD.U8  d17,d10,d8
64    VCGT.S16 d27,d26,#0
65    VCGT.U8  d12,d2,d12
66    VCGT.U8  d19,d2,d19
67    VAND     d16,d16,d27
68    TST      r6,r9
69    VCGT.U8  d17,d2,d17
70    VAND     d16,d16,d12
71    VAND     d12,d16,d17
72    VAND     d17,d16,d19
73    BLNE     armVCM4P10_DeblockingChromabSLT4_unsafe
74    TST      r6,r8
75    SUB      r0,r0,r1,LSL #3
76    VTST.16  d26,d26,d1
77    BLNE     armVCM4P10_DeblockingChromabSGE4_unsafe
78    VBIT     d29,d13,d26
79    VBIT     d24,d31,d26
80    ADD      r10,r0,#3
81    VBIF     d29,d4,d16
82    ADD      r12,r10,r1
83    ADD      lr,r1,r1
84    VBIF     d24,d8,d16
85    ADDS     r7,r7,r7
86    VST1.8   {d29[0]},[r10],lr
87    VST1.8   {d29[1]},[r12],lr
88    VST1.8   {d29[2]},[r10],lr
89    VST1.8   {d29[3]},[r12],lr
90    VST1.8   {d29[4]},[r10],lr
91    VST1.8   {d29[5]},[r12],lr
92    VST1.8   {d29[6]},[r10],lr
93    VST1.8   {d29[7]},[r12],lr
94    ADD      r12,r0,#4
95    ADD      r10,r12,r1
96    VST1.8   {d24[0]},[r12],lr
97    VST1.8   {d24[1]},[r10],lr
98    VST1.8   {d24[2]},[r12],lr
99    VST1.8   {d24[3]},[r10],lr
100    VST1.8   {d24[4]},[r12],lr
101    VST1.8   {d24[5]},[r10],lr
102    VST1.8   {d24[6]},[r12],lr
103    VST1.8   {d24[7]},[r10],lr
104    ADD      r0,r0,#4
105    BNE      L0x34
106    MOV      r0,#0
107    VPOP     {d8-d15}
108    POP      {r4-r12,pc}
109L0x170:
110    VLD1.8   {d0[]},[r2]
111    ADD      r0,r0,#4
112    SUB      r0,r0,r1,LSL #3
113    ADDS     r7,r7,r7
114    VLD1.8   {d2[]},[r3]
115    ADD      r5,r5,#4
116    BNE      L0x34
117    MOV      r0,#0
118    VPOP     {d8-d15}
119    POP      {r4-r12,pc}
120    .endfunc
121
122    .end
123
124