10c1bc742181ded4930842b46e9507372f0b1b963James Dong/*
278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * Copyright (C) 2007-2008 ARM Limited
378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar *
478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * Licensed under the Apache License, Version 2.0 (the "License");
578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * you may not use this file except in compliance with the License.
678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * You may obtain a copy of the License at
778e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar *
878e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar *      http://www.apache.org/licenses/LICENSE-2.0
978e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar *
1078e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * Unless required by applicable law or agreed to in writing, software
1178e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * distributed under the License is distributed on an "AS IS" BASIS,
1278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * See the License for the specific language governing permissions and
1478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar * limitations under the License.
1578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar *
1678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar */
1778e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar/*
180c1bc742181ded4930842b46e9507372f0b1b963James Dong *
190c1bc742181ded4930842b46e9507372f0b1b963James Dong */
200c1bc742181ded4930842b46e9507372f0b1b963James Dong
210c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 24, 1
220c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 25, 1
230c1bc742181ded4930842b46e9507372f0b1b963James Dong
240c1bc742181ded4930842b46e9507372f0b1b963James Dong    .arm
250c1bc742181ded4930842b46e9507372f0b1b963James Dong    .fpu neon
260c1bc742181ded4930842b46e9507372f0b1b963James Dong    .text
270c1bc742181ded4930842b46e9507372f0b1b963James Dong
280c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global omxVCM4P10_FilterDeblockingChroma_HorEdge_I
290c1bc742181ded4930842b46e9507372f0b1b963James Dong    .func   omxVCM4P10_FilterDeblockingChroma_HorEdge_I
300c1bc742181ded4930842b46e9507372f0b1b963James DongomxVCM4P10_FilterDeblockingChroma_HorEdge_I:
310c1bc742181ded4930842b46e9507372f0b1b963James Dong    PUSH     {r4-r10,lr}
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPUSH    {d8-d15}
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r2]!
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #1
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1
360c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r3]!
370c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r4,[sp,#0x64]
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r5,[sp,#0x60]
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r9, =0x3030303
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r8, =0x4040404
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d14,#0
420c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d15,#0x1
430c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I16 d1,#0x4
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r7,#0x40000000
450c1bc742181ded4930842b46e9507372f0b1b963James DongL0x38:
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r6,[r4],#8
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d6},[r0],r1
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d5},[r0],r1
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r6,#0
500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d4},[r0],r1
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d8},[r0],r1
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d19,d6,d4
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d9},[r0],r1
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d13,d4,d8
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d10},[r0],r1
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0xe4
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d12,d5,d4
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d18,d9,d8
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d16,d0,d13
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.32  d26[0],r6
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMAX.U8  d12,d18,d12
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOVL.U8 q13,d26
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d17,d10,d8
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.S16 d27,d26,#0
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d12,d2,d12
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d19,d2,d19
670c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d16,d16,d27
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r6,r9
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d17,d2,d17
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d16,d16,d12
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d12,d16,d17
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d17,d16,d19
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    BLNE     armVCM4P10_DeblockingChromabSLT4_unsafe
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r6,r8
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #2
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTST.16  d26,d26,d1
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    BLNE     armVCM4P10_DeblockingChromabSGE4_unsafe
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIT     d29,d13,d26
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIT     d24,d31,d26
800c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIF     d29,d4,d16
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIF     d24,d8,d16
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29},[r0],r1
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r7,r7,r7
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24},[r0],r1
850c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x38
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r10,pc}
890c1bc742181ded4930842b46e9507372f0b1b963James DongL0xe4:
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r2]
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #1
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r7,r7,r7
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r3]
940c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,#4
950c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x38
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r10,pc}
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    .endfunc
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong
103