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