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 armVCM4P10_InterpolateLuma_HalfDiagVerHor4x4_unsafe: 30 PUSH {r4-r12,lr} 31 VLD1.8 {d0,d1},[r0],r1 32 ADD r12,r0,r1,LSL #2 33 VMOV.I8 d30,#0x5 34 VMOV.I8 d31,#0x14 35 VLD1.8 {d10,d11},[r12],r1 36 VLD1.8 {d2,d3},[r0],r1 37 VLD1.8 {d12,d13},[r12],r1 38 VADDL.U8 q9,d0,d10 39 VLD1.8 {d4,d5},[r0],r1 40 VADDL.U8 q0,d1,d11 41 VLD1.8 {d6,d7},[r0],r1 42 VADDL.U8 q10,d2,d12 43 VLD1.8 {d8,d9},[r0],r1 44 VMLAL.U8 q9,d4,d31 45 VLD1.8 {d14,d15},[r12],r1 46 VMLAL.U8 q0,d5,d31 47 VLD1.8 {d16,d17},[r12],r1 48 VMLAL.U8 q9,d6,d31 49 VMLAL.U8 q10,d6,d31 50 VMLSL.U8 q0,d3,d30 51 VADDL.U8 q11,d4,d14 52 VMLSL.U8 q9,d2,d30 53 VADDL.U8 q1,d3,d13 54 VMLAL.U8 q0,d7,d31 55 VMLAL.U8 q10,d8,d31 56 VMLSL.U8 q9,d8,d30 57 VMLAL.U8 q1,d7,d31 58 VMLSL.U8 q0,d9,d30 59 VMLAL.U8 q11,d8,d31 60 VMLSL.U8 q10,d4,d30 61 VMLSL.U8 q1,d5,d30 62 VADDL.U8 q2,d5,d15 63 VMLAL.U8 q11,d10,d31 64 VMLSL.U8 q10,d10,d30 65 VMLAL.U8 q1,d9,d31 66 VMLAL.U8 q2,d9,d31 67 VADDL.U8 q12,d6,d16 68 VMLSL.U8 q11,d6,d30 69 VMLSL.U8 q1,d11,d30 70 VMLSL.U8 q2,d7,d30 71 VADDL.U8 q3,d7,d17 72 VMLAL.U8 q12,d10,d31 73 VMLSL.U8 q11,d12,d30 74 VMLSL.U8 q2,d13,d30 75 VMLAL.U8 q3,d11,d31 76 VMLAL.U8 q12,d12,d31 77 VEXT.8 d26,d18,d19,#2 78 VMLAL.U8 q2,d11,d31 79 VMLAL.U8 q3,d13,d31 80 VMLSL.U8 q12,d8,d30 81 VEXT.8 d27,d18,d19,#4 82 VMOV.I16 d31,#0x14 83 VMLSL.U8 q3,d9,d30 84 VMLSL.U8 q12,d14,d30 85 VEXT.8 d29,d19,d0,#2 86 VEXT.8 d28,d18,d19,#6 87 VMLSL.U8 q3,d15,d30 88 VADDL.S16 q0,d18,d29 89 VADD.I16 d27,d27,d28 90 VMOV.I16 d30,#0x5 91 VADD.I16 d26,d26,d19 92 VMLAL.S16 q0,d27,d31 93 VEXT.8 d27,d20,d21,#4 94 VEXT.8 d28,d20,d21,#6 95 VEXT.8 d29,d21,d2,#2 96 VMLSL.S16 q0,d26,d30 97 VEXT.8 d26,d20,d21,#2 98 VADDL.S16 q1,d20,d29 99 VADD.I16 d27,d27,d28 100 VADD.I16 d26,d26,d21 101 VEXT.8 d28,d22,d23,#6 102 VMLAL.S16 q1,d27,d31 103 VEXT.8 d29,d23,d4,#2 104 VEXT.8 d27,d22,d23,#4 105 VEXT.8 d8,d22,d23,#2 106 VADDL.S16 q2,d22,d29 107 VMLSL.S16 q1,d26,d30 108 VADD.I16 d27,d27,d28 109 VADD.I16 d26,d8,d23 110 VEXT.8 d28,d24,d25,#6 111 VMLAL.S16 q2,d27,d31 112 VEXT.8 d27,d24,d25,#4 113 VEXT.8 d29,d25,d6,#2 114 VADD.I16 d27,d27,d28 115 VEXT.8 d8,d24,d25,#2 116 VADDL.S16 q3,d24,d29 117 VMLSL.S16 q2,d26,d30 118 VMLAL.S16 q3,d27,d31 119 VADD.I16 d8,d8,d25 120 VMLSL.S16 q3,d8,d30 121 VQRSHRUN.S32 d0,q0,#10 122 VQRSHRUN.S32 d2,q1,#10 123 VQRSHRUN.S32 d4,q2,#10 124 VQRSHRUN.S32 d6,q3,#10 125 VQMOVN.U16 d0,q0 126 VQMOVN.U16 d2,q1 127 VQMOVN.U16 d4,q2 128 VQMOVN.U16 d6,q3 129 POP {r4-r12,pc} 130 131 .end 132 133