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_VerEdge_I
140c1bc742181ded4930842b46e9507372f0b1b963James Dong    .func   omxVCM4P10_FilterDeblockingLuma_VerEdge_I
150c1bc742181ded4930842b46e9507372f0b1b963James DongomxVCM4P10_FilterDeblockingLuma_VerEdge_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,#4
220c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r3]
230c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r4,[sp,#0x6c]
240c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r5,[sp,#0x68]
250c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r6,#0
260c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d14,#0
270c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d15,#0x1
280c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r9,#0x11000000
290c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r11,r1,r1
300c1bc742181ded4930842b46e9507372f0b1b963James DongL0x38:
310c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDRH     r12,[r4],#4
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r12,#0
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x160
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r0,r1
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d7},[r0],r11
360c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d8},[r10],r11
370c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d5},[r0],r11
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d7,d8
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d10},[r10],r11
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d6},[r0],r11
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d5,d10
420c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d9},[r10],r11
430c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d4},[r0],r11
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d11},[r10],r11
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d6,d9
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d8,d10
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d4,d11
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #3
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d7,d5
500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d9,d11
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d6,d4
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d8,d9
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d5,d4
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d10,d11
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d7,d6
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d13,d4,d8
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d12,d5,d4
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d18,d9,d8
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d19,d6,d4
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r12,#0xff
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d16,d0,d13
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMAX.U8  d12,d18,d12
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d17,d10,d8
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOVEQ.32 d16[0],r6
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r12,#0xff00
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d19,d2,d19
670c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d12,d2,d12
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOVEQ.32 d16[1],r6
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d17,d2,d17
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d16,d16,d12
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r12,#4
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d12,d16,d17
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d17,d16,d19
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x17c
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    BL       armVCM4P10_DeblockingLumabSLT4_unsafe
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d7,d6
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d30,d29
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d24,d25
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d10,d11
800c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d7,d30
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r0,r1
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d24,d10
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d25,d11
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d6,d29
850c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d7,d24
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d30,d10
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d6,d25
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d29,d11
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d7},[r0],r11
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24},[r10],r11
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d30},[r0],r11
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d10},[r10],r11
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6},[r0],r11
940c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d25},[r10],r11
950c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r9,r9,r9
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29},[r0],r11
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,#2
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d11},[r10],r1
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #3
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r7]
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r0,#4
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r8]
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L0x38
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x1f0
1050c1bc742181ded4930842b46e9507372f0b1b963James DongL0x160:
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r0,#4
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r9,r9,r9
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r7]
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,#4
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r8]
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L0x38
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong    B        L0x1f0
1130c1bc742181ded4930842b46e9507372f0b1b963James DongL0x17c:
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong    BL       armVCM4P10_DeblockingLumabSGE4_unsafe
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d7,d31
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d30,d29
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d24,d25
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.8   d28,d11
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d7,d30
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r0,r1
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d24,d28
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d25,d11
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong    VZIP.16  d31,d29
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d7,d24
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d30,d28
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d31,d25
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTRN.32  d29,d11
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d7},[r0],r11
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24},[r10],r11
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d30},[r0],r11
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d28},[r10],r11
1320c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d31},[r0],r11
1330c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d25},[r10],r11
1340c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r9,r9,r9
1350c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29},[r0],r11
1360c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,#4
1370c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d11},[r10],r11
1380c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #3
1390c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r7]
1400c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r0,#4
1410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r8]
1420c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCC      L0x38
1430c1bc742181ded4930842b46e9507372f0b1b963James DongL0x1f0:
1440c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r4,r4,#0xe
1450c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r5,r5,#0xe
1460c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,#0x10
1470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r2]
1480c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r0,r0,r1,LSL #3
1490c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r3]
1500c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x38
1510c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
1520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
1530c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
1540c1bc742181ded4930842b46e9507372f0b1b963James Dong    .endfunc
1550c1bc742181ded4930842b46e9507372f0b1b963James Dong
1560c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
1570c1bc742181ded4930842b46e9507372f0b1b963James Dong
158