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_FilterDeblockingLuma_HorEdge_I
290c1bc742181ded4930842b46e9507372f0b1b963James Dong    .func   omxVCM4P10_FilterDeblockingLuma_HorEdge_I
300c1bc742181ded4930842b46e9507372f0b1b963James DongomxVCM4P10_FilterDeblockingLuma_HorEdge_I:
310c1bc742181ded4930842b46e9507372f0b1b963James Dong    PUSH     {r4-r12,lr}
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPUSH    {d8-d15}
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r7,r2,#1
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r3,#1
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r2]
360c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #2
370c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r3]
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r4,[sp,#0x6c]
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r5,[sp,#0x68]
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r11,#0
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d14,#0
420c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d15,#0x1
430c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r1,r1
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r9,#0x55000000
450c1bc742181ded4930842b46e9507372f0b1b963James DongL0x38:
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRH     r12,[r4],#2
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r6,r0,r1
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r12,#0
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0xe4
500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d7},[r0],r10
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d6},[r6],r10
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d5},[r0],r10
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d4},[r6],r10
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d8},[r0],r10
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d12,d4,d5
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d9},[r6]
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d13,d8,d4
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d10},[r0],r1
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d18,d9,d8
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d19,d6,d4
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d16,d0,d13
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r12,#0xff
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMAX.U8  d12,d18,d12
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d17,d10,d8
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOVEQ.32 d16[0],r11
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r12,#0xff00
670c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d19,d2,d19
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d12,d2,d12
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOVEQ.32 d16[1],r11
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d17,d2,d17
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d11},[r0]
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d16,d16,d12
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r12,#4
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d12,d16,d17
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d17,d16,d19
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0xf8
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #2
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    BL       armVCM4P10_DeblockingLumabSLT4_unsafe
800c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d30},[r0],r1
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29},[r0],r1
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r6,r0,r1,LSL #2
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24},[r0],r1
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r9,r9,r9
850c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d25},[r0]
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r6,#8
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L0x38
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x130
890c1bc742181ded4930842b46e9507372f0b1b963James DongL0xe4:
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r0,#8
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r9,r9,r9
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,#2
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L0x38
940c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x130
950c1bc742181ded4930842b46e9507372f0b1b963James DongL0xf8:
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #2
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #1
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    BL       armVCM4P10_DeblockingLumabSGE4_unsafe
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d31},[r0],r1
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d30},[r0],r1
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29},[r0],r1
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r6,r0,r1,LSL #2
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24},[r0],r1
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r9,r9,r9
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d25},[r0],r1
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,#2
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d28},[r0]
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r6,#8
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L0x38
1100c1bc742181ded4930842b46e9507372f0b1b963James DongL0x130:
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,#0x10
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r7]
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r0,r1,LSL #2
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r8]
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x38
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong    .endfunc
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong
123