armVCM4P10_Average_4x_Align_unsafe_s.S revision 7ea582e1dbdd9a88b2105fbe29ed0ec92cbf70c6
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_Average_4x4_Align0_unsafe
29armVCM4P10_Average_4x4_Align0_unsafe:
30    PUSH     {r4-r6,lr}
31    LDR      r7, =0x80808080
32    LDR      r12,[r2,#0]
33    LDR      r10,[r0],r1
34    LDR      lr,[r2,r3]
35    LDR      r11,[r0],r1
36    MVN      r12,r12
37    MVN      lr,lr
38    UHSUB8   r5,r10,r12
39    UHSUB8   r4,r11,lr
40    EOR      r5,r5,r7
41    STR      r5,[r2],r3
42    EOR      r4,r4,r7
43    STR      r4,[r2],r3
44    LDR      r10,[r0],r1
45    LDR      r12,[r2,#0]
46    LDR      r11,[r0],r1
47    LDR      lr,[r2,r3]
48    MVN      r12,r12
49    UHSUB8   r5,r10,r12
50    MVN      lr,lr
51    UHSUB8   r4,r11,lr
52    EOR      r5,r5,r7
53    STR      r5,[r2],r3
54    EOR      r4,r4,r7
55    STR      r4,[r2],r3
56    POP      {r4-r6,pc}
57
58    .global armVCM4P10_Average_4x4_Align2_unsafe
59armVCM4P10_Average_4x4_Align2_unsafe:
60    PUSH     {r4-r6,lr}
61    LDR      r7, =0x80808080
62    LDR      r4,[r0,#4]
63    LDR      r10,[r0],r1
64    LDR      r12,[r2,#0]
65    LDR      lr,[r2,r3]
66    LDR      r5,[r0,#4]
67    LDR      r11,[r0],r1
68    MVN      r12,r12
69    MVN      lr,lr
70    LSR      r10,r10,#16
71    ORR      r10,r10,r4,LSL #16
72    LSR      r11,r11,#16
73    ORR      r11,r11,r5,LSL #16
74    UHSUB8   r5,r10,r12
75    UHSUB8   r4,r11,lr
76    EOR      r5,r5,r7
77    STR      r5,[r2],r3
78    EOR      r4,r4,r7
79    STR      r4,[r2],r3
80    LDR      r4,[r0,#4]
81    LDR      r10,[r0],r1
82    LDR      r12,[r2,#0]
83    LDR      lr,[r2,r3]
84    LDR      r5,[r0,#4]
85    LDR      r11,[r0],r1
86    MVN      r12,r12
87    MVN      lr,lr
88    LSR      r10,r10,#16
89    ORR      r10,r10,r4,LSL #16
90    LSR      r11,r11,#16
91    ORR      r11,r11,r5,LSL #16
92    UHSUB8   r5,r10,r12
93    UHSUB8   r4,r11,lr
94    EOR      r5,r5,r7
95    STR      r5,[r2],r3
96    EOR      r4,r4,r7
97    STR      r4,[r2],r3
98    POP      {r4-r6,pc}
99
100    .global armVCM4P10_Average_4x4_Align3_unsafe
101armVCM4P10_Average_4x4_Align3_unsafe:
102    PUSH     {r4-r6,lr}
103    LDR      r7, =0x80808080
104    LDR      r4,[r0,#4]
105    LDR      r10,[r0],r1
106    LDR      r12,[r2,#0]
107    LDR      lr,[r2,r3]
108    LDR      r5,[r0,#4]
109    LDR      r11,[r0],r1
110    MVN      r12,r12
111    MVN      lr,lr
112    LSR      r10,r10,#24
113    ORR      r10,r10,r4,LSL #8
114    LSR      r11,r11,#24
115    ORR      r11,r11,r5,LSL #8
116    UHSUB8   r5,r10,r12
117    UHSUB8   r4,r11,lr
118    EOR      r5,r5,r7
119    STR      r5,[r2],r3
120    EOR      r4,r4,r7
121    STR      r4,[r2],r3
122    LDR      r4,[r0,#4]
123    LDR      r10,[r0],r1
124    LDR      r12,[r2,#0]
125    LDR      lr,[r2,r3]
126    LDR      r5,[r0,#4]
127    LDR      r11,[r0],r1
128    MVN      r12,r12
129    MVN      lr,lr
130    LSR      r10,r10,#24
131    ORR      r10,r10,r4,LSL #8
132    LSR      r11,r11,#24
133    ORR      r11,r11,r5,LSL #8
134    UHSUB8   r5,r10,r12
135    UHSUB8   r4,r11,lr
136    EOR      r5,r5,r7
137    STR      r5,[r2],r3
138    EOR      r4,r4,r7
139    STR      r4,[r2],r3
140    POP      {r4-r6,pc}
141
142    .end
143
144