armVCM4P10_InterpolateLuma_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_InterpolateLuma_HorAlign9x_unsafe
29armVCM4P10_InterpolateLuma_HorAlign9x_unsafe:
30    MOV      r12,r8
31    AND      r7,r0,#3
32    BIC      r0,r0,#3
33    ADD      pc,pc,r7,LSL #2
34    NOP
35    B        Copy0toAligned
36    B        Copy1toAligned
37    B        Copy2toAligned
38    B        Copy3toAligned
39Copy0toAligned:
40    LDM      r0,{r7,r10,r11}
41    SUBS     r9,r9,#1
42    ADD      r0,r0,r1
43    STM      r8!,{r7,r10,r11}
44    BGT      Copy0toAligned
45    B        CopyEnd
46Copy1toAligned:
47    LDM      r0,{r7,r10,r11}
48    SUBS     r9,r9,#1
49    ADD      r0,r0,r1
50    LSR      r7,r7,#8
51    ORR      r7,r7,r10,LSL #24
52    LSR      r10,r10,#8
53    ORR      r10,r10,r11,LSL #24
54    LSR      r11,r11,#8
55    STM      r8!,{r7,r10,r11}
56    BGT      Copy1toAligned
57    B        CopyEnd
58Copy2toAligned:
59    LDM      r0,{r7,r10,r11}
60    SUBS     r9,r9,#1
61    ADD      r0,r0,r1
62    LSR      r7,r7,#16
63    ORR      r7,r7,r10,LSL #16
64    LSR      r10,r10,#16
65    ORR      r10,r10,r11,LSL #16
66    LSR      r11,r11,#16
67    STM      r8!,{r7,r10,r11}
68    BGT      Copy2toAligned
69    B        CopyEnd
70Copy3toAligned:
71    LDM      r0,{r7,r10,r11}
72    SUBS     r9,r9,#1
73    ADD      r0,r0,r1
74    LSR      r7,r7,#24
75    ORR      r7,r7,r10,LSL #8
76    LSR      r10,r10,#24
77    ORR      r10,r10,r11,LSL #8
78    LSR      r11,r11,#24
79    STM      r8!,{r7,r10,r11}
80    BGT      Copy3toAligned
81CopyEnd:
82    MOV      r0,r12
83    MOV      r1,#0xc
84    BX       lr
85
86    .global armVCM4P10_InterpolateLuma_VerAlign4x_unsafe
87armVCM4P10_InterpolateLuma_VerAlign4x_unsafe:
88    AND      r7,r0,#3
89    BIC      r0,r0,#3
90    ADD      pc,pc,r7,LSL #2
91    NOP
92    B        Copy0toVAligned
93    B        Copy1toVAligned
94    B        Copy2toVAligned
95    B        Copy3toVAligned
96Copy0toVAligned:
97    LDR      r7,[r0],r1
98    SUBS     r9,r9,#1
99    STR      r7,[r8],#4
100    BGT      Copy0toVAligned
101    B        CopyVEnd
102Copy1toVAligned:
103    LDR      r10,[r0,#4]
104    LDR      r7,[r0],r1
105    SUBS     r9,r9,#1
106    LSL      r10,r10,#24
107    ORR      r7,r10,r7,LSR #8
108    STR      r7,[r8],#4
109    BGT      Copy1toVAligned
110    B        CopyVEnd
111Copy2toVAligned:
112    LDR      r10,[r0,#4]
113    LDR      r7,[r0],r1
114    SUBS     r9,r9,#1
115    LSL      r10,r10,#16
116    ORR      r7,r10,r7,LSR #16
117    STR      r7,[r8],#4
118    BGT      Copy2toVAligned
119    B        CopyVEnd
120Copy3toVAligned:
121    LDR      r10,[r0,#4]
122    LDR      r7,[r0],r1
123    SUBS     r9,r9,#1
124    LSL      r10,r10,#8
125    ORR      r7,r10,r7,LSR #24
126    STR      r7,[r8],#4
127    BGT      Copy3toVAligned
128CopyVEnd:
129    SUB      r0,r8,#0x1c
130    MOV      r1,#4
131    BX       lr
132
133    .end
134
135