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_FilterDeblockingLuma_VerEdge_I 14 .func omxVCM4P10_FilterDeblockingLuma_VerEdge_I 15omxVCM4P10_FilterDeblockingLuma_VerEdge_I: 16 PUSH {r4-r12,lr} 17 VPUSH {d8-d15} 18 ADD r7,r2,#1 19 ADD r8,r3,#1 20 VLD1.8 {d0[]},[r2] 21 SUB r0,r0,#4 22 VLD1.8 {d2[]},[r3] 23 LDR r4,[sp,#0x6c] 24 LDR r5,[sp,#0x68] 25 MOV r6,#0 26 VMOV.I8 d14,#0 27 VMOV.I8 d15,#0x1 28 MOV r9,#0x11000000 29 ADD r11,r1,r1 30L0x38: 31 LDRH r12,[r4],#4 32 CMP r12,#0 33 BEQ L0x160 34 ADD r10,r0,r1 35 VLD1.8 {d7},[r0],r11 36 VLD1.8 {d8},[r10],r11 37 VLD1.8 {d5},[r0],r11 38 VZIP.8 d7,d8 39 VLD1.8 {d10},[r10],r11 40 VLD1.8 {d6},[r0],r11 41 VZIP.8 d5,d10 42 VLD1.8 {d9},[r10],r11 43 VLD1.8 {d4},[r0],r11 44 VLD1.8 {d11},[r10],r11 45 VZIP.8 d6,d9 46 VZIP.16 d8,d10 47 VZIP.8 d4,d11 48 SUB r0,r0,r1,LSL #3 49 VZIP.16 d7,d5 50 VZIP.16 d9,d11 51 VZIP.16 d6,d4 52 VTRN.32 d8,d9 53 VTRN.32 d5,d4 54 VTRN.32 d10,d11 55 VTRN.32 d7,d6 56 VABD.U8 d13,d4,d8 57 VABD.U8 d12,d5,d4 58 VABD.U8 d18,d9,d8 59 VABD.U8 d19,d6,d4 60 TST r12,#0xff 61 VCGT.U8 d16,d0,d13 62 VMAX.U8 d12,d18,d12 63 VABD.U8 d17,d10,d8 64 VMOVEQ.32 d16[0],r6 65 TST r12,#0xff00 66 VCGT.U8 d19,d2,d19 67 VCGT.U8 d12,d2,d12 68 VMOVEQ.32 d16[1],r6 69 VCGT.U8 d17,d2,d17 70 VAND d16,d16,d12 71 TST r12,#4 72 VAND d12,d16,d17 73 VAND d17,d16,d19 74 BNE L0x17c 75 BL armVCM4P10_DeblockingLumabSLT4_unsafe 76 VZIP.8 d7,d6 77 VZIP.8 d30,d29 78 VZIP.8 d24,d25 79 VZIP.8 d10,d11 80 VZIP.16 d7,d30 81 ADD r10,r0,r1 82 VZIP.16 d24,d10 83 VZIP.16 d25,d11 84 VZIP.16 d6,d29 85 VTRN.32 d7,d24 86 VTRN.32 d30,d10 87 VTRN.32 d6,d25 88 VTRN.32 d29,d11 89 VST1.8 {d7},[r0],r11 90 VST1.8 {d24},[r10],r11 91 VST1.8 {d30},[r0],r11 92 VST1.8 {d10},[r10],r11 93 VST1.8 {d6},[r0],r11 94 VST1.8 {d25},[r10],r11 95 ADDS r9,r9,r9 96 VST1.8 {d29},[r0],r11 97 ADD r5,r5,#2 98 VST1.8 {d11},[r10],r1 99 SUB r0,r0,r1,LSL #3 100 VLD1.8 {d0[]},[r7] 101 ADD r0,r0,#4 102 VLD1.8 {d2[]},[r8] 103 BCC L0x38 104 B L0x1f0 105L0x160: 106 ADD r0,r0,#4 107 ADDS r9,r9,r9 108 VLD1.8 {d0[]},[r7] 109 ADD r5,r5,#4 110 VLD1.8 {d2[]},[r8] 111 BCC L0x38 112 B L0x1f0 113L0x17c: 114 BL armVCM4P10_DeblockingLumabSGE4_unsafe 115 VZIP.8 d7,d31 116 VZIP.8 d30,d29 117 VZIP.8 d24,d25 118 VZIP.8 d28,d11 119 VZIP.16 d7,d30 120 ADD r10,r0,r1 121 VZIP.16 d24,d28 122 VZIP.16 d25,d11 123 VZIP.16 d31,d29 124 VTRN.32 d7,d24 125 VTRN.32 d30,d28 126 VTRN.32 d31,d25 127 VTRN.32 d29,d11 128 VST1.8 {d7},[r0],r11 129 VST1.8 {d24},[r10],r11 130 VST1.8 {d30},[r0],r11 131 VST1.8 {d28},[r10],r11 132 VST1.8 {d31},[r0],r11 133 VST1.8 {d25},[r10],r11 134 ADDS r9,r9,r9 135 VST1.8 {d29},[r0],r11 136 ADD r5,r5,#4 137 VST1.8 {d11},[r10],r11 138 SUB r0,r0,r1,LSL #3 139 VLD1.8 {d0[]},[r7] 140 ADD r0,r0,#4 141 VLD1.8 {d2[]},[r8] 142 BCC L0x38 143L0x1f0: 144 SUB r4,r4,#0xe 145 SUB r5,r5,#0xe 146 SUB r0,r0,#0x10 147 VLD1.8 {d0[]},[r2] 148 ADD r0,r0,r1,LSL #3 149 VLD1.8 {d2[]},[r3] 150 BNE L0x38 151 MOV r0,#0 152 VPOP {d8-d15} 153 POP {r4-r12,pc} 154 .endfunc 155 156 .end 157 158