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_HalfDiagVerHor4x4_unsafe
14    .func   armVCM4P10_InterpolateLuma_HalfDiagVerHor4x4_unsafe
15armVCM4P10_InterpolateLuma_HalfDiagVerHor4x4_unsafe:
16    PUSH     {r4-r12,lr}
17    VLD1.8   {d0,d1},[r0],r1
18    ADD      r12,r0,r1,LSL #2
19    VMOV.I8  d30,#0x5
20    VMOV.I8  d31,#0x14
21    VLD1.8   {d10,d11},[r12],r1
22    VLD1.8   {d2,d3},[r0],r1
23    VLD1.8   {d12,d13},[r12],r1
24    VADDL.U8 q9,d0,d10
25    VLD1.8   {d4,d5},[r0],r1
26    VADDL.U8 q0,d1,d11
27    VLD1.8   {d6,d7},[r0],r1
28    VADDL.U8 q10,d2,d12
29    VLD1.8   {d8,d9},[r0],r1
30    VMLAL.U8 q9,d4,d31
31    VLD1.8   {d14,d15},[r12],r1
32    VMLAL.U8 q0,d5,d31
33    VLD1.8   {d16,d17},[r12],r1
34    VMLAL.U8 q9,d6,d31
35    VMLAL.U8 q10,d6,d31
36    VMLSL.U8 q0,d3,d30
37    VADDL.U8 q11,d4,d14
38    VMLSL.U8 q9,d2,d30
39    VADDL.U8 q1,d3,d13
40    VMLAL.U8 q0,d7,d31
41    VMLAL.U8 q10,d8,d31
42    VMLSL.U8 q9,d8,d30
43    VMLAL.U8 q1,d7,d31
44    VMLSL.U8 q0,d9,d30
45    VMLAL.U8 q11,d8,d31
46    VMLSL.U8 q10,d4,d30
47    VMLSL.U8 q1,d5,d30
48    VADDL.U8 q2,d5,d15
49    VMLAL.U8 q11,d10,d31
50    VMLSL.U8 q10,d10,d30
51    VMLAL.U8 q1,d9,d31
52    VMLAL.U8 q2,d9,d31
53    VADDL.U8 q12,d6,d16
54    VMLSL.U8 q11,d6,d30
55    VMLSL.U8 q1,d11,d30
56    VMLSL.U8 q2,d7,d30
57    VADDL.U8 q3,d7,d17
58    VMLAL.U8 q12,d10,d31
59    VMLSL.U8 q11,d12,d30
60    VMLSL.U8 q2,d13,d30
61    VMLAL.U8 q3,d11,d31
62    VMLAL.U8 q12,d12,d31
63    VEXT.8   d26,d18,d19,#2
64    VMLAL.U8 q2,d11,d31
65    VMLAL.U8 q3,d13,d31
66    VMLSL.U8 q12,d8,d30
67    VEXT.8   d27,d18,d19,#4
68    VMOV.I16 d31,#0x14
69    VMLSL.U8 q3,d9,d30
70    VMLSL.U8 q12,d14,d30
71    VEXT.8   d29,d19,d0,#2
72    VEXT.8   d28,d18,d19,#6
73    VMLSL.U8 q3,d15,d30
74    VADDL.S16 q0,d18,d29
75    VADD.I16 d27,d27,d28
76    VMOV.I16 d30,#0x5
77    VADD.I16 d26,d26,d19
78    VMLAL.S16 q0,d27,d31
79    VEXT.8   d27,d20,d21,#4
80    VEXT.8   d28,d20,d21,#6
81    VEXT.8   d29,d21,d2,#2
82    VMLSL.S16 q0,d26,d30
83    VEXT.8   d26,d20,d21,#2
84    VADDL.S16 q1,d20,d29
85    VADD.I16 d27,d27,d28
86    VADD.I16 d26,d26,d21
87    VEXT.8   d28,d22,d23,#6
88    VMLAL.S16 q1,d27,d31
89    VEXT.8   d29,d23,d4,#2
90    VEXT.8   d27,d22,d23,#4
91    VEXT.8   d8,d22,d23,#2
92    VADDL.S16 q2,d22,d29
93    VMLSL.S16 q1,d26,d30
94    VADD.I16 d27,d27,d28
95    VADD.I16 d26,d8,d23
96    VEXT.8   d28,d24,d25,#6
97    VMLAL.S16 q2,d27,d31
98    VEXT.8   d27,d24,d25,#4
99    VEXT.8   d29,d25,d6,#2
100    VADD.I16 d27,d27,d28
101    VEXT.8   d8,d24,d25,#2
102    VADDL.S16 q3,d24,d29
103    VMLSL.S16 q2,d26,d30
104    VMLAL.S16 q3,d27,d31
105    VADD.I16 d8,d8,d25
106    VMLSL.S16 q3,d8,d30
107    VQRSHRUN.S32 d0,q0,#10
108    VQRSHRUN.S32 d2,q1,#10
109    VQRSHRUN.S32 d4,q2,#10
110    VQRSHRUN.S32 d6,q3,#10
111    VQMOVN.U16 d0,q0
112    VQMOVN.U16 d2,q1
113    VQMOVN.U16 d4,q2
114    VQMOVN.U16 d6,q3
115    POP      {r4-r12,pc}
116    .endfunc
117
118    .end
119
120