Fix TEXTRELs in the ARM asm.
[profile/ivi/libvpx.git] / vp8 / common / arm / neon / idct_dequant_0_2x_neon.asm
1 ;
2 ;  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 ;
4 ;  Use of this source code is governed by a BSD-style license and patent
5 ;  grant that can be found in the LICENSE file in the root of the source
6 ;  tree. All contributing project authors may be found in the AUTHORS
7 ;  file in the root of the source tree.
8 ;
9
10
11     EXPORT  |idct_dequant_0_2x_neon|
12     ARM
13     REQUIRE8
14     PRESERVE8
15
16     AREA ||.text||, CODE, READONLY, ALIGN=2
17 ;void idct_dequant_0_2x_neon(short *q, short dq,
18 ;                            unsigned char *dst, int stride);
19 ; r0   *q
20 ; r1   dq
21 ; r2   *dst
22 ; r3   stride
23 |idct_dequant_0_2x_neon| PROC
24     push            {r4, r5}
25
26     add             r12, r2, #4
27     vld1.32         {d2[0]}, [r2], r3
28     vld1.32         {d8[0]}, [r12], r3
29     vld1.32         {d2[1]}, [r2], r3
30     vld1.32         {d8[1]}, [r12], r3
31     vld1.32         {d4[0]}, [r2], r3
32     vld1.32         {d10[0]}, [r12], r3
33     vld1.32         {d4[1]}, [r2], r3
34     vld1.32         {d10[1]}, [r12], r3
35
36     ldrh            r12, [r0]               ; lo q
37     ldrh            r4, [r0, #32]           ; hi q
38     mov             r5, #0
39     strh            r5, [r0]
40     strh            r5, [r0, #32]
41
42     sxth            r12, r12                ; lo
43     mul             r0, r12, r1
44     add             r0, r0, #4
45     asr             r0, r0, #3
46     vdup.16         q0, r0
47     sxth            r4, r4                  ; hi
48     mul             r0, r4, r1
49     add             r0, r0, #4
50     asr             r0, r0, #3
51     vdup.16         q3, r0
52
53     vaddw.u8        q1, q0, d2              ; lo
54     vaddw.u8        q2, q0, d4
55     vaddw.u8        q4, q3, d8              ; hi
56     vaddw.u8        q5, q3, d10
57
58     sub             r2, r2, r3, lsl #2      ; dst - 4*stride
59     add             r0, r2, #4
60
61     vqmovun.s16     d2, q1                  ; lo
62     vqmovun.s16     d4, q2
63     vqmovun.s16     d8, q4                  ; hi
64     vqmovun.s16     d10, q5
65
66     vst1.32         {d2[0]}, [r2], r3       ; lo
67     vst1.32         {d8[0]}, [r0], r3       ; hi
68     vst1.32         {d2[1]}, [r2], r3
69     vst1.32         {d8[1]}, [r0], r3
70     vst1.32         {d4[0]}, [r2], r3
71     vst1.32         {d10[0]}, [r0], r3
72     vst1.32         {d4[1]}, [r2]
73     vst1.32         {d10[1]}, [r0]
74
75     pop             {r4, r5}
76     bx              lr
77
78     ENDP            ; |idct_dequant_0_2x_neon|
79     END