omxVCM4P10_FilterDeblockingChroma_HorEdge_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_HorEdge_I
14    .func   omxVCM4P10_FilterDeblockingChroma_HorEdge_I
15omxVCM4P10_FilterDeblockingChroma_HorEdge_I:
16    PUSH     {r4-r10,lr}
17    VPUSH    {d8-d15}
18    VLD1.8   {d0[]},[r2]!
19    SUB      r0,r0,r1,LSL #1
20    SUB      r0,r0,r1
21    VLD1.8   {d2[]},[r3]!
22    LDR      r4,[sp,#0x64]
23    LDR      r5,[sp,#0x60]
24    LDR      r9, =0x3030303
25    LDR      r8, =0x4040404
26    VMOV.I8  d14,#0
27    VMOV.I8  d15,#0x1
28    VMOV.I16 d1,#0x4
29    MOV      r7,#0x40000000
30L0x38:
31    LDR      r6,[r4],#8
32    VLD1.8   {d6},[r0],r1
33    VLD1.8   {d5},[r0],r1
34    CMP      r6,#0
35    VLD1.8   {d4},[r0],r1
36    VLD1.8   {d8},[r0],r1
37    VABD.U8  d19,d6,d4
38    VLD1.8   {d9},[r0],r1
39    VABD.U8  d13,d4,d8
40    VLD1.8   {d10},[r0],r1
41    BEQ      L0xe4
42    VABD.U8  d12,d5,d4
43    VABD.U8  d18,d9,d8
44    VCGT.U8  d16,d0,d13
45    VMOV.32  d26[0],r6
46    VMAX.U8  d12,d18,d12
47    VMOVL.U8 q13,d26
48    VABD.U8  d17,d10,d8
49    VCGT.S16 d27,d26,#0
50    VCGT.U8  d12,d2,d12
51    VCGT.U8  d19,d2,d19
52    VAND     d16,d16,d27
53    TST      r6,r9
54    VCGT.U8  d17,d2,d17
55    VAND     d16,d16,d12
56    VAND     d12,d16,d17
57    VAND     d17,d16,d19
58    BLNE     armVCM4P10_DeblockingChromabSLT4_unsafe
59    TST      r6,r8
60    SUB      r0,r0,r1,LSL #2
61    VTST.16  d26,d26,d1
62    BLNE     armVCM4P10_DeblockingChromabSGE4_unsafe
63    VBIT     d29,d13,d26
64    VBIT     d24,d31,d26
65    VBIF     d29,d4,d16
66    VBIF     d24,d8,d16
67    VST1.8   {d29},[r0],r1
68    ADDS     r7,r7,r7
69    VST1.8   {d24},[r0],r1
70    BNE      L0x38
71    MOV      r0,#0
72    VPOP     {d8-d15}
73    POP      {r4-r10,pc}
74L0xe4:
75    VLD1.8   {d0[]},[r2]
76    SUB      r0,r0,r1,LSL #1
77    ADDS     r7,r7,r7
78    VLD1.8   {d2[]},[r3]
79    ADD      r5,r5,#4
80    BNE      L0x38
81    MOV      r0,#0
82    VPOP     {d8-d15}
83    POP      {r4-r10,pc}
84    .endfunc
85
86    .end
87
88