1*fb1b10abSAndroid Build Coastguard Worker; 2*fb1b10abSAndroid Build Coastguard Worker; Copyright (c) 2016 The WebM project authors. All Rights Reserved. 3*fb1b10abSAndroid Build Coastguard Worker; 4*fb1b10abSAndroid Build Coastguard Worker; Use of this source code is governed by a BSD-style license 5*fb1b10abSAndroid Build Coastguard Worker; that can be found in the LICENSE file in the root of the source 6*fb1b10abSAndroid Build Coastguard Worker; tree. An additional intellectual property rights grant can be found 7*fb1b10abSAndroid Build Coastguard Worker; in the file PATENTS. All contributing project authors may 8*fb1b10abSAndroid Build Coastguard Worker; be found in the AUTHORS file in the root of the source tree. 9*fb1b10abSAndroid Build Coastguard Worker; 10*fb1b10abSAndroid Build Coastguard Worker 11*fb1b10abSAndroid Build Coastguard Worker INCLUDE ./vpx_config.asm 12*fb1b10abSAndroid Build Coastguard Worker 13*fb1b10abSAndroid Build Coastguard Worker ; Helper functions used to load tran_low_t into int16, narrowing if 14*fb1b10abSAndroid Build Coastguard Worker ; necessary. 15*fb1b10abSAndroid Build Coastguard Worker 16*fb1b10abSAndroid Build Coastguard Worker ; $dst0..3 are d registers with the pairs assumed to be contiguous in 17*fb1b10abSAndroid Build Coastguard Worker ; non-high-bitdepth builds. q0-q3 are used as temporaries in high-bitdepth. 18*fb1b10abSAndroid Build Coastguard Worker MACRO 19*fb1b10abSAndroid Build Coastguard Worker LOAD_TRAN_LOW_TO_S16 $dst0, $dst1, $dst2, $dst3, $src 20*fb1b10abSAndroid Build Coastguard Worker IF CONFIG_VP9_HIGHBITDEPTH 21*fb1b10abSAndroid Build Coastguard Worker vld1.s32 {q0,q1}, [$src]! 22*fb1b10abSAndroid Build Coastguard Worker vld1.s32 {q2,q3}, [$src]! 23*fb1b10abSAndroid Build Coastguard Worker vmovn.i32 $dst0, q0 24*fb1b10abSAndroid Build Coastguard Worker vmovn.i32 $dst1, q1 25*fb1b10abSAndroid Build Coastguard Worker vmovn.i32 $dst2, q2 26*fb1b10abSAndroid Build Coastguard Worker vmovn.i32 $dst3, q3 27*fb1b10abSAndroid Build Coastguard Worker ELSE 28*fb1b10abSAndroid Build Coastguard Worker vld1.s16 {$dst0-$dst1,$dst2-$dst3}, [$src]! 29*fb1b10abSAndroid Build Coastguard Worker ENDIF 30*fb1b10abSAndroid Build Coastguard Worker MEND 31*fb1b10abSAndroid Build Coastguard Worker 32*fb1b10abSAndroid Build Coastguard Worker ; $dst0..3 are d registers. q0-q3 are used as temporaries in high-bitdepth. 33*fb1b10abSAndroid Build Coastguard Worker MACRO 34*fb1b10abSAndroid Build Coastguard Worker LOAD_TRAN_LOW_TO_S16X2 $dst0, $dst1, $dst2, $dst3, $src 35*fb1b10abSAndroid Build Coastguard Worker IF CONFIG_VP9_HIGHBITDEPTH 36*fb1b10abSAndroid Build Coastguard Worker vld2.s32 {q0,q1}, [$src]! 37*fb1b10abSAndroid Build Coastguard Worker vld2.s32 {q2,q3}, [$src]! 38*fb1b10abSAndroid Build Coastguard Worker vmovn.i32 $dst0, q0 39*fb1b10abSAndroid Build Coastguard Worker vmovn.i32 $dst1, q2 40*fb1b10abSAndroid Build Coastguard Worker vmovn.i32 $dst2, q1 41*fb1b10abSAndroid Build Coastguard Worker vmovn.i32 $dst3, q3 42*fb1b10abSAndroid Build Coastguard Worker ELSE 43*fb1b10abSAndroid Build Coastguard Worker vld2.s16 {$dst0,$dst1,$dst2,$dst3}, [$src]! 44*fb1b10abSAndroid Build Coastguard Worker ENDIF 45*fb1b10abSAndroid Build Coastguard Worker MEND 46*fb1b10abSAndroid Build Coastguard Worker END 47