summaryrefslogtreecommitdiffstats
path: root/media/libvpx/libvpx/vpx_dsp/arm/idct_neon.asm
blob: 5dd9bdc7888a61039d25d633d0effce6ac55d4bf (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
;
;  Copyright (c) 2016 The WebM 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.
;

    INCLUDE ./vpx_config.asm

    ; Helper functions used to load tran_low_t into int16, narrowing if
    ; necessary.

    ; $dst0..3 are d registers with the pairs assumed to be contiguous in
    ; non-high-bitdepth builds. q0-q3 are used as temporaries in high-bitdepth.
    MACRO
    LOAD_TRAN_LOW_TO_S16 $dst0, $dst1, $dst2, $dst3, $src
    IF CONFIG_VP9_HIGHBITDEPTH
    vld1.s32        {q0,q1}, [$src]!
    vld1.s32        {q2,q3}, [$src]!
    vmovn.i32       $dst0, q0
    vmovn.i32       $dst1, q1
    vmovn.i32       $dst2, q2
    vmovn.i32       $dst3, q3
    ELSE
    vld1.s16        {$dst0-$dst1,$dst2-$dst3}, [$src]!
    ENDIF
    MEND

    ; $dst0..3 are d registers. q0-q3 are used as temporaries in high-bitdepth.
    MACRO
    LOAD_TRAN_LOW_TO_S16X2 $dst0, $dst1, $dst2, $dst3, $src
    IF CONFIG_VP9_HIGHBITDEPTH
    vld2.s32        {q0,q1}, [$src]!
    vld2.s32        {q2,q3}, [$src]!
    vmovn.i32       $dst0, q0
    vmovn.i32       $dst1, q2
    vmovn.i32       $dst2, q1
    vmovn.i32       $dst3, q3
    ELSE
    vld2.s16        {$dst0,$dst1,$dst2,$dst3}, [$src]!
    ENDIF
    MEND
    END