blob: ab25d9c2f70e4815f9d8278c9b6da6eb339fd6b5 [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
Yaowu Xuf883b422016-08-30 14:01:10 -070012#include "./aom_config.h"
13#include "./aom_dsp_rtcd.h"
Yaowu Xuc27fc142016-08-22 16:08:15 -070014#include "aom_dsp/x86/convolve.h"
15
16#if HAVE_SSE2
Yaowu Xuf883b422016-08-30 14:01:10 -070017filter8_1dfunction aom_filter_block1d16_v8_sse2;
18filter8_1dfunction aom_filter_block1d16_h8_sse2;
19filter8_1dfunction aom_filter_block1d8_v8_sse2;
20filter8_1dfunction aom_filter_block1d8_h8_sse2;
21filter8_1dfunction aom_filter_block1d4_v8_sse2;
22filter8_1dfunction aom_filter_block1d4_h8_sse2;
Yaowu Xuc27fc142016-08-22 16:08:15 -070023
Yaowu Xuf883b422016-08-30 14:01:10 -070024filter8_1dfunction aom_filter_block1d16_v2_sse2;
25filter8_1dfunction aom_filter_block1d16_h2_sse2;
26filter8_1dfunction aom_filter_block1d8_v2_sse2;
27filter8_1dfunction aom_filter_block1d8_h2_sse2;
28filter8_1dfunction aom_filter_block1d4_v2_sse2;
29filter8_1dfunction aom_filter_block1d4_h2_sse2;
Yaowu Xuc27fc142016-08-22 16:08:15 -070030
Yaowu Xuf883b422016-08-30 14:01:10 -070031// void aom_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride,
Yaowu Xuc27fc142016-08-22 16:08:15 -070032// uint8_t *dst, ptrdiff_t dst_stride,
33// const int16_t *filter_x, int x_step_q4,
34// const int16_t *filter_y, int y_step_q4,
35// int w, int h);
Yaowu Xuf883b422016-08-30 14:01:10 -070036// void aom_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride,
Yaowu Xuc27fc142016-08-22 16:08:15 -070037// uint8_t *dst, ptrdiff_t dst_stride,
38// const int16_t *filter_x, int x_step_q4,
39// const int16_t *filter_y, int y_step_q4,
40// int w, int h);
Yaowu Xuc27fc142016-08-22 16:08:15 -070041FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
42FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
Yaowu Xuc27fc142016-08-22 16:08:15 -070043
Yaowu Xuf883b422016-08-30 14:01:10 -070044// void aom_convolve8_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_2D(, sse2);
Yaowu Xuc27fc142016-08-22 16:08:15 -070050
Yaowu Xud3e7c682017-12-21 14:08:25 -080051#if ARCH_X86_64
Yaowu Xuf883b422016-08-30 14:01:10 -070052highbd_filter8_1dfunction aom_highbd_filter_block1d16_v8_sse2;
53highbd_filter8_1dfunction aom_highbd_filter_block1d16_h8_sse2;
54highbd_filter8_1dfunction aom_highbd_filter_block1d8_v8_sse2;
55highbd_filter8_1dfunction aom_highbd_filter_block1d8_h8_sse2;
56highbd_filter8_1dfunction aom_highbd_filter_block1d4_v8_sse2;
57highbd_filter8_1dfunction aom_highbd_filter_block1d4_h8_sse2;
Yaowu Xuc27fc142016-08-22 16:08:15 -070058
Yaowu Xuf883b422016-08-30 14:01:10 -070059highbd_filter8_1dfunction aom_highbd_filter_block1d16_v2_sse2;
60highbd_filter8_1dfunction aom_highbd_filter_block1d16_h2_sse2;
61highbd_filter8_1dfunction aom_highbd_filter_block1d8_v2_sse2;
62highbd_filter8_1dfunction aom_highbd_filter_block1d8_h2_sse2;
63highbd_filter8_1dfunction aom_highbd_filter_block1d4_v2_sse2;
64highbd_filter8_1dfunction aom_highbd_filter_block1d4_h2_sse2;
Yaowu Xuc27fc142016-08-22 16:08:15 -070065
Yaowu Xuf883b422016-08-30 14:01:10 -070066// void aom_highbd_convolve8_horiz_sse2(const uint8_t *src,
Yaowu Xuc27fc142016-08-22 16:08:15 -070067// ptrdiff_t src_stride,
68// uint8_t *dst,
69// ptrdiff_t dst_stride,
70// const int16_t *filter_x,
71// int x_step_q4,
72// const int16_t *filter_y,
73// int y_step_q4,
74// int w, int h, int bd);
Yaowu Xuf883b422016-08-30 14:01:10 -070075// void aom_highbd_convolve8_vert_sse2(const uint8_t *src,
Yaowu Xuc27fc142016-08-22 16:08:15 -070076// ptrdiff_t src_stride,
77// uint8_t *dst,
78// ptrdiff_t dst_stride,
79// const int16_t *filter_x,
80// int x_step_q4,
81// const int16_t *filter_y,
82// int y_step_q4,
83// int w, int h, int bd);
Yaowu Xuc27fc142016-08-22 16:08:15 -070084HIGH_FUN_CONV_1D(horiz, x_step_q4, filter_x, h, src, , sse2);
85HIGH_FUN_CONV_1D(vert, y_step_q4, filter_y, v, src - src_stride * 3, , sse2);
Yaowu Xuc27fc142016-08-22 16:08:15 -070086
Yaowu Xuf883b422016-08-30 14:01:10 -070087// void aom_highbd_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride,
Yaowu Xuc27fc142016-08-22 16:08:15 -070088// uint8_t *dst, ptrdiff_t dst_stride,
89// const int16_t *filter_x, int x_step_q4,
90// const int16_t *filter_y, int y_step_q4,
91// int w, int h, int bd);
Yaowu Xuc27fc142016-08-22 16:08:15 -070092HIGH_FUN_CONV_2D(, sse2);
David Barkerbe6cc072016-12-15 15:39:10 +000093
Yaowu Xud3e7c682017-12-21 14:08:25 -080094#endif // ARCH_X86_64
Yaowu Xuc27fc142016-08-22 16:08:15 -070095#endif // HAVE_SSE2