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