armVCM4P10_InterpolateLuma_HalfDiagVerHor4x4_unsafe_s.S revision 7ea582e1dbdd9a88b2105fbe29ed0ec92cbf70c6
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
29armVCM4P10_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