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