1 /* 2 * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 3 * 4 */ 5 6 .eabi_attribute 24, 1 7 .eabi_attribute 25, 1 8 9 .arm 10 .fpu neon 11 .text 12 13 .global omxVCM4P10_FilterDeblockingChroma_VerEdge_I 14 .func omxVCM4P10_FilterDeblockingChroma_VerEdge_I 15 omxVCM4P10_FilterDeblockingChroma_VerEdge_I: 16 PUSH {r4-r12,lr} 17 VPUSH {d8-d15} 18 VLD1.8 {d0[]},[r2]! 19 SUB r0,r0,#4 20 VLD1.8 {d2[]},[r3]! 21 LDR r4,[sp,#0x6c] 22 LDR r5,[sp,#0x68] 23 LDR r8, =0x4040404 24 LDR r9, =0x3030303 25 VMOV.I8 d14,#0 26 VMOV.I8 d15,#0x1 27 VMOV.I16 d1,#0x4 28 MOV r7,#0x40000000 29 L0x34: 30 LDR r6,[r4],#8 31 ADD r10,r0,r1 32 ADD lr,r1,r1 33 VLD1.8 {d7},[r0],lr 34 VLD1.8 {d8},[r10],lr 35 VLD1.8 {d5},[r0],lr 36 VLD1.8 {d10},[r10],lr 37 VLD1.8 {d6},[r0],lr 38 VLD1.8 {d9},[r10],lr 39 VLD1.8 {d4},[r0],lr 40 VLD1.8 {d11},[r10],lr 41 VZIP.8 d7,d8 42 VZIP.8 d5,d10 43 VZIP.8 d6,d9 44 VZIP.8 d4,d11 45 VZIP.16 d7,d5 46 VZIP.16 d8,d10 47 VZIP.16 d6,d4 48 VZIP.16 d9,d11 49 VTRN.32 d7,d6 50 VTRN.32 d5,d4 51 VTRN.32 d10,d11 52 VTRN.32 d8,d9 53 CMP r6,#0 54 VABD.U8 d19,d6,d4 55 VABD.U8 d13,d4,d8 56 BEQ L0x170 57 VABD.U8 d12,d5,d4 58 VABD.U8 d18,d9,d8 59 VMOV.32 d26[0],r6 60 VCGT.U8 d16,d0,d13 61 VMAX.U8 d12,d18,d12 62 VMOVL.U8 q13,d26 63 VABD.U8 d17,d10,d8 64 VCGT.S16 d27,d26,#0 65 VCGT.U8 d12,d2,d12 66 VCGT.U8 d19,d2,d19 67 VAND d16,d16,d27 68 TST r6,r9 69 VCGT.U8 d17,d2,d17 70 VAND d16,d16,d12 71 VAND d12,d16,d17 72 VAND d17,d16,d19 73 BLNE armVCM4P10_DeblockingChromabSLT4_unsafe 74 TST r6,r8 75 SUB r0,r0,r1,LSL #3 76 VTST.16 d26,d26,d1 77 BLNE armVCM4P10_DeblockingChromabSGE4_unsafe 78 VBIT d29,d13,d26 79 VBIT d24,d31,d26 80 ADD r10,r0,#3 81 VBIF d29,d4,d16 82 ADD r12,r10,r1 83 ADD lr,r1,r1 84 VBIF d24,d8,d16 85 ADDS r7,r7,r7 86 VST1.8 {d29[0]},[r10],lr 87 VST1.8 {d29[1]},[r12],lr 88 VST1.8 {d29[2]},[r10],lr 89 VST1.8 {d29[3]},[r12],lr 90 VST1.8 {d29[4]},[r10],lr 91 VST1.8 {d29[5]},[r12],lr 92 VST1.8 {d29[6]},[r10],lr 93 VST1.8 {d29[7]},[r12],lr 94 ADD r12,r0,#4 95 ADD r10,r12,r1 96 VST1.8 {d24[0]},[r12],lr 97 VST1.8 {d24[1]},[r10],lr 98 VST1.8 {d24[2]},[r12],lr 99 VST1.8 {d24[3]},[r10],lr 100 VST1.8 {d24[4]},[r12],lr 101 VST1.8 {d24[5]},[r10],lr 102 VST1.8 {d24[6]},[r12],lr 103 VST1.8 {d24[7]},[r10],lr 104 ADD r0,r0,#4 105 BNE L0x34 106 MOV r0,#0 107 VPOP {d8-d15} 108 POP {r4-r12,pc} 109 L0x170: 110 VLD1.8 {d0[]},[r2] 111 ADD r0,r0,#4 112 SUB r0,r0,r1,LSL #3 113 ADDS r7,r7,r7 114 VLD1.8 {d2[]},[r3] 115 ADD r5,r5,#4 116 BNE L0x34 117 MOV r0,#0 118 VPOP {d8-d15} 119 POP {r4-r12,pc} 120 .endfunc 121 122 .end 123 124