armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe_s.S revision 0c1bc742181ded4930842b46e9507372f0b1b963
1/*
2 * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
3 *
4 */
5
6    .eabi_attribute 24, 1
7    .eabi_attribute 25, 1
8
9    .arm
10    .fpu neon
11    .text
12
13    .global armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe
14    .func   armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe
15armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe:
16    PUSH     {r4-r12,lr}
17    VLD1.8   {d0,d1},[r0],r1
18    VMOV.I16 d31,#0x14
19    VMOV.I16 d30,#0x5
20    VEXT.8   d4,d0,d1,#1
21    VEXT.8   d2,d0,d1,#2
22    VEXT.8   d3,d0,d1,#3
23    VEXT.8   d5,d0,d1,#4
24    VEXT.8   d1,d0,d1,#5
25    VADDL.U8 q1,d2,d3
26    VADDL.U8 q2,d4,d5
27    VADDL.U8 q5,d0,d1
28    VLD1.8   {d0,d1},[r0],r1
29    VMLA.I16 d10,d2,d31
30    VMUL.I16 d8,d4,d30
31    VEXT.8   d4,d0,d1,#1
32    VEXT.8   d2,d0,d1,#2
33    VEXT.8   d3,d0,d1,#3
34    VEXT.8   d5,d0,d1,#4
35    VEXT.8   d1,d0,d1,#5
36    VADDL.U8 q1,d2,d3
37    VADDL.U8 q2,d4,d5
38    VADDL.U8 q6,d0,d1
39    VLD1.8   {d0,d1},[r0],r1
40    VSUB.I16 d10,d10,d8
41    VMLA.I16 d12,d2,d31
42    VMUL.I16 d8,d4,d30
43    VEXT.8   d4,d0,d1,#1
44    VEXT.8   d2,d0,d1,#2
45    VEXT.8   d3,d0,d1,#3
46    VEXT.8   d5,d0,d1,#4
47    VEXT.8   d1,d0,d1,#5
48    VADDL.U8 q1,d2,d3
49    VADDL.U8 q2,d4,d5
50    VADDL.U8 q7,d0,d1
51    VLD1.8   {d0,d1},[r0],r1
52    VSUB.I16 d12,d12,d8
53    VMLA.I16 d14,d2,d31
54    VMUL.I16 d8,d4,d30
55    VEXT.8   d4,d0,d1,#1
56    VEXT.8   d2,d0,d1,#2
57    VEXT.8   d3,d0,d1,#3
58    VEXT.8   d5,d0,d1,#4
59    VEXT.8   d1,d0,d1,#5
60    VADDL.U8 q1,d2,d3
61    VADDL.U8 q2,d4,d5
62    VADDL.U8 q8,d0,d1
63    VLD1.8   {d0,d1},[r0],r1
64    VSUB.I16 d14,d14,d8
65    VMLA.I16 d16,d2,d31
66    VMUL.I16 d8,d4,d30
67    VEXT.8   d4,d0,d1,#1
68    VEXT.8   d2,d0,d1,#2
69    VEXT.8   d3,d0,d1,#3
70    VEXT.8   d5,d0,d1,#4
71    VEXT.8   d1,d0,d1,#5
72    VADDL.U8 q1,d2,d3
73    VADDL.U8 q2,d4,d5
74    VADDL.U8 q9,d0,d1
75    VLD1.8   {d0,d1},[r0],r1
76    VSUB.I16 d16,d16,d8
77    VMLA.I16 d18,d2,d31
78    VMUL.I16 d8,d4,d30
79    VEXT.8   d4,d0,d1,#1
80    VEXT.8   d2,d0,d1,#2
81    VEXT.8   d3,d0,d1,#3
82    VEXT.8   d5,d0,d1,#4
83    VEXT.8   d1,d0,d1,#5
84    VADDL.U8 q1,d2,d3
85    VADDL.U8 q2,d4,d5
86    VADDL.U8 q10,d0,d1
87    VLD1.8   {d0,d1},[r0],r1
88    VSUB.I16 d18,d18,d8
89    VMLA.I16 d20,d2,d31
90    VMUL.I16 d8,d4,d30
91    VEXT.8   d4,d0,d1,#1
92    VEXT.8   d2,d0,d1,#2
93    VEXT.8   d3,d0,d1,#3
94    VEXT.8   d5,d0,d1,#4
95    VEXT.8   d1,d0,d1,#5
96    VADDL.U8 q1,d2,d3
97    VADDL.U8 q2,d4,d5
98    VADDL.U8 q11,d0,d1
99    VLD1.8   {d0,d1},[r0],r1
100    VSUB.I16 d20,d20,d8
101    VMLA.I16 d22,d2,d31
102    VMUL.I16 d8,d4,d30
103    VEXT.8   d4,d0,d1,#1
104    VEXT.8   d2,d0,d1,#2
105    VEXT.8   d3,d0,d1,#3
106    VEXT.8   d5,d0,d1,#4
107    VEXT.8   d1,d0,d1,#5
108    VADDL.U8 q1,d2,d3
109    VADDL.U8 q2,d4,d5
110    VADDL.U8 q12,d0,d1
111    VLD1.8   {d0,d1},[r0],r1
112    VSUB.I16 d22,d22,d8
113    VMLA.I16 d24,d2,d31
114    VMUL.I16 d8,d4,d30
115    VEXT.8   d4,d0,d1,#1
116    VEXT.8   d2,d0,d1,#2
117    VEXT.8   d3,d0,d1,#3
118    VEXT.8   d5,d0,d1,#4
119    VEXT.8   d1,d0,d1,#5
120    VADDL.U8 q1,d2,d3
121    VADDL.U8 q2,d4,d5
122    VADDL.U8 q13,d0,d1
123    VSUB.I16 d24,d24,d8
124    VMLA.I16 d26,d2,d31
125    VMUL.I16 d8,d4,d30
126    VMOV.I32 q15,#0x14
127    VMOV.I32 q14,#0x5
128    VADDL.S16 q5,d10,d20
129    VADDL.S16 q1,d14,d16
130    VADDL.S16 q0,d12,d18
131    VSUB.I16 d26,d26,d8
132    VMLA.I32 q5,q1,q15
133    VMUL.I32 q4,q0,q14
134    VADDL.S16 q6,d12,d22
135    VADDL.S16 q1,d16,d18
136    VADDL.S16 q0,d14,d20
137    VMLA.I32 q6,q1,q15
138    VSUB.I32 q5,q5,q4
139    VMUL.I32 q4,q0,q14
140    VADDL.S16 q2,d14,d24
141    VADDL.S16 q1,d18,d20
142    VADDL.S16 q0,d16,d22
143    VMLA.I32 q2,q1,q15
144    VSUB.I32 q6,q6,q4
145    VMUL.I32 q4,q0,q14
146    VADDL.S16 q3,d16,d26
147    VADDL.S16 q1,d20,d22
148    VADDL.S16 q0,d18,d24
149    VMLA.I32 q3,q1,q15
150    VSUB.I32 q2,q2,q4
151    VMLS.I32 q3,q0,q14
152    VQRSHRUN.S32 d0,q5,#10
153    VQRSHRUN.S32 d2,q6,#10
154    VQRSHRUN.S32 d4,q2,#10
155    VQRSHRUN.S32 d6,q3,#10
156    VQMOVN.U16 d0,q0
157    VQMOVN.U16 d2,q1
158    VQMOVN.U16 d4,q2
159    VQMOVN.U16 d6,q3
160    POP      {r4-r12,pc}
161    .endfunc
162
163    .end
164
165