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_VerEdge_I
290c1bc742181ded4930842b46e9507372f0b1b963James DongomxVCM4P10_FilterDeblockingChroma_VerEdge_I:
300c1bc742181ded4930842b46e9507372f0b1b963James Dong    PUSH     {r4-r12,lr}
310c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPUSH    {d8-d15}
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r2]!
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,#4
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r3]!
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r4,[sp,#0x6c]
360c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r5,[sp,#0x68]
370c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r8, =0x4040404
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r9, =0x3030303
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d14,#0
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d15,#0x1
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I16 d1,#0x4
420c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r7,#0x40000000
430c1bc742181ded4930842b46e9507372f0b1b963James DongL0x34:
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r6,[r4],#8
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r0,r1
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      lr,r1,r1
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d7},[r0],lr
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d8},[r10],lr
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d5},[r0],lr
500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d10},[r10],lr
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d6},[r0],lr
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d9},[r10],lr
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d4},[r0],lr
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d11},[r10],lr
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d7,d8
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d5,d10
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d6,d9
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d4,d11
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d7,d5
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d8,d10
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d6,d4
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d9,d11
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d7,d6
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d5,d4
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d10,d11
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d8,d9
670c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r6,#0
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d19,d6,d4
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d13,d4,d8
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x170
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d12,d5,d4
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d18,d9,d8
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.32  d26[0],r6
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d16,d0,d13
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMAX.U8  d12,d18,d12
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOVL.U8 q13,d26
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d17,d10,d8
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.S16 d27,d26,#0
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d12,d2,d12
800c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d19,d2,d19
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d16,d16,d27
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r6,r9
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d17,d2,d17
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d16,d16,d12
850c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d12,d16,d17
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d17,d16,d19
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    BLNE     armVCM4P10_DeblockingChromabSLT4_unsafe
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r6,r8
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #3
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTST.16  d26,d26,d1
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    BLNE     armVCM4P10_DeblockingChromabSGE4_unsafe
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIT     d29,d13,d26
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIT     d24,d31,d26
940c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r0,#3
950c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIF     d29,d4,d16
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r12,r10,r1
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      lr,r1,r1
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIF     d24,d8,d16
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r7,r7,r7
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29[0]},[r10],lr
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29[1]},[r12],lr
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29[2]},[r10],lr
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29[3]},[r12],lr
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29[4]},[r10],lr
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29[5]},[r12],lr
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29[6]},[r10],lr
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29[7]},[r12],lr
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r12,r0,#4
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r12,r1
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24[0]},[r12],lr
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24[1]},[r10],lr
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24[2]},[r12],lr
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24[3]},[r10],lr
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24[4]},[r12],lr
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24[5]},[r10],lr
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24[6]},[r12],lr
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24[7]},[r10],lr
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r0,#4
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x34
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
1230c1bc742181ded4930842b46e9507372f0b1b963James DongL0x170:
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r2]
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r0,#4
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #3
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r7,r7,r7
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r3]
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,#4
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x34
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
1320c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
1330c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
1340c1bc742181ded4930842b46e9507372f0b1b963James Dong
1350c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
1360c1bc742181ded4930842b46e9507372f0b1b963James Dong
137