10c1bc742181ded4930842b46e9507372f0b1b963James Dong/*
20c1bc742181ded4930842b46e9507372f0b1b963James Dong * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
30c1bc742181ded4930842b46e9507372f0b1b963James Dong *
40c1bc742181ded4930842b46e9507372f0b1b963James Dong */
50c1bc742181ded4930842b46e9507372f0b1b963James Dong
60c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 24, 1
70c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 25, 1
80c1bc742181ded4930842b46e9507372f0b1b963James Dong
90c1bc742181ded4930842b46e9507372f0b1b963James Dong    .arm
100c1bc742181ded4930842b46e9507372f0b1b963James Dong    .fpu neon
110c1bc742181ded4930842b46e9507372f0b1b963James Dong    .text
120c1bc742181ded4930842b46e9507372f0b1b963James Dong
130c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global omxVCM4P10_FilterDeblockingLuma_HorEdge_I
140c1bc742181ded4930842b46e9507372f0b1b963James Dong    .func   omxVCM4P10_FilterDeblockingLuma_HorEdge_I
150c1bc742181ded4930842b46e9507372f0b1b963James DongomxVCM4P10_FilterDeblockingLuma_HorEdge_I:
160c1bc742181ded4930842b46e9507372f0b1b963James Dong    PUSH     {r4-r12,lr}
170c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPUSH    {d8-d15}
180c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r7,r2,#1
190c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r3,#1
200c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r2]
210c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #2
220c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r3]
230c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r4,[sp,#0x6c]
240c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r5,[sp,#0x68]
250c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r11,#0
260c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d14,#0
270c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d15,#0x1
280c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r1,r1
290c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r9,#0x55000000
300c1bc742181ded4930842b46e9507372f0b1b963James DongL0x38:
310c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRH     r12,[r4],#2
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r6,r0,r1
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r12,#0
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0xe4
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d7},[r0],r10
360c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d6},[r6],r10
370c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d5},[r0],r10
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d4},[r6],r10
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d8},[r0],r10
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d12,d4,d5
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d9},[r6]
420c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d13,d8,d4
430c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d10},[r0],r1
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d18,d9,d8
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d19,d6,d4
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d16,d0,d13
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r12,#0xff
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMAX.U8  d12,d18,d12
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d17,d10,d8
500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOVEQ.32 d16[0],r11
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r12,#0xff00
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d19,d2,d19
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d12,d2,d12
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOVEQ.32 d16[1],r11
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d17,d2,d17
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d11},[r0]
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d16,d16,d12
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r12,#4
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d12,d16,d17
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d17,d16,d19
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0xf8
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #2
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    BL       armVCM4P10_DeblockingLumabSLT4_unsafe
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d30},[r0],r1
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29},[r0],r1
670c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r6,r0,r1,LSL #2
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24},[r0],r1
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r9,r9,r9
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d25},[r0]
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r6,#8
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L0x38
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x130
740c1bc742181ded4930842b46e9507372f0b1b963James DongL0xe4:
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r0,#8
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r9,r9,r9
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,#2
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L0x38
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x130
800c1bc742181ded4930842b46e9507372f0b1b963James DongL0xf8:
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #2
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #1
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    BL       armVCM4P10_DeblockingLumabSGE4_unsafe
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d31},[r0],r1
850c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d30},[r0],r1
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29},[r0],r1
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r6,r0,r1,LSL #2
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24},[r0],r1
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r9,r9,r9
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d25},[r0],r1
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,#2
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d28},[r0]
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r6,#8
940c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L0x38
950c1bc742181ded4930842b46e9507372f0b1b963James DongL0x130:
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,#0x10
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r7]
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r0,r1,LSL #2
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r8]
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x38
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong    .endfunc
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong
108