summaryrefslogtreecommitdiff
path: root/vp8/decoder/arm/armv6/dequantize_v6.asm
blob: c35e7c6302af212b168d1519583184f223f0ee64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
;
;  Copyright (c) 2010 The VP8 project authors. All Rights Reserved.
;
;  Use of this source code is governed by a BSD-style license 
;  that can be found in the LICENSE file in the root of the source
;  tree. An additional intellectual property rights grant can be found
;  in the file PATENTS.  All contributing project authors may 
;  be found in the AUTHORS file in the root of the source tree.
;


    EXPORT  |vp8_dequantize_b_loop_v6|

    AREA    |.text|, CODE, READONLY  ; name this block of code
;-------------------------------
;void   vp8_dequantize_b_loop_v6(short *Q, short *DQC, short *DQ);
; r0    short *Q,
; r1    short *DQC
; r2    short *DQ
|vp8_dequantize_b_loop_v6| PROC
    stmdb   sp!, {r4-r9, lr}

    ldr     r3, [r0]                ;load Q
    ldr     r4, [r1]                ;load DQC
    ldr     r5, [r0, #4]
    ldr     r6, [r1, #4]

    mov     r12, #2                 ;loop counter

dequant_loop
    smulbb  r7, r3, r4              ;multiply
    smultt  r8, r3, r4
    smulbb  r9, r5, r6
    smultt  lr, r5, r6

    ldr     r3, [r0, #8]
    ldr     r4, [r1, #8]
    ldr     r5, [r0, #12]
    ldr     r6, [r1, #12]

    strh    r7, [r2], #2            ;store result
    smulbb  r7, r3, r4              ;multiply
    strh    r8, [r2], #2
    smultt  r8, r3, r4
    strh    r9, [r2], #2
    smulbb  r9, r5, r6
    strh    lr, [r2], #2
    smultt  lr, r5, r6

    subs    r12, r12, #1

    add     r0, r0, #16
    add     r1, r1, #16

    ldrne       r3, [r0]
    strh    r7, [r2], #2            ;store result
    ldrne       r4, [r1]
    strh    r8, [r2], #2
    ldrne       r5, [r0, #4]
    strh    r9, [r2], #2
    ldrne       r6, [r1, #4]
    strh    lr, [r2], #2

    bne     dequant_loop

    ldmia   sp!, {r4-r9, pc}
    ENDP    ;|vp8_dequantize_b_loop_v6|

    END