OLD | NEW |
| (Empty) |
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 vpush {d8-d15} | |
26 | |
27 add r12, r2, #4 | |
28 vld1.32 {d2[0]}, [r2], r3 | |
29 vld1.32 {d8[0]}, [r12], r3 | |
30 vld1.32 {d2[1]}, [r2], r3 | |
31 vld1.32 {d8[1]}, [r12], r3 | |
32 vld1.32 {d4[0]}, [r2], r3 | |
33 vld1.32 {d10[0]}, [r12], r3 | |
34 vld1.32 {d4[1]}, [r2], r3 | |
35 vld1.32 {d10[1]}, [r12], r3 | |
36 | |
37 ldrh r12, [r0] ; lo q | |
38 ldrh r4, [r0, #32] ; hi q | |
39 mov r5, #0 | |
40 strh r5, [r0] | |
41 strh r5, [r0, #32] | |
42 | |
43 sxth r12, r12 ; lo | |
44 mul r0, r12, r1 | |
45 add r0, r0, #4 | |
46 asr r0, r0, #3 | |
47 vdup.16 q0, r0 | |
48 sxth r4, r4 ; hi | |
49 mul r0, r4, r1 | |
50 add r0, r0, #4 | |
51 asr r0, r0, #3 | |
52 vdup.16 q3, r0 | |
53 | |
54 vaddw.u8 q1, q0, d2 ; lo | |
55 vaddw.u8 q2, q0, d4 | |
56 vaddw.u8 q4, q3, d8 ; hi | |
57 vaddw.u8 q5, q3, d10 | |
58 | |
59 sub r2, r2, r3, lsl #2 ; dst - 4*stride | |
60 add r0, r2, #4 | |
61 | |
62 vqmovun.s16 d2, q1 ; lo | |
63 vqmovun.s16 d4, q2 | |
64 vqmovun.s16 d8, q4 ; hi | |
65 vqmovun.s16 d10, q5 | |
66 | |
67 vst1.32 {d2[0]}, [r2], r3 ; lo | |
68 vst1.32 {d8[0]}, [r0], r3 ; hi | |
69 vst1.32 {d2[1]}, [r2], r3 | |
70 vst1.32 {d8[1]}, [r0], r3 | |
71 vst1.32 {d4[0]}, [r2], r3 | |
72 vst1.32 {d10[0]}, [r0], r3 | |
73 vst1.32 {d4[1]}, [r2] | |
74 vst1.32 {d10[1]}, [r0] | |
75 | |
76 vpop {d8-d15} | |
77 pop {r4, r5} | |
78 bx lr | |
79 | |
80 ENDP ; |idct_dequant_0_2x_neon| | |
81 END | |
OLD | NEW |