armVCM4P10_Interpolate_Chroma_s.S revision 0c1bc742181ded4930842b46e9507372f0b1b963
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 12 .section .rodata 13 .align 4 14 15armVCM4P10_WidthBranchTableMVIsNotZero: 16 .word WidthIs2MVIsNotZero, WidthIs2MVIsNotZero 17 .word WidthIs4MVIsNotZero, WidthIs4MVIsNotZero 18 .word WidthIs8MVIsNotZero 19 20armVCM4P10_WidthBranchTableMVIsZero: 21 .word WidthIs2MVIsZero, WidthIs2MVIsZero 22 .word WidthIs4MVIsZero, WidthIs4MVIsZero 23 .word WidthIs8MVIsZero 24 25 .text 26 27 .global armVCM4P10_Interpolate_Chroma 28 .func armVCM4P10_Interpolate_Chroma 29armVCM4P10_Interpolate_Chroma: 30 PUSH {r4-r12,lr} 31 VPUSH {d8-d15} 32 LDRD r6,r7,[sp,#0x70] 33 LDRD r4,r5,[sp,#0x68] 34 RSB r8,r6,#8 35 RSB r9,r7,#8 36 CMN r6,r7 37 MOV r10,#1 38 LDREQ r11, =armVCM4P10_WidthBranchTableMVIsZero 39 SUB lr,r1,r10 40 LDRNE r11, =armVCM4P10_WidthBranchTableMVIsNotZero 41 VLD1.8 {d0},[r0],r10 42 SMULBB r12,r8,r9 43 SMULBB r9,r6,r9 44 VLD1.8 {d1},[r0],lr 45 SMULBB r8,r8,r7 46 SMULBB r6,r6,r7 47 VDUP.8 d12,r12 48 VDUP.8 d13,r9 49 VDUP.8 d14,r8 50 VDUP.8 d15,r6 51 LDR pc,[r11,r4,LSL #1] 52 53WidthIs8MVIsNotZero: 54 VLD1.8 {d2},[r0],r10 55 VMULL.U8 q2,d0,d12 56 VLD1.8 {d3},[r0],lr 57 VMULL.U8 q3,d2,d12 58 VLD1.8 {d16},[r0],r10 59 VMLAL.U8 q2,d1,d13 60 VLD1.8 {d17},[r0],lr 61 VMULL.U8 q11,d16,d12 62 VMLAL.U8 q3,d3,d13 63 VLD1.8 {d18},[r0],r10 64 VMLAL.U8 q2,d2,d14 65 VMLAL.U8 q11,d17,d13 66 VMULL.U8 q12,d18,d12 67 VLD1.8 {d19},[r0],lr 68 VMLAL.U8 q3,d16,d14 69 VLD1.8 {d0},[r0],r10 70 VMLAL.U8 q12,d19,d13 71 VMLAL.U8 q11,d18,d14 72 VMLAL.U8 q2,d3,d15 73 VLD1.8 {d1},[r0],lr 74 VMLAL.U8 q12,d0,d14 75 VMLAL.U8 q3,d17,d15 76 VMLAL.U8 q11,d19,d15 77 SUBS r5,r5,#4 78 VMLAL.U8 q12,d1,d15 79 VQRSHRN.U16 d8,q2,#6 80 VQRSHRN.U16 d9,q3,#6 81 VQRSHRN.U16 d20,q11,#6 82 VST1.64 {d8},[r2],r3 83 VQRSHRN.U16 d21,q12,#6 84 VST1.64 {d9},[r2],r3 85 VST1.64 {d20},[r2],r3 86 VST1.64 {d21},[r2],r3 87 BGT WidthIs8MVIsNotZero 88 MOV r0,#0 89 VPOP {d8-d15} 90 POP {r4-r12,pc} 91 92WidthIs4MVIsNotZero: 93 VLD1.8 {d2},[r0],r10 94 VMULL.U8 q2,d0,d12 95 VMULL.U8 q3,d2,d12 96 VLD1.8 {d3},[r0],lr 97 VMLAL.U8 q2,d1,d13 98 VMLAL.U8 q3,d3,d13 99 VLD1.8 {d0},[r0],r10 100 VMLAL.U8 q2,d2,d14 101 VMLAL.U8 q3,d0,d14 102 VLD1.8 {d1},[r0],lr 103 SUBS r5,r5,#2 104 VMLAL.U8 q3,d1,d15 105 VMLAL.U8 q2,d3,d15 106 VQRSHRN.U16 d9,q3,#6 107 VQRSHRN.U16 d8,q2,#6 108 VST1.32 {d8[0]},[r2],r3 109 VST1.32 {d9[0]},[r2],r3 110 BGT WidthIs4MVIsNotZero 111 MOV r0,#0 112 VPOP {d8-d15} 113 POP {r4-r12,pc} 114 115WidthIs2MVIsNotZero: 116 VLD1.8 {d2},[r0],r10 117 VMULL.U8 q2,d0,d12 118 VMULL.U8 q3,d2,d12 119 VLD1.8 {d3},[r0],lr 120 VMLAL.U8 q2,d1,d13 121 VMLAL.U8 q3,d3,d13 122 VLD1.8 {d0},[r0],r10 123 VMLAL.U8 q2,d2,d14 124 VMLAL.U8 q3,d0,d14 125 VLD1.8 {d1},[r0],lr 126 SUBS r5,r5,#2 127 VMLAL.U8 q3,d1,d15 128 VMLAL.U8 q2,d3,d15 129 VQRSHRN.U16 d9,q3,#6 130 VQRSHRN.U16 d8,q2,#6 131 VST1.16 {d8[0]},[r2],r3 132 VST1.16 {d9[0]},[r2],r3 133 BGT WidthIs2MVIsNotZero 134 MOV r0,#0 135 VPOP {d8-d15} 136 POP {r4-r12,pc} 137 138WidthIs8MVIsZero: 139 SUB r0,r0,r1 140WidthIs8LoopMVIsZero: 141 VLD1.8 {d0},[r0],r1 142 SUBS r5,r5,#2 143 VLD1.8 {d1},[r0],r1 144 VST1.64 {d0},[r2],r3 145 VST1.64 {d1},[r2],r3 146 BGT WidthIs8LoopMVIsZero 147 MOV r0,#0 148 VPOP {d8-d15} 149 POP {r4-r12,pc} 150 151WidthIs4MVIsZero: 152 VLD1.8 {d1},[r0],r1 153 SUBS r5,r5,#2 154 VST1.32 {d0[0]},[r2],r3 155 VLD1.8 {d0},[r0],r1 156 VST1.32 {d1[0]},[r2],r3 157 BGT WidthIs4MVIsZero 158 MOV r0,#0 159 VPOP {d8-d15} 160 POP {r4-r12,pc} 161 162WidthIs2MVIsZero: 163 VLD1.8 {d1},[r0],r1 164 SUBS r5,r5,#2 165 VST1.16 {d0[0]},[r2],r3 166 VLD1.8 {d0},[r0],r1 167 VST1.16 {d1[0]},[r2],r3 168 BGT WidthIs2MVIsZero 169 MOV r0,#0 170 VPOP {d8-d15} 171 POP {r4-r12,pc} 172 .endfunc 173 174 .end 175 176