armVCM4P10_InterpolateLuma_DiagCopy_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_HorDiagCopy_unsafe
29    .func   armVCM4P10_InterpolateLuma_HorDiagCopy_unsafe
30armVCM4P10_InterpolateLuma_HorDiagCopy_unsafe:
31    PUSH     {r4-r6,lr}
32    MOV      lr,#4
33    LDR      r6, =0xfe00fe0
34    LDR      r12, =0xff00ff
35LoopStart1:
36    LDR      r11,[r0,#0xc]
37    LDR      r10,[r0,#8]
38    LDR      r5,[r0,#4]
39    LDR      r4,[r0],r1
40    UQSUB16  r11,r11,r6
41    UQSUB16  r10,r10,r6
42    UQSUB16  r5,r5,r6
43    UQSUB16  r4,r4,r6
44    USAT16   r11,#13,r11
45    USAT16   r10,#13,r10
46    USAT16   r5,#13,r5
47    USAT16   r4,#13,r4
48    AND      r11,r12,r11,LSR #5
49    AND      r10,r12,r10,LSR #5
50    AND      r5,r12,r5,LSR #5
51    AND      r4,r12,r4,LSR #5
52    ORR      r11,r10,r11,LSL #8
53    ORR      r10,r4,r5,LSL #8
54    SUBS     lr,lr,#1
55    STRD     r10,r11,[r7],#8
56    BGT      LoopStart1
57    SUB      r0,r7,#0x20
58    MOV      r1,#8
59    POP      {r4-r6,pc}
60    .endfunc
61
62    .global armVCM4P10_InterpolateLuma_VerDiagCopy_unsafe
63    .func   armVCM4P10_InterpolateLuma_VerDiagCopy_unsafe
64armVCM4P10_InterpolateLuma_VerDiagCopy_unsafe:
65    PUSH     {r4-r6,lr}
66    LDR      r6, =0xfe00fe0
67    LDR      r12, =0xff00ff
68    MOV      lr,#2
69LoopStart:
70    LDR      r11,[r0,#0xc]
71    LDR      r10,[r0,#8]
72    LDR      r5,[r0,#4]
73    LDR      r4,[r0],r1
74    UQSUB16  r11,r11,r6
75    UQSUB16  r10,r10,r6
76    UQSUB16  r5,r5,r6
77    UQSUB16  r4,r4,r6
78    USAT16   r11,#13,r11
79    USAT16   r10,#13,r10
80    USAT16   r5,#13,r5
81    USAT16   r4,#13,r4
82    AND      r11,r12,r11,LSR #5
83    AND      r10,r12,r10,LSR #5
84    AND      r5,r12,r5,LSR #5
85    AND      r4,r12,r4,LSR #5
86    ORR      r11,r10,r11,LSL #8
87    ORR      r10,r4,r5,LSL #8
88    PKHBT    r4,r10,r11,LSL #16
89    STR      r4,[r7],#8
90    PKHTB    r5,r11,r10,ASR #16
91    STR      r5,[r7],#-4
92    LDR      r11,[r0,#0xc]
93    LDR      r10,[r0,#8]
94    LDR      r5,[r0,#4]
95    LDR      r4,[r0],r1
96    UQSUB16  r11,r11,r6
97    UQSUB16  r10,r10,r6
98    UQSUB16  r5,r5,r6
99    UQSUB16  r4,r4,r6
100    USAT16   r11,#13,r11
101    USAT16   r10,#13,r10
102    USAT16   r5,#13,r5
103    USAT16   r4,#13,r4
104    AND      r11,r12,r11,LSR #5
105    AND      r10,r12,r10,LSR #5
106    AND      r5,r12,r5,LSR #5
107    AND      r4,r12,r4,LSR #5
108    ORR      r11,r10,r11,LSL #8
109    ORR      r10,r4,r5,LSL #8
110    PKHBT    r4,r10,r11,LSL #16
111    SUBS     lr,lr,#1
112    STR      r4,[r7],#8
113    PKHTB    r5,r11,r10,ASR #16
114    STR      r5,[r7],#4
115    BGT      LoopStart
116    SUB      r0,r7,#0x18
117    MOV      r1,#4
118    POP      {r4-r6,pc}
119    .endfunc
120
121    .end
122
123