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