1 /*
2  * Copyright (c) 2016, Alliance for Open Media. All rights reserved
3  *
4  * This source code is subject to the terms of the BSD 2 Clause License and
5  * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6  * was not distributed with this source code in the LICENSE file, you can
7  * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8  * Media Patent License 1.0 was not distributed with this source code in the
9  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10  */
11 
12 #include <arm_neon.h>
13 
14 #include "./aom_dsp_rtcd.h"
15 #include "./aom_config.h"
16 #include "aom/aom_integer.h"
17 
aom_lpf_vertical_4_dual_neon(uint8_t * s,int p,const uint8_t * blimit0,const uint8_t * limit0,const uint8_t * thresh0,const uint8_t * blimit1,const uint8_t * limit1,const uint8_t * thresh1)18 void aom_lpf_vertical_4_dual_neon(uint8_t *s, int p, const uint8_t *blimit0,
19                                   const uint8_t *limit0, const uint8_t *thresh0,
20                                   const uint8_t *blimit1, const uint8_t *limit1,
21                                   const uint8_t *thresh1) {
22   aom_lpf_vertical_4_neon(s, p, blimit0, limit0, thresh0);
23   aom_lpf_vertical_4_neon(s + 8 * p, p, blimit1, limit1, thresh1);
24 }
25 
26 #if HAVE_NEON_ASM
aom_lpf_horizontal_8_dual_neon(uint8_t * s,int p,const uint8_t * blimit0,const uint8_t * limit0,const uint8_t * thresh0,const uint8_t * blimit1,const uint8_t * limit1,const uint8_t * thresh1)27 void aom_lpf_horizontal_8_dual_neon(
28     uint8_t *s, int p /* pitch */, const uint8_t *blimit0,
29     const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1,
30     const uint8_t *limit1, const uint8_t *thresh1) {
31   aom_lpf_horizontal_8_neon(s, p, blimit0, limit0, thresh0);
32   aom_lpf_horizontal_8_neon(s + 8, p, blimit1, limit1, thresh1);
33 }
34 
aom_lpf_vertical_8_dual_neon(uint8_t * s,int p,const uint8_t * blimit0,const uint8_t * limit0,const uint8_t * thresh0,const uint8_t * blimit1,const uint8_t * limit1,const uint8_t * thresh1)35 void aom_lpf_vertical_8_dual_neon(uint8_t *s, int p, const uint8_t *blimit0,
36                                   const uint8_t *limit0, const uint8_t *thresh0,
37                                   const uint8_t *blimit1, const uint8_t *limit1,
38                                   const uint8_t *thresh1) {
39   aom_lpf_vertical_8_neon(s, p, blimit0, limit0, thresh0);
40   aom_lpf_vertical_8_neon(s + 8 * p, p, blimit1, limit1, thresh1);
41 }
42 
aom_lpf_vertical_16_dual_neon(uint8_t * s,int p,const uint8_t * blimit,const uint8_t * limit,const uint8_t * thresh)43 void aom_lpf_vertical_16_dual_neon(uint8_t *s, int p, const uint8_t *blimit,
44                                    const uint8_t *limit,
45                                    const uint8_t *thresh) {
46   aom_lpf_vertical_16_neon(s, p, blimit, limit, thresh);
47   aom_lpf_vertical_16_neon(s + 8 * p, p, blimit, limit, thresh);
48 }
49 #endif  // HAVE_NEON_ASM
50