armVCM4P10_InterpolateLuma_HalfDiagVerHor4x4_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_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