1/* 2 * Copyright (C) 2007-2008 ARM Limited 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * 16 */ 17/* 18 * 19 */ 20 21 .eabi_attribute 24, 1 22 .eabi_attribute 25, 1 23 24 .arm 25 .fpu neon 26 .text 27 28 .global armVCM4P10_InterpolateLuma_HalfDiagVerHor4x4_unsafe 29 .func armVCM4P10_InterpolateLuma_HalfDiagVerHor4x4_unsafe 30armVCM4P10_InterpolateLuma_HalfDiagVerHor4x4_unsafe: 31 PUSH {r4-r12,lr} 32 VLD1.8 {d0,d1},[r0],r1 33 ADD r12,r0,r1,LSL #2 34 VMOV.I8 d30,#0x5 35 VMOV.I8 d31,#0x14 36 VLD1.8 {d10,d11},[r12],r1 37 VLD1.8 {d2,d3},[r0],r1 38 VLD1.8 {d12,d13},[r12],r1 39 VADDL.U8 q9,d0,d10 40 VLD1.8 {d4,d5},[r0],r1 41 VADDL.U8 q0,d1,d11 42 VLD1.8 {d6,d7},[r0],r1 43 VADDL.U8 q10,d2,d12 44 VLD1.8 {d8,d9},[r0],r1 45 VMLAL.U8 q9,d4,d31 46 VLD1.8 {d14,d15},[r12],r1 47 VMLAL.U8 q0,d5,d31 48 VLD1.8 {d16,d17},[r12],r1 49 VMLAL.U8 q9,d6,d31 50 VMLAL.U8 q10,d6,d31 51 VMLSL.U8 q0,d3,d30 52 VADDL.U8 q11,d4,d14 53 VMLSL.U8 q9,d2,d30 54 VADDL.U8 q1,d3,d13 55 VMLAL.U8 q0,d7,d31 56 VMLAL.U8 q10,d8,d31 57 VMLSL.U8 q9,d8,d30 58 VMLAL.U8 q1,d7,d31 59 VMLSL.U8 q0,d9,d30 60 VMLAL.U8 q11,d8,d31 61 VMLSL.U8 q10,d4,d30 62 VMLSL.U8 q1,d5,d30 63 VADDL.U8 q2,d5,d15 64 VMLAL.U8 q11,d10,d31 65 VMLSL.U8 q10,d10,d30 66 VMLAL.U8 q1,d9,d31 67 VMLAL.U8 q2,d9,d31 68 VADDL.U8 q12,d6,d16 69 VMLSL.U8 q11,d6,d30 70 VMLSL.U8 q1,d11,d30 71 VMLSL.U8 q2,d7,d30 72 VADDL.U8 q3,d7,d17 73 VMLAL.U8 q12,d10,d31 74 VMLSL.U8 q11,d12,d30 75 VMLSL.U8 q2,d13,d30 76 VMLAL.U8 q3,d11,d31 77 VMLAL.U8 q12,d12,d31 78 VEXT.8 d26,d18,d19,#2 79 VMLAL.U8 q2,d11,d31 80 VMLAL.U8 q3,d13,d31 81 VMLSL.U8 q12,d8,d30 82 VEXT.8 d27,d18,d19,#4 83 VMOV.I16 d31,#0x14 84 VMLSL.U8 q3,d9,d30 85 VMLSL.U8 q12,d14,d30 86 VEXT.8 d29,d19,d0,#2 87 VEXT.8 d28,d18,d19,#6 88 VMLSL.U8 q3,d15,d30 89 VADDL.S16 q0,d18,d29 90 VADD.I16 d27,d27,d28 91 VMOV.I16 d30,#0x5 92 VADD.I16 d26,d26,d19 93 VMLAL.S16 q0,d27,d31 94 VEXT.8 d27,d20,d21,#4 95 VEXT.8 d28,d20,d21,#6 96 VEXT.8 d29,d21,d2,#2 97 VMLSL.S16 q0,d26,d30 98 VEXT.8 d26,d20,d21,#2 99 VADDL.S16 q1,d20,d29 100 VADD.I16 d27,d27,d28 101 VADD.I16 d26,d26,d21 102 VEXT.8 d28,d22,d23,#6 103 VMLAL.S16 q1,d27,d31 104 VEXT.8 d29,d23,d4,#2 105 VEXT.8 d27,d22,d23,#4 106 VEXT.8 d8,d22,d23,#2 107 VADDL.S16 q2,d22,d29 108 VMLSL.S16 q1,d26,d30 109 VADD.I16 d27,d27,d28 110 VADD.I16 d26,d8,d23 111 VEXT.8 d28,d24,d25,#6 112 VMLAL.S16 q2,d27,d31 113 VEXT.8 d27,d24,d25,#4 114 VEXT.8 d29,d25,d6,#2 115 VADD.I16 d27,d27,d28 116 VEXT.8 d8,d24,d25,#2 117 VADDL.S16 q3,d24,d29 118 VMLSL.S16 q2,d26,d30 119 VMLAL.S16 q3,d27,d31 120 VADD.I16 d8,d8,d25 121 VMLSL.S16 q3,d8,d30 122 VQRSHRUN.S32 d0,q0,#10 123 VQRSHRUN.S32 d2,q1,#10 124 VQRSHRUN.S32 d4,q2,#10 125 VQRSHRUN.S32 d6,q3,#10 126 VQMOVN.U16 d0,q0 127 VQMOVN.U16 d2,q1 128 VQMOVN.U16 d4,q2 129 VQMOVN.U16 d6,q3 130 POP {r4-r12,pc} 131 .endfunc 132 133 .end 134 135