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