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