blob: 22cfe8b79b081879949ae26938618eb38fef9ac0 [file] [log] [blame]
Yaowu Xuc27fc142016-08-22 16:08:15 -07001/*
Yaowu Xu9c01aa12016-09-01 14:32:49 -07002 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
Yaowu Xuc27fc142016-08-22 16:08:15 -07003 *
Yaowu Xu9c01aa12016-09-01 14:32:49 -07004 * 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.
Yaowu Xuc27fc142016-08-22 16:08:15 -070010 */
11
Tom Finegan60e653d2018-05-22 11:34:58 -070012#include "config/aom_config.h"
Tom Finegan44702c82018-05-22 13:00:39 -070013#include "config/aom_dsp_rtcd.h"
Tom Finegan60e653d2018-05-22 11:34:58 -070014
Yaowu Xuc27fc142016-08-22 16:08:15 -070015#include "aom_dsp/x86/convolve.h"
16
17#if HAVE_SSE2
Yaowu Xuf883b422016-08-30 14:01:10 -070018filter8_1dfunction aom_filter_block1d16_v8_sse2;
19filter8_1dfunction aom_filter_block1d16_h8_sse2;
20filter8_1dfunction aom_filter_block1d8_v8_sse2;
21filter8_1dfunction aom_filter_block1d8_h8_sse2;
22filter8_1dfunction aom_filter_block1d4_v8_sse2;
23filter8_1dfunction aom_filter_block1d4_h8_sse2;
Sachin Kumar Gargc199fb42018-09-24 10:25:07 +053024filter8_1dfunction aom_filter_block1d16_v4_sse2;
25filter8_1dfunction aom_filter_block1d16_h4_sse2;
Yaowu Xuc27fc142016-08-22 16:08:15 -070026
Sachin Kumar Garg7dae73f2018-09-28 14:44:21 +053027filter8_1dfunction aom_filter_block1d8_h4_sse2;
28filter8_1dfunction aom_filter_block1d8_v4_sse2;
29filter8_1dfunction aom_filter_block1d4_h4_sse2;
30filter8_1dfunction aom_filter_block1d4_v4_sse2;
Deepa K G814372e2018-08-30 14:34:32 +053031
Yaowu Xuf883b422016-08-30 14:01:10 -070032filter8_1dfunction aom_filter_block1d16_v2_sse2;
33filter8_1dfunction aom_filter_block1d16_h2_sse2;
34filter8_1dfunction aom_filter_block1d8_v2_sse2;
35filter8_1dfunction aom_filter_block1d8_h2_sse2;
36filter8_1dfunction aom_filter_block1d4_v2_sse2;
37filter8_1dfunction aom_filter_block1d4_h2_sse2;
Yaowu Xuc27fc142016-08-22 16:08:15 -070038
Yaowu Xuf883b422016-08-30 14:01:10 -070039// void aom_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride,
Yaowu Xuc27fc142016-08-22 16:08:15 -070040// uint8_t *dst, ptrdiff_t dst_stride,
41// const int16_t *filter_x, int x_step_q4,
42// const int16_t *filter_y, int y_step_q4,
43// int w, int h);
Yaowu Xuf883b422016-08-30 14:01:10 -070044// void aom_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride,
Yaowu Xuc27fc142016-08-22 16:08:15 -070045// uint8_t *dst, ptrdiff_t dst_stride,
46// const int16_t *filter_x, int x_step_q4,
47// const int16_t *filter_y, int y_step_q4,
48// int w, int h);
Yaowu Xuc27fc142016-08-22 16:08:15 -070049FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
50FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
Yaowu Xuc27fc142016-08-22 16:08:15 -070051
Yaowu Xud3e7c682017-12-21 14:08:25 -080052#if ARCH_X86_64
Yaowu Xuf883b422016-08-30 14:01:10 -070053highbd_filter8_1dfunction aom_highbd_filter_block1d16_v8_sse2;
54highbd_filter8_1dfunction aom_highbd_filter_block1d16_h8_sse2;
55highbd_filter8_1dfunction aom_highbd_filter_block1d8_v8_sse2;
56highbd_filter8_1dfunction aom_highbd_filter_block1d8_h8_sse2;
57highbd_filter8_1dfunction aom_highbd_filter_block1d4_v8_sse2;
58highbd_filter8_1dfunction aom_highbd_filter_block1d4_h8_sse2;
Yaowu Xuc27fc142016-08-22 16:08:15 -070059
Sachin Kumar Garg3a0667d2018-10-09 16:03:10 +053060highbd_filter8_1dfunction aom_highbd_filter_block1d16_v4_sse2;
61highbd_filter8_1dfunction aom_highbd_filter_block1d16_h4_sse2;
62highbd_filter8_1dfunction aom_highbd_filter_block1d8_v4_sse2;
63highbd_filter8_1dfunction aom_highbd_filter_block1d8_h4_sse2;
64highbd_filter8_1dfunction aom_highbd_filter_block1d4_v4_sse2;
65highbd_filter8_1dfunction aom_highbd_filter_block1d4_h4_sse2;
66
Yaowu Xuf883b422016-08-30 14:01:10 -070067highbd_filter8_1dfunction aom_highbd_filter_block1d16_v2_sse2;
68highbd_filter8_1dfunction aom_highbd_filter_block1d16_h2_sse2;
69highbd_filter8_1dfunction aom_highbd_filter_block1d8_v2_sse2;
70highbd_filter8_1dfunction aom_highbd_filter_block1d8_h2_sse2;
71highbd_filter8_1dfunction aom_highbd_filter_block1d4_v2_sse2;
72highbd_filter8_1dfunction aom_highbd_filter_block1d4_h2_sse2;
Yaowu Xuc27fc142016-08-22 16:08:15 -070073
Yaowu Xuf883b422016-08-30 14:01:10 -070074// void aom_highbd_convolve8_horiz_sse2(const uint8_t *src,
Yaowu Xuc27fc142016-08-22 16:08:15 -070075// ptrdiff_t src_stride,
76// uint8_t *dst,
77// ptrdiff_t dst_stride,
78// const int16_t *filter_x,
79// int x_step_q4,
80// const int16_t *filter_y,
81// int y_step_q4,
82// int w, int h, int bd);
Yaowu Xuf883b422016-08-30 14:01:10 -070083// void aom_highbd_convolve8_vert_sse2(const uint8_t *src,
Yaowu Xuc27fc142016-08-22 16:08:15 -070084// ptrdiff_t src_stride,
85// uint8_t *dst,
86// ptrdiff_t dst_stride,
87// const int16_t *filter_x,
88// int x_step_q4,
89// const int16_t *filter_y,
90// int y_step_q4,
91// int w, int h, int bd);
Yaowu Xuc27fc142016-08-22 16:08:15 -070092HIGH_FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
93HIGH_FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
Yaowu Xuc27fc142016-08-22 16:08:15 -070094
Yaowu Xud3e7c682017-12-21 14:08:25 -080095#endif // ARCH_X86_64
Yaowu Xuc27fc142016-08-22 16:08:15 -070096#endif // HAVE_SSE2