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_HalfDiagHorVer4x4_unsafe 29armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe: 30 PUSH {r4-r12,lr} 31 VLD1.8 {d0,d1},[r0],r1 32 VMOV.I16 d31,#0x14 33 VMOV.I16 d30,#0x5 34 VEXT.8 d4,d0,d1,#1 35 VEXT.8 d2,d0,d1,#2 36 VEXT.8 d3,d0,d1,#3 37 VEXT.8 d5,d0,d1,#4 38 VEXT.8 d1,d0,d1,#5 39 VADDL.U8 q1,d2,d3 40 VADDL.U8 q2,d4,d5 41 VADDL.U8 q5,d0,d1 42 VLD1.8 {d0,d1},[r0],r1 43 VMLA.I16 d10,d2,d31 44 VMUL.I16 d8,d4,d30 45 VEXT.8 d4,d0,d1,#1 46 VEXT.8 d2,d0,d1,#2 47 VEXT.8 d3,d0,d1,#3 48 VEXT.8 d5,d0,d1,#4 49 VEXT.8 d1,d0,d1,#5 50 VADDL.U8 q1,d2,d3 51 VADDL.U8 q2,d4,d5 52 VADDL.U8 q6,d0,d1 53 VLD1.8 {d0,d1},[r0],r1 54 VSUB.I16 d10,d10,d8 55 VMLA.I16 d12,d2,d31 56 VMUL.I16 d8,d4,d30 57 VEXT.8 d4,d0,d1,#1 58 VEXT.8 d2,d0,d1,#2 59 VEXT.8 d3,d0,d1,#3 60 VEXT.8 d5,d0,d1,#4 61 VEXT.8 d1,d0,d1,#5 62 VADDL.U8 q1,d2,d3 63 VADDL.U8 q2,d4,d5 64 VADDL.U8 q7,d0,d1 65 VLD1.8 {d0,d1},[r0],r1 66 VSUB.I16 d12,d12,d8 67 VMLA.I16 d14,d2,d31 68 VMUL.I16 d8,d4,d30 69 VEXT.8 d4,d0,d1,#1 70 VEXT.8 d2,d0,d1,#2 71 VEXT.8 d3,d0,d1,#3 72 VEXT.8 d5,d0,d1,#4 73 VEXT.8 d1,d0,d1,#5 74 VADDL.U8 q1,d2,d3 75 VADDL.U8 q2,d4,d5 76 VADDL.U8 q8,d0,d1 77 VLD1.8 {d0,d1},[r0],r1 78 VSUB.I16 d14,d14,d8 79 VMLA.I16 d16,d2,d31 80 VMUL.I16 d8,d4,d30 81 VEXT.8 d4,d0,d1,#1 82 VEXT.8 d2,d0,d1,#2 83 VEXT.8 d3,d0,d1,#3 84 VEXT.8 d5,d0,d1,#4 85 VEXT.8 d1,d0,d1,#5 86 VADDL.U8 q1,d2,d3 87 VADDL.U8 q2,d4,d5 88 VADDL.U8 q9,d0,d1 89 VLD1.8 {d0,d1},[r0],r1 90 VSUB.I16 d16,d16,d8 91 VMLA.I16 d18,d2,d31 92 VMUL.I16 d8,d4,d30 93 VEXT.8 d4,d0,d1,#1 94 VEXT.8 d2,d0,d1,#2 95 VEXT.8 d3,d0,d1,#3 96 VEXT.8 d5,d0,d1,#4 97 VEXT.8 d1,d0,d1,#5 98 VADDL.U8 q1,d2,d3 99 VADDL.U8 q2,d4,d5 100 VADDL.U8 q10,d0,d1 101 VLD1.8 {d0,d1},[r0],r1 102 VSUB.I16 d18,d18,d8 103 VMLA.I16 d20,d2,d31 104 VMUL.I16 d8,d4,d30 105 VEXT.8 d4,d0,d1,#1 106 VEXT.8 d2,d0,d1,#2 107 VEXT.8 d3,d0,d1,#3 108 VEXT.8 d5,d0,d1,#4 109 VEXT.8 d1,d0,d1,#5 110 VADDL.U8 q1,d2,d3 111 VADDL.U8 q2,d4,d5 112 VADDL.U8 q11,d0,d1 113 VLD1.8 {d0,d1},[r0],r1 114 VSUB.I16 d20,d20,d8 115 VMLA.I16 d22,d2,d31 116 VMUL.I16 d8,d4,d30 117 VEXT.8 d4,d0,d1,#1 118 VEXT.8 d2,d0,d1,#2 119 VEXT.8 d3,d0,d1,#3 120 VEXT.8 d5,d0,d1,#4 121 VEXT.8 d1,d0,d1,#5 122 VADDL.U8 q1,d2,d3 123 VADDL.U8 q2,d4,d5 124 VADDL.U8 q12,d0,d1 125 VLD1.8 {d0,d1},[r0],r1 126 VSUB.I16 d22,d22,d8 127 VMLA.I16 d24,d2,d31 128 VMUL.I16 d8,d4,d30 129 VEXT.8 d4,d0,d1,#1 130 VEXT.8 d2,d0,d1,#2 131 VEXT.8 d3,d0,d1,#3 132 VEXT.8 d5,d0,d1,#4 133 VEXT.8 d1,d0,d1,#5 134 VADDL.U8 q1,d2,d3 135 VADDL.U8 q2,d4,d5 136 VADDL.U8 q13,d0,d1 137 VSUB.I16 d24,d24,d8 138 VMLA.I16 d26,d2,d31 139 VMUL.I16 d8,d4,d30 140 VMOV.I32 q15,#0x14 141 VMOV.I32 q14,#0x5 142 VADDL.S16 q5,d10,d20 143 VADDL.S16 q1,d14,d16 144 VADDL.S16 q0,d12,d18 145 VSUB.I16 d26,d26,d8 146 VMLA.I32 q5,q1,q15 147 VMUL.I32 q4,q0,q14 148 VADDL.S16 q6,d12,d22 149 VADDL.S16 q1,d16,d18 150 VADDL.S16 q0,d14,d20 151 VMLA.I32 q6,q1,q15 152 VSUB.I32 q5,q5,q4 153 VMUL.I32 q4,q0,q14 154 VADDL.S16 q2,d14,d24 155 VADDL.S16 q1,d18,d20 156 VADDL.S16 q0,d16,d22 157 VMLA.I32 q2,q1,q15 158 VSUB.I32 q6,q6,q4 159 VMUL.I32 q4,q0,q14 160 VADDL.S16 q3,d16,d26 161 VADDL.S16 q1,d20,d22 162 VADDL.S16 q0,d18,d24 163 VMLA.I32 q3,q1,q15 164 VSUB.I32 q2,q2,q4 165 VMLS.I32 q3,q0,q14 166 VQRSHRUN.S32 d0,q5,#10 167 VQRSHRUN.S32 d2,q6,#10 168 VQRSHRUN.S32 d4,q2,#10 169 VQRSHRUN.S32 d6,q3,#10 170 VQMOVN.U16 d0,q0 171 VQMOVN.U16 d2,q1 172 VQMOVN.U16 d4,q2 173 VQMOVN.U16 d6,q3 174 POP {r4-r12,pc} 175 176 .end 177 178