1/*
2 * Copyright (c) 2015 Parag Salasakar (Parag.Salasakar@imgtec.com)
3 * Copyright (c) 2016 Zhou Xiaoyong <zhouxiaoyong@loongson.cn>
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22#ifndef AVCODEC_MIPS_HPELDSP_MIPS_H
23#define AVCODEC_MIPS_HPELDSP_MIPS_H
24
25#include "libavcodec/bit_depth_template.c"
26
27void ff_put_pixels16_msa(uint8_t *block, const uint8_t *pixels,
28                         ptrdiff_t line_size, int32_t h);
29void ff_put_pixels16_x2_msa(uint8_t *block, const uint8_t *pixels,
30                            ptrdiff_t line_size, int32_t h);
31void ff_put_pixels16_y2_msa(uint8_t *block, const uint8_t *pixels,
32                            ptrdiff_t line_size, int32_t h);
33void ff_put_pixels16_xy2_msa(uint8_t *block, const uint8_t *pixels,
34                             ptrdiff_t line_size, int32_t h);
35void ff_put_pixels8_msa(uint8_t *block, const uint8_t *pixels,
36                        ptrdiff_t line_size, int32_t h);
37void ff_put_pixels8_x2_msa(uint8_t *block, const uint8_t *pixels,
38                           ptrdiff_t line_size, int32_t h);
39void ff_put_pixels8_y2_msa(uint8_t *block, const uint8_t *pixels,
40                           ptrdiff_t line_size, int32_t h);
41void ff_put_pixels8_xy2_msa(uint8_t *block, const uint8_t *pixels,
42                            ptrdiff_t line_size, int32_t h);
43void ff_put_pixels4_msa(uint8_t *block, const uint8_t *pixels,
44                        ptrdiff_t line_size, int32_t h);
45void ff_put_pixels4_x2_msa(uint8_t *block, const uint8_t *pixels,
46                           ptrdiff_t line_size, int32_t h);
47void ff_put_pixels4_y2_msa(uint8_t *block, const uint8_t *pixels,
48                           ptrdiff_t line_size, int32_t h);
49void ff_put_pixels4_xy2_msa(uint8_t *block, const uint8_t *pixels,
50                            ptrdiff_t line_size, int32_t h);
51void ff_put_no_rnd_pixels16_x2_msa(uint8_t *block, const uint8_t *pixels,
52                                   ptrdiff_t line_size, int32_t h);
53void ff_put_no_rnd_pixels16_y2_msa(uint8_t *block, const uint8_t *pixels,
54                                   ptrdiff_t line_size, int32_t h);
55void ff_put_no_rnd_pixels16_xy2_msa(uint8_t *block, const uint8_t *pixels,
56                                    ptrdiff_t line_size, int32_t h);
57void ff_put_no_rnd_pixels8_x2_msa(uint8_t *block, const uint8_t *pixels,
58                                  ptrdiff_t line_size, int32_t h);
59void ff_put_no_rnd_pixels8_y2_msa(uint8_t *block, const uint8_t *pixels,
60                                  ptrdiff_t line_size, int32_t h);
61void ff_put_no_rnd_pixels8_xy2_msa(uint8_t *block, const uint8_t *pixels,
62                                   ptrdiff_t line_size, int32_t h);
63void ff_avg_pixels16_msa(uint8_t *block, const uint8_t *pixels,
64                         ptrdiff_t line_size, int32_t h);
65void ff_avg_pixels16_x2_msa(uint8_t *block, const uint8_t *pixels,
66                            ptrdiff_t line_size, int32_t h);
67void ff_avg_pixels16_y2_msa(uint8_t *block, const uint8_t *pixels,
68                            ptrdiff_t line_size, int32_t h);
69void ff_avg_pixels16_xy2_msa(uint8_t *block, const uint8_t *pixels,
70                             ptrdiff_t line_size, int32_t h);
71void ff_avg_pixels8_msa(uint8_t *block, const uint8_t *pixels,
72                        ptrdiff_t line_size, int32_t h);
73void ff_avg_pixels8_x2_msa(uint8_t *block, const uint8_t *pixels,
74                           ptrdiff_t line_size, int32_t h);
75void ff_avg_pixels8_y2_msa(uint8_t *block, const uint8_t *pixels,
76                           ptrdiff_t line_size, int32_t h);
77void ff_avg_pixels8_xy2_msa(uint8_t *block, const uint8_t *pixels,
78                            ptrdiff_t line_size, int32_t h);
79void ff_avg_pixels4_msa(uint8_t *block, const uint8_t *pixels,
80                        ptrdiff_t line_size, int32_t h);
81void ff_avg_pixels4_x2_msa(uint8_t *block, const uint8_t *pixels,
82                           ptrdiff_t line_size, int32_t h);
83void ff_avg_pixels4_y2_msa(uint8_t *block, const uint8_t *pixels,
84                           ptrdiff_t line_size, int32_t h);
85void ff_avg_pixels4_xy2_msa(uint8_t *block, const uint8_t *pixels,
86                            ptrdiff_t line_size, int32_t h);
87
88void ff_put_pixels16_l2_8_mmi(uint8_t *dst, const uint8_t *src1,
89    const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2,
90    int h);
91void ff_put_pixels8_l2_8_mmi(uint8_t *dst, const uint8_t *src1,
92    const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2,
93    int h);
94void ff_put_pixels4_l2_8_mmi(uint8_t *dst, const uint8_t *src1,
95    const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2,
96    int h);
97void ff_avg_pixels16_l2_8_mmi(uint8_t *dst, const uint8_t *src1,
98    const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2,
99    int h);
100void ff_avg_pixels8_l2_8_mmi(uint8_t *dst, const uint8_t *src1,
101    const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2,
102    int h);
103void ff_avg_pixels4_l2_8_mmi(uint8_t *dst, const uint8_t *src1,
104    const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2,
105    int h);
106void ff_put_no_rnd_pixels16_l2_8_mmi(uint8_t *dst, const uint8_t *src1,
107    const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2,
108    int h);
109void ff_put_no_rnd_pixels8_l2_8_mmi(uint8_t *dst, const uint8_t *src1,
110    const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2,
111    int h);
112
113void ff_put_pixels16_8_mmi(uint8_t *block, const uint8_t *pixels,
114    ptrdiff_t line_size, int32_t h);
115void ff_put_pixels16_x2_8_mmi(uint8_t *block, const uint8_t *pixels,
116    ptrdiff_t line_size, int32_t h);
117void ff_put_pixels16_y2_8_mmi(uint8_t *block, const uint8_t *pixels,
118    ptrdiff_t line_size, int32_t h);
119void ff_put_pixels16_xy2_8_mmi(uint8_t *block, const uint8_t *pixels,
120    ptrdiff_t line_size, int32_t h);
121void ff_put_pixels8_8_mmi(uint8_t *block, const uint8_t *pixels,
122    ptrdiff_t line_size, int32_t h);
123void ff_put_pixels8_x2_8_mmi(uint8_t *block, const uint8_t *pixels,
124    ptrdiff_t line_size, int32_t h);
125void ff_put_pixels8_y2_8_mmi(uint8_t *block, const uint8_t *pixels,
126    ptrdiff_t line_size, int32_t h);
127void ff_put_pixels8_xy2_8_mmi(uint8_t *block, const uint8_t *pixels,
128    ptrdiff_t line_size, int32_t h);
129void ff_put_pixels4_8_mmi(uint8_t *block, const uint8_t *pixels,
130    ptrdiff_t line_size, int32_t h);
131void ff_put_pixels4_x2_8_mmi(uint8_t *block, const uint8_t *pixels,
132    ptrdiff_t line_size, int32_t h);
133void ff_put_pixels4_y2_8_mmi(uint8_t *block, const uint8_t *pixels,
134    ptrdiff_t line_size, int32_t h);
135void ff_put_pixels4_xy2_8_mmi(uint8_t *block, const uint8_t *pixels,
136    ptrdiff_t line_size, int32_t h);
137void ff_put_no_rnd_pixels16_x2_8_mmi(uint8_t *block, const uint8_t *pixels,
138    ptrdiff_t line_size, int32_t h);
139void ff_put_no_rnd_pixels16_y2_8_mmi(uint8_t *block, const uint8_t *pixels,
140    ptrdiff_t line_size, int32_t h);
141void ff_put_no_rnd_pixels16_xy2_8_mmi(uint8_t *block, const uint8_t *pixels,
142    ptrdiff_t line_size, int32_t h);
143void ff_put_no_rnd_pixels8_x2_8_mmi(uint8_t *block, const uint8_t *pixels,
144    ptrdiff_t line_size, int32_t h);
145void ff_put_no_rnd_pixels8_y2_8_mmi(uint8_t *block, const uint8_t *pixels,
146    ptrdiff_t line_size, int32_t h);
147void ff_put_no_rnd_pixels8_xy2_8_mmi(uint8_t *block, const uint8_t *pixels,
148    ptrdiff_t line_size, int32_t h);
149void ff_avg_pixels16_8_mmi(uint8_t *block, const uint8_t *pixels,
150    ptrdiff_t line_size, int32_t h);
151void ff_avg_pixels16_x2_8_mmi(uint8_t *block, const uint8_t *pixels,
152    ptrdiff_t line_size, int32_t h);
153void ff_avg_pixels16_y2_8_mmi(uint8_t *block, const uint8_t *pixels,
154    ptrdiff_t line_size, int32_t h);
155void ff_avg_pixels16_xy2_8_mmi(uint8_t *block, const uint8_t *pixels,
156    ptrdiff_t line_size, int32_t h);
157void ff_avg_pixels8_8_mmi(uint8_t *block, const uint8_t *pixels,
158    ptrdiff_t line_size, int32_t h);
159void ff_avg_pixels8_x2_8_mmi(uint8_t *block, const uint8_t *pixels,
160    ptrdiff_t line_size, int32_t h);
161void ff_avg_pixels8_y2_8_mmi(uint8_t *block, const uint8_t *pixels,
162    ptrdiff_t line_size, int32_t h);
163void ff_avg_pixels8_xy2_8_mmi(uint8_t *block, const uint8_t *pixels,
164    ptrdiff_t line_size, int32_t h);
165void ff_avg_pixels4_8_mmi(uint8_t *block, const uint8_t *pixels,
166    ptrdiff_t line_size, int32_t h);
167void ff_avg_pixels4_x2_8_mmi(uint8_t *block, const uint8_t *pixels,
168    ptrdiff_t line_size, int32_t h);
169void ff_avg_pixels4_y2_8_mmi(uint8_t *block, const uint8_t *pixels,
170    ptrdiff_t line_size, int32_t h);
171void ff_avg_pixels4_xy2_8_mmi(uint8_t *block, const uint8_t *pixels,
172    ptrdiff_t line_size, int32_t h);
173
174#endif  // #ifndef AVCODEC_MIPS_HPELDSP_MIPS_H
175