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