[go: nahoru, domu]

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