armVCM4P10_InterpolateLuma_HalfHor4x4_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_HalfHor4x4_unsafe
29    .func   armVCM4P10_InterpolateLuma_HalfHor4x4_unsafe
30armVCM4P10_InterpolateLuma_HalfHor4x4_unsafe:
31    PUSH     {r4-r12,lr}
32    VLD1.8   {d22,d23},[r0],r1
33    VEXT.8   d10,d22,d23,#5
34    VEXT.8   d12,d22,d23,#1
35    VEXT.8   d14,d22,d23,#2
36    VEXT.8   d15,d22,d23,#3
37    VEXT.8   d13,d22,d23,#4
38    VADDL.U8 q11,d22,d10
39    VADDL.U8 q4,d14,d15
40    VADDL.U8 q6,d12,d13
41    VLD1.8   {d24,d25},[r0],r1
42    VMLA.I16 d22,d8,d31
43    VMUL.I16 d8,d12,d30
44    VEXT.8   d10,d24,d25,#5
45    VEXT.8   d12,d24,d25,#1
46    VEXT.8   d16,d24,d25,#2
47    VEXT.8   d17,d24,d25,#3
48    VEXT.8   d13,d24,d25,#4
49    VADDL.U8 q12,d24,d10
50    VSUB.I16 d22,d22,d8
51    VADDL.U8 q4,d16,d17
52    VADDL.U8 q6,d12,d13
53    VLD1.8   {d26,d27},[r0],r1
54    VMLA.I16 d24,d8,d31
55    VMUL.I16 d8,d12,d30
56    VEXT.8   d10,d26,d27,#5
57    VEXT.8   d12,d26,d27,#1
58    VEXT.8   d18,d26,d27,#2
59    VEXT.8   d19,d26,d27,#3
60    VEXT.8   d13,d26,d27,#4
61    VADDL.U8 q13,d26,d10
62    VSUB.I16 d24,d24,d8
63    VADDL.U8 q4,d18,d19
64    VADDL.U8 q6,d12,d13
65    VLD1.8   {d28,d29},[r0],r1
66    VMLA.I16 d26,d8,d31
67    VMUL.I16 d8,d12,d30
68    VEXT.8   d10,d28,d29,#5
69    VEXT.8   d12,d28,d29,#1
70    VEXT.8   d20,d28,d29,#2
71    VEXT.8   d21,d28,d29,#3
72    VEXT.8   d13,d28,d29,#4
73    VADDL.U8 q14,d28,d10
74    VSUB.I16 d26,d26,d8
75    VADDL.U8 q4,d20,d21
76    VADDL.U8 q6,d12,d13
77    VMLA.I16 d28,d8,d31
78    VMLS.I16 d28,d12,d30
79    VQRSHRUN.S16 d22,q11,#5
80    VQRSHRUN.S16 d24,q12,#5
81    VQRSHRUN.S16 d26,q13,#5
82    VQRSHRUN.S16 d28,q14,#5
83    POP      {r4-r12,pc}
84    .endfunc
85
86    .end
87
88