1f71323e297a928af368937089d3ed71239786f86Andreas Huber;
2f71323e297a928af368937089d3ed71239786f86Andreas Huber;  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3f71323e297a928af368937089d3ed71239786f86Andreas Huber;
4f71323e297a928af368937089d3ed71239786f86Andreas Huber;  Use of this source code is governed by a BSD-style license and patent
5f71323e297a928af368937089d3ed71239786f86Andreas Huber;  grant that can be found in the LICENSE file in the root of the source
6f71323e297a928af368937089d3ed71239786f86Andreas Huber;  tree. All contributing project authors may be found in the AUTHORS
7f71323e297a928af368937089d3ed71239786f86Andreas Huber;  file in the root of the source tree.
8f71323e297a928af368937089d3ed71239786f86Andreas Huber;
9f71323e297a928af368937089d3ed71239786f86Andreas Huber
10f71323e297a928af368937089d3ed71239786f86Andreas Huber    EXPORT  |vp8_dc_only_idct_add_v6|
11f71323e297a928af368937089d3ed71239786f86Andreas Huber
12f71323e297a928af368937089d3ed71239786f86Andreas Huber    AREA    |.text|, CODE, READONLY
13f71323e297a928af368937089d3ed71239786f86Andreas Huber
14f71323e297a928af368937089d3ed71239786f86Andreas Huber;void vp8_dc_only_idct_add_v6(short input_dc, unsigned char *pred_ptr,
15f71323e297a928af368937089d3ed71239786f86Andreas Huber;                             unsigned char *dst_ptr, int pitch, int stride)
16f71323e297a928af368937089d3ed71239786f86Andreas Huber; r0  input_dc
17f71323e297a928af368937089d3ed71239786f86Andreas Huber; r1  pred_ptr
18f71323e297a928af368937089d3ed71239786f86Andreas Huber; r2  dest_ptr
19f71323e297a928af368937089d3ed71239786f86Andreas Huber; r3  pitch
20f71323e297a928af368937089d3ed71239786f86Andreas Huber; sp  stride
21f71323e297a928af368937089d3ed71239786f86Andreas Huber
22f71323e297a928af368937089d3ed71239786f86Andreas Huber|vp8_dc_only_idct_add_v6| PROC
23f71323e297a928af368937089d3ed71239786f86Andreas Huber    stmdb       sp!, {r4 - r7, lr}
24f71323e297a928af368937089d3ed71239786f86Andreas Huber
25f71323e297a928af368937089d3ed71239786f86Andreas Huber    add         r0, r0, #4                ; input_dc += 4
26f71323e297a928af368937089d3ed71239786f86Andreas Huber    ldr         r12, c0x0000FFFF
27f71323e297a928af368937089d3ed71239786f86Andreas Huber    ldr         r4, [r1], r3
28f71323e297a928af368937089d3ed71239786f86Andreas Huber    ldr         r6, [r1], r3
29f71323e297a928af368937089d3ed71239786f86Andreas Huber    and         r0, r12, r0, asr #3       ; input_dc >> 3 + mask
30f71323e297a928af368937089d3ed71239786f86Andreas Huber    ldr         lr, [sp, #20]
31f71323e297a928af368937089d3ed71239786f86Andreas Huber    orr         r0, r0, r0, lsl #16       ; a1 | a1
32f71323e297a928af368937089d3ed71239786f86Andreas Huber
33f71323e297a928af368937089d3ed71239786f86Andreas Huber    uxtab16     r5, r0, r4                ; a1+2 | a1+0
34f71323e297a928af368937089d3ed71239786f86Andreas Huber    uxtab16     r4, r0, r4, ror #8        ; a1+3 | a1+1
35f71323e297a928af368937089d3ed71239786f86Andreas Huber    uxtab16     r7, r0, r6
36f71323e297a928af368937089d3ed71239786f86Andreas Huber    uxtab16     r6, r0, r6, ror #8
37f71323e297a928af368937089d3ed71239786f86Andreas Huber    usat16      r5, #8, r5
38f71323e297a928af368937089d3ed71239786f86Andreas Huber    usat16      r4, #8, r4
39f71323e297a928af368937089d3ed71239786f86Andreas Huber    usat16      r7, #8, r7
40f71323e297a928af368937089d3ed71239786f86Andreas Huber    usat16      r6, #8, r6
41f71323e297a928af368937089d3ed71239786f86Andreas Huber    orr         r5, r5, r4, lsl #8
42f71323e297a928af368937089d3ed71239786f86Andreas Huber    orr         r7, r7, r6, lsl #8
43f71323e297a928af368937089d3ed71239786f86Andreas Huber    ldr         r4, [r1], r3
44f71323e297a928af368937089d3ed71239786f86Andreas Huber    ldr         r6, [r1]
45f71323e297a928af368937089d3ed71239786f86Andreas Huber    str         r5, [r2], lr
46f71323e297a928af368937089d3ed71239786f86Andreas Huber    str         r7, [r2], lr
47f71323e297a928af368937089d3ed71239786f86Andreas Huber
48f71323e297a928af368937089d3ed71239786f86Andreas Huber    uxtab16     r5, r0, r4
49f71323e297a928af368937089d3ed71239786f86Andreas Huber    uxtab16     r4, r0, r4, ror #8
50f71323e297a928af368937089d3ed71239786f86Andreas Huber    uxtab16     r7, r0, r6
51f71323e297a928af368937089d3ed71239786f86Andreas Huber    uxtab16     r6, r0, r6, ror #8
52f71323e297a928af368937089d3ed71239786f86Andreas Huber    usat16      r5, #8, r5
53f71323e297a928af368937089d3ed71239786f86Andreas Huber    usat16      r4, #8, r4
54f71323e297a928af368937089d3ed71239786f86Andreas Huber    usat16      r7, #8, r7
55f71323e297a928af368937089d3ed71239786f86Andreas Huber    usat16      r6, #8, r6
56f71323e297a928af368937089d3ed71239786f86Andreas Huber    orr         r5, r5, r4, lsl #8
57f71323e297a928af368937089d3ed71239786f86Andreas Huber    orr         r7, r7, r6, lsl #8
58f71323e297a928af368937089d3ed71239786f86Andreas Huber    str         r5, [r2], lr
59f71323e297a928af368937089d3ed71239786f86Andreas Huber    str         r7, [r2]
60f71323e297a928af368937089d3ed71239786f86Andreas Huber
61f71323e297a928af368937089d3ed71239786f86Andreas Huber    ldmia       sp!, {r4 - r7, pc}
62f71323e297a928af368937089d3ed71239786f86Andreas Huber
63f71323e297a928af368937089d3ed71239786f86Andreas Huber    ENDP  ; |vp8_dc_only_idct_add_v6|
64f71323e297a928af368937089d3ed71239786f86Andreas Huber
65f71323e297a928af368937089d3ed71239786f86Andreas Huber; Constant Pool
66f71323e297a928af368937089d3ed71239786f86Andreas Huberc0x0000FFFF DCD 0x0000FFFF
67f71323e297a928af368937089d3ed71239786f86Andreas Huber    END
68