omxVCM4P10_FilterDeblockingChroma_HorEdge_I_s.S revision 0c1bc742181ded4930842b46e9507372f0b1b963
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_FilterDeblockingChroma_HorEdge_I
140c1bc742181ded4930842b46e9507372f0b1b963James Dong    .func   omxVCM4P10_FilterDeblockingChroma_HorEdge_I
150c1bc742181ded4930842b46e9507372f0b1b963James DongomxVCM4P10_FilterDeblockingChroma_HorEdge_I:
160c1bc742181ded4930842b46e9507372f0b1b963James Dong    PUSH     {r4-r10,lr}
170c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPUSH    {d8-d15}
180c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r2]!
190c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #1
200c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1
210c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r3]!
220c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r4,[sp,#0x64]
230c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r5,[sp,#0x60]
240c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r9, =0x3030303
250c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r8, =0x4040404
260c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d14,#0
270c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d15,#0x1
280c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I16 d1,#0x4
290c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r7,#0x40000000
300c1bc742181ded4930842b46e9507372f0b1b963James DongL0x38:
310c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r6,[r4],#8
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d6},[r0],r1
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d5},[r0],r1
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r6,#0
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d4},[r0],r1
360c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d8},[r0],r1
370c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d19,d6,d4
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d9},[r0],r1
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d13,d4,d8
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d10},[r0],r1
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0xe4
420c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d12,d5,d4
430c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d18,d9,d8
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d16,d0,d13
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.32  d26[0],r6
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMAX.U8  d12,d18,d12
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOVL.U8 q13,d26
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    VABD.U8  d17,d10,d8
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.S16 d27,d26,#0
500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d12,d2,d12
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d19,d2,d19
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d16,d16,d27
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r6,r9
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VCGT.U8  d17,d2,d17
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d16,d16,d12
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d12,d16,d17
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VAND     d17,d16,d19
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    BLNE     armVCM4P10_DeblockingChromabSLT4_unsafe
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r6,r8
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #2
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VTST.16  d26,d26,d1
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    BLNE     armVCM4P10_DeblockingChromabSGE4_unsafe
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIT     d29,d13,d26
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIT     d24,d31,d26
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIF     d29,d4,d16
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VBIF     d24,d8,d16
670c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d29},[r0],r1
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r7,r7,r7
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d24},[r0],r1
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x38
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r10,pc}
740c1bc742181ded4930842b46e9507372f0b1b963James DongL0xe4:
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[]},[r2]
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUB      r0,r0,r1,LSL #1
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADDS     r7,r7,r7
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[]},[r3]
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,#4
800c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x38
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r10,pc}
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    .endfunc
850c1bc742181ded4930842b46e9507372f0b1b963James Dong
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
870c1bc742181ded4930842b46e9507372f0b1b963James Dong
88