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