12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- ;
- ; 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
|