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 |