FFmpeg
Macros | Functions | Variables
vp9_mc_msa.c File Reference
#include "libavcodec/vp9dsp.h"
#include "libavutil/mips/generic_macros_msa.h"
#include "vp9dsp_mips.h"

Go to the source code of this file.

Macros

#define FILT_8TAP_DPADD_S_H(vec0, vec1, vec2, vec3, filt0, filt1, filt2, filt3)
 
#define HORIZ_8TAP_FILT(src0, src1, mask0, mask1, mask2, mask3, filt_h0, filt_h1, filt_h2, filt_h3)
 
#define HORIZ_8TAP_4WID_4VECS_FILT(src0, src1, src2, src3, mask0, mask1, mask2, mask3, filt0, filt1, filt2, filt3, out0, out1)
 
#define HORIZ_8TAP_8WID_4VECS_FILT(src0, src1, src2, src3, mask0, mask1, mask2, mask3, filt0, filt1, filt2, filt3, out0, out1, out2, out3)
 
#define PCKEV_XORI128_AVG_ST_UB(in0, in1, dst, pdst)
 
#define PCKEV_AVG_ST_UB(in0, in1, dst, pdst)
 
#define PCKEV_AVG_ST8x4_UB(in0, in1, in2, in3, dst0, dst1, pdst, stride)
 
#define VP9_8TAP_MIPS_MSA_FUNC(SIZE, type, type_idx)
 
#define VP9_COPY_AVG_MIPS_MSA_FUNC(SIZE)
 
#define VP9_AVG_MIPS_MSA_FUNC(SIZE)
 

Functions

static void common_hz_8t_4x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_hz_8t_4x8_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_hz_8t_4w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hz_8t_8x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_hz_8t_8x8mult_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hz_8t_8w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hz_8t_16w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hz_8t_32w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hz_8t_64w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_4w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_8w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_16w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_16w_mult_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height, int32_t width)
 
static void common_vt_8t_32w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_64w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hv_8ht_8vt_4w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
static void common_hv_8ht_8vt_8w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
static void common_hv_8ht_8vt_16w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
static void common_hv_8ht_8vt_32w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
static void common_hv_8ht_8vt_64w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
static void common_hz_8t_and_aver_dst_4x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_hz_8t_and_aver_dst_4x8_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_hz_8t_and_aver_dst_4w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hz_8t_and_aver_dst_8w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hz_8t_and_aver_dst_16w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hz_8t_and_aver_dst_32w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hz_8t_and_aver_dst_64w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_and_aver_dst_4w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_and_aver_dst_8w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_and_aver_dst_16w_mult_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height, int32_t width)
 
static void common_vt_8t_and_aver_dst_16w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_and_aver_dst_32w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_vt_8t_and_aver_dst_64w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
static void common_hv_8ht_8vt_and_aver_dst_4w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
static void common_hv_8ht_8vt_and_aver_dst_8w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
static void common_hv_8ht_8vt_and_aver_dst_16w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
static void common_hv_8ht_8vt_and_aver_dst_32w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
static void common_hv_8ht_8vt_and_aver_dst_64w_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
static void common_hz_2t_4x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_hz_2t_4x8_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
void ff_put_bilin_4h_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_hz_2t_8x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_hz_2t_8x8mult_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
void ff_put_bilin_8h_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_put_bilin_16h_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_put_bilin_32h_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_put_bilin_64h_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_vt_2t_4x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_vt_2t_4x8_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
void ff_put_bilin_4v_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_vt_2t_8x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_vt_2t_8x8mult_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
void ff_put_bilin_8v_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_put_bilin_16v_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_put_bilin_32v_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_put_bilin_64v_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_hv_2ht_2vt_4x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert)
 
static void common_hv_2ht_2vt_4x8_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert)
 
void ff_put_bilin_4hv_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_hv_2ht_2vt_8x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert)
 
static void common_hv_2ht_2vt_8x8mult_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
void ff_put_bilin_8hv_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_put_bilin_16hv_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_put_bilin_32hv_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_put_bilin_64hv_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_hz_2t_and_aver_dst_4x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_hz_2t_and_aver_dst_4x8_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
void ff_avg_bilin_4h_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_hz_2t_and_aver_dst_8x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_hz_2t_and_aver_dst_8x8mult_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
void ff_avg_bilin_8h_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_avg_bilin_16h_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_avg_bilin_32h_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_avg_bilin_64h_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_vt_2t_and_aver_dst_4x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_vt_2t_and_aver_dst_4x8_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
void ff_avg_bilin_4v_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_vt_2t_and_aver_dst_8x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter)
 
static void common_vt_2t_and_aver_dst_8x8mult_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter, int32_t height)
 
void ff_avg_bilin_8v_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_avg_bilin_16v_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_avg_bilin_32v_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_avg_bilin_64v_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_hv_2ht_2vt_and_aver_dst_4x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert)
 
static void common_hv_2ht_2vt_and_aver_dst_4x8_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert)
 
void ff_avg_bilin_4hv_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void common_hv_2ht_2vt_and_aver_dst_8x4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert)
 
static void common_hv_2ht_2vt_and_aver_dst_8x8mult_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, const int8_t *filter_horiz, const int8_t *filter_vert, int32_t height)
 
void ff_avg_bilin_8hv_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_avg_bilin_16hv_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_avg_bilin_32hv_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
void ff_avg_bilin_64hv_msa (uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *src, ptrdiff_t src_stride, int height, int mx, int my)
 
static void copy_width8_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, int32_t height)
 
static void copy_width16_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, int32_t height)
 
static void copy_width32_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, int32_t height)
 
static void copy_width64_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, int32_t height)
 
static void avg_width4_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, int32_t height)
 
static void avg_width8_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, int32_t height)
 
static void avg_width16_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, int32_t height)
 
static void avg_width32_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, int32_t height)
 
static void avg_width64_msa (const uint8_t *src, int32_t src_stride, uint8_t *dst, int32_t dst_stride, int32_t height)
 
 VP9_8TAP_MIPS_MSA_FUNC (64, regular, FILTER_8TAP_REGULAR)
 
 VP9_8TAP_MIPS_MSA_FUNC (32, regular, FILTER_8TAP_REGULAR)
 
 VP9_8TAP_MIPS_MSA_FUNC (16, regular, FILTER_8TAP_REGULAR)
 
 VP9_8TAP_MIPS_MSA_FUNC (8, regular, FILTER_8TAP_REGULAR)
 
 VP9_8TAP_MIPS_MSA_FUNC (4, regular, FILTER_8TAP_REGULAR)
 
 VP9_8TAP_MIPS_MSA_FUNC (64, sharp, FILTER_8TAP_SHARP)
 
 VP9_8TAP_MIPS_MSA_FUNC (32, sharp, FILTER_8TAP_SHARP)
 
 VP9_8TAP_MIPS_MSA_FUNC (16, sharp, FILTER_8TAP_SHARP)
 
 VP9_8TAP_MIPS_MSA_FUNC (8, sharp, FILTER_8TAP_SHARP)
 
 VP9_8TAP_MIPS_MSA_FUNC (4, sharp, FILTER_8TAP_SHARP)
 
 VP9_8TAP_MIPS_MSA_FUNC (64, smooth, FILTER_8TAP_SMOOTH)
 
 VP9_8TAP_MIPS_MSA_FUNC (32, smooth, FILTER_8TAP_SMOOTH)
 
 VP9_8TAP_MIPS_MSA_FUNC (16, smooth, FILTER_8TAP_SMOOTH)
 
 VP9_8TAP_MIPS_MSA_FUNC (8, smooth, FILTER_8TAP_SMOOTH)
 
 VP9_8TAP_MIPS_MSA_FUNC (4, smooth, FILTER_8TAP_SMOOTH)
 
 VP9_COPY_AVG_MIPS_MSA_FUNC (64)
 
 VP9_COPY_AVG_MIPS_MSA_FUNC (32)
 
 VP9_COPY_AVG_MIPS_MSA_FUNC (16)
 
 VP9_COPY_AVG_MIPS_MSA_FUNC (8)
 
 VP9_AVG_MIPS_MSA_FUNC (4)
 

Variables

static const uint8_t mc_filt_mask_arr [16 *3]
 
static const int8_t vp9_bilinear_filters_msa [15][2]
 
static const int8_t vp9_subpel_filters_msa [3][15][8]
 

Macro Definition Documentation

◆ FILT_8TAP_DPADD_S_H

#define FILT_8TAP_DPADD_S_H (   vec0,
  vec1,
  vec2,
  vec3,
  filt0,
  filt1,
  filt2,
  filt3 
)
Value:
( { \
v8i16 tmp0, tmp1; \
\
tmp0 = __msa_dotp_s_h((v16i8) vec0, (v16i8) filt0); \
tmp0 = __msa_dpadd_s_h(tmp0, (v16i8) vec1, (v16i8) filt1); \
tmp1 = __msa_dotp_s_h((v16i8) vec2, (v16i8) filt2); \
tmp1 = __msa_dpadd_s_h(tmp1, (v16i8) vec3, (v16i8) filt3); \
tmp0 = __msa_adds_s_h(tmp0, tmp1); \
\
tmp0; \
} )

Definition at line 52 of file vp9_mc_msa.c.

◆ HORIZ_8TAP_FILT

#define HORIZ_8TAP_FILT (   src0,
  src1,
  mask0,
  mask1,
  mask2,
  mask3,
  filt_h0,
  filt_h1,
  filt_h2,
  filt_h3 
)
Value:
( { \
v16i8 vec0_m, vec1_m, vec2_m, vec3_m; \
v8i16 hz_out_m; \
VSHF_B4_SB(src0, src1, mask0, mask1, mask2, mask3, \
vec0_m, vec1_m, vec2_m, vec3_m); \
hz_out_m = FILT_8TAP_DPADD_S_H(vec0_m, vec1_m, vec2_m, vec3_m, \
filt_h0, filt_h1, filt_h2, filt_h3); \
\
hz_out_m = __msa_srari_h(hz_out_m, 7); \
hz_out_m = __msa_sat_s_h(hz_out_m, 7); \
\
hz_out_m; \
} )

Definition at line 66 of file vp9_mc_msa.c.

◆ HORIZ_8TAP_4WID_4VECS_FILT

#define HORIZ_8TAP_4WID_4VECS_FILT (   src0,
  src1,
  src2,
  src3,
  mask0,
  mask1,
  mask2,
  mask3,
  filt0,
  filt1,
  filt2,
  filt3,
  out0,
  out1 
)
Value:
{ \
v16i8 vec0_m, vec1_m, vec2_m, vec3_m, vec4_m, vec5_m, vec6_m, vec7_m; \
v8i16 res0_m, res1_m, res2_m, res3_m; \
VSHF_B2_SB(src0, src1, src2, src3, mask0, mask0, vec0_m, vec1_m); \
DOTP_SB2_SH(vec0_m, vec1_m, filt0, filt0, res0_m, res1_m); \
VSHF_B2_SB(src0, src1, src2, src3, mask1, mask1, vec2_m, vec3_m); \
DPADD_SB2_SH(vec2_m, vec3_m, filt1, filt1, res0_m, res1_m); \
VSHF_B2_SB(src0, src1, src2, src3, mask2, mask2, vec4_m, vec5_m); \
DOTP_SB2_SH(vec4_m, vec5_m, filt2, filt2, res2_m, res3_m); \
VSHF_B2_SB(src0, src1, src2, src3, mask3, mask3, vec6_m, vec7_m); \
DPADD_SB2_SH(vec6_m, vec7_m, filt3, filt3, res2_m, res3_m); \
ADDS_SH2_SH(res0_m, res2_m, res1_m, res3_m, out0, out1); \
}

Definition at line 83 of file vp9_mc_msa.c.

◆ HORIZ_8TAP_8WID_4VECS_FILT

#define HORIZ_8TAP_8WID_4VECS_FILT (   src0,
  src1,
  src2,
  src3,
  mask0,
  mask1,
  mask2,
  mask3,
  filt0,
  filt1,
  filt2,
  filt3,
  out0,
  out1,
  out2,
  out3 
)
Value:
{ \
v16i8 vec0_m, vec1_m, vec2_m, vec3_m, vec4_m, vec5_m, vec6_m, vec7_m; \
v8i16 res0_m, res1_m, res2_m, res3_m, res4_m, res5_m, res6_m, res7_m; \
VSHF_B2_SB(src0, src0, src1, src1, mask0, mask0, vec0_m, vec1_m); \
VSHF_B2_SB(src2, src2, src3, src3, mask0, mask0, vec2_m, vec3_m); \
DOTP_SB4_SH(vec0_m, vec1_m, vec2_m, vec3_m, filt0, filt0, filt0, filt0, \
res0_m, res1_m, res2_m, res3_m); \
VSHF_B2_SB(src0, src0, src1, src1, mask2, mask2, vec0_m, vec1_m); \
VSHF_B2_SB(src2, src2, src3, src3, mask2, mask2, vec2_m, vec3_m); \
DOTP_SB4_SH(vec0_m, vec1_m, vec2_m, vec3_m, filt2, filt2, filt2, filt2, \
res4_m, res5_m, res6_m, res7_m); \
VSHF_B2_SB(src0, src0, src1, src1, mask1, mask1, vec4_m, vec5_m); \
VSHF_B2_SB(src2, src2, src3, src3, mask1, mask1, vec6_m, vec7_m); \
DPADD_SB4_SH(vec4_m, vec5_m, vec6_m, vec7_m, filt1, filt1, filt1, filt1, \
res0_m, res1_m, res2_m, res3_m); \
VSHF_B2_SB(src0, src0, src1, src1, mask3, mask3, vec4_m, vec5_m); \
VSHF_B2_SB(src2, src2, src3, src3, mask3, mask3, vec6_m, vec7_m); \
DPADD_SB4_SH(vec4_m, vec5_m, vec6_m, vec7_m, filt3, filt3, filt3, filt3, \
res4_m, res5_m, res6_m, res7_m); \
ADDS_SH4_SH(res0_m, res4_m, res1_m, res5_m, res2_m, res6_m, res3_m, \
res7_m, out0, out1, out2, out3); \
}

Definition at line 102 of file vp9_mc_msa.c.

◆ PCKEV_XORI128_AVG_ST_UB

#define PCKEV_XORI128_AVG_ST_UB (   in0,
  in1,
  dst,
  pdst 
)
Value:
{ \
v16u8 tmp_m; \
\
tmp_m = PCKEV_XORI128_UB(in1, in0); \
tmp_m = __msa_aver_u_b(tmp_m, (v16u8) dst); \
ST_UB(tmp_m, (pdst)); \
}

Definition at line 130 of file vp9_mc_msa.c.

◆ PCKEV_AVG_ST_UB

#define PCKEV_AVG_ST_UB (   in0,
  in1,
  dst,
  pdst 
)
Value:
{ \
v16u8 tmp_m; \
\
tmp_m = (v16u8) __msa_pckev_b((v16i8) in0, (v16i8) in1); \
tmp_m = __msa_aver_u_b(tmp_m, (v16u8) dst); \
ST_UB(tmp_m, (pdst)); \
}

Definition at line 139 of file vp9_mc_msa.c.

◆ PCKEV_AVG_ST8x4_UB

#define PCKEV_AVG_ST8x4_UB (   in0,
  in1,
  in2,
  in3,
  dst0,
  dst1,
  pdst,
  stride 
)
Value:
{ \
v16u8 tmp0_m, tmp1_m; \
uint8_t *pdst_m = (uint8_t *) (pdst); \
PCKEV_B2_UB(in1, in0, in3, in2, tmp0_m, tmp1_m); \
AVER_UB2_UB(tmp0_m, dst0, tmp1_m, dst1, tmp0_m, tmp1_m); \
ST_D4(tmp0_m, tmp1_m, 0, 1, 0, 1, pdst_m, stride); \
}

Definition at line 148 of file vp9_mc_msa.c.

◆ VP9_8TAP_MIPS_MSA_FUNC

#define VP9_8TAP_MIPS_MSA_FUNC (   SIZE,
  type,
  type_idx 
)

Definition at line 4326 of file vp9_mc_msa.c.

◆ VP9_COPY_AVG_MIPS_MSA_FUNC

#define VP9_COPY_AVG_MIPS_MSA_FUNC (   SIZE)
Value:
void ff_copy##SIZE##_msa(uint8_t *dst, ptrdiff_t dststride, \
const uint8_t *src, ptrdiff_t srcstride, \
int h, int mx, int my) \
{ \
\
copy_width##SIZE##_msa(src, srcstride, dst, dststride, h); \
} \
\
void ff_avg##SIZE##_msa(uint8_t *dst, ptrdiff_t dststride, \
const uint8_t *src, ptrdiff_t srcstride, \
int h, int mx, int my) \
{ \
\
avg_width##SIZE##_msa(src, srcstride, dst, dststride, h); \
}

Definition at line 4394 of file vp9_mc_msa.c.

◆ VP9_AVG_MIPS_MSA_FUNC

#define VP9_AVG_MIPS_MSA_FUNC (   SIZE)
Value:
void ff_avg##SIZE##_msa(uint8_t *dst, ptrdiff_t dststride, \
const uint8_t *src, ptrdiff_t srcstride, \
int h, int mx, int my) \
{ \
\
avg_width##SIZE##_msa(src, srcstride, dst, dststride, h); \
}

Definition at line 4411 of file vp9_mc_msa.c.

Function Documentation

◆ common_hz_8t_4x4_msa()

static void common_hz_8t_4x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 159 of file vp9_mc_msa.c.

Referenced by common_hz_8t_4w_msa().

◆ common_hz_8t_4x8_msa()

static void common_hz_8t_4x8_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 188 of file vp9_mc_msa.c.

Referenced by common_hz_8t_4w_msa().

◆ common_hz_8t_4w_msa()

static void common_hz_8t_4w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 225 of file vp9_mc_msa.c.

◆ common_hz_8t_8x4_msa()

static void common_hz_8t_8x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 236 of file vp9_mc_msa.c.

Referenced by common_hz_8t_8w_msa().

◆ common_hz_8t_8x8mult_msa()

static void common_hz_8t_8x8mult_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 267 of file vp9_mc_msa.c.

Referenced by common_hz_8t_8w_msa().

◆ common_hz_8t_8w_msa()

static void common_hz_8t_8w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 303 of file vp9_mc_msa.c.

◆ common_hz_8t_16w_msa()

static void common_hz_8t_16w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 315 of file vp9_mc_msa.c.

◆ common_hz_8t_32w_msa()

static void common_hz_8t_32w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 354 of file vp9_mc_msa.c.

◆ common_hz_8t_64w_msa()

static void common_hz_8t_64w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 413 of file vp9_mc_msa.c.

◆ common_vt_8t_4w_msa()

static void common_vt_8t_4w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 470 of file vp9_mc_msa.c.

◆ common_vt_8t_8w_msa()

static void common_vt_8t_8w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 522 of file vp9_mc_msa.c.

◆ common_vt_8t_16w_msa()

static void common_vt_8t_16w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 577 of file vp9_mc_msa.c.

◆ common_vt_8t_16w_mult_msa()

static void common_vt_8t_16w_mult_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height,
int32_t  width 
)
static

Definition at line 656 of file vp9_mc_msa.c.

Referenced by common_vt_8t_32w_msa(), and common_vt_8t_64w_msa().

◆ common_vt_8t_32w_msa()

static void common_vt_8t_32w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 745 of file vp9_mc_msa.c.

◆ common_vt_8t_64w_msa()

static void common_vt_8t_64w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 753 of file vp9_mc_msa.c.

◆ common_hv_8ht_8vt_4w_msa()

static void common_hv_8ht_8vt_4w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

Definition at line 761 of file vp9_mc_msa.c.

◆ common_hv_8ht_8vt_8w_msa()

static void common_hv_8ht_8vt_8w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

◆ common_hv_8ht_8vt_16w_msa()

static void common_hv_8ht_8vt_16w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

Definition at line 935 of file vp9_mc_msa.c.

◆ common_hv_8ht_8vt_32w_msa()

static void common_hv_8ht_8vt_32w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

Definition at line 952 of file vp9_mc_msa.c.

◆ common_hv_8ht_8vt_64w_msa()

static void common_hv_8ht_8vt_64w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

Definition at line 969 of file vp9_mc_msa.c.

◆ common_hz_8t_and_aver_dst_4x4_msa()

static void common_hz_8t_and_aver_dst_4x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 986 of file vp9_mc_msa.c.

Referenced by common_hz_8t_and_aver_dst_4w_msa().

◆ common_hz_8t_and_aver_dst_4x8_msa()

static void common_hz_8t_and_aver_dst_4x8_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 1021 of file vp9_mc_msa.c.

Referenced by common_hz_8t_and_aver_dst_4w_msa().

◆ common_hz_8t_and_aver_dst_4w_msa()

static void common_hz_8t_and_aver_dst_4w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1066 of file vp9_mc_msa.c.

◆ common_hz_8t_and_aver_dst_8w_msa()

static void common_hz_8t_and_aver_dst_8w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1081 of file vp9_mc_msa.c.

◆ common_hz_8t_and_aver_dst_16w_msa()

static void common_hz_8t_and_aver_dst_16w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1122 of file vp9_mc_msa.c.

◆ common_hz_8t_and_aver_dst_32w_msa()

static void common_hz_8t_and_aver_dst_32w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1180 of file vp9_mc_msa.c.

◆ common_hz_8t_and_aver_dst_64w_msa()

static void common_hz_8t_and_aver_dst_64w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1239 of file vp9_mc_msa.c.

◆ common_vt_8t_and_aver_dst_4w_msa()

static void common_vt_8t_and_aver_dst_4w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1301 of file vp9_mc_msa.c.

◆ common_vt_8t_and_aver_dst_8w_msa()

static void common_vt_8t_and_aver_dst_8w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1360 of file vp9_mc_msa.c.

◆ common_vt_8t_and_aver_dst_16w_mult_msa()

static void common_vt_8t_and_aver_dst_16w_mult_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height,
int32_t  width 
)
static

◆ common_vt_8t_and_aver_dst_16w_msa()

static void common_vt_8t_and_aver_dst_16w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1518 of file vp9_mc_msa.c.

◆ common_vt_8t_and_aver_dst_32w_msa()

static void common_vt_8t_and_aver_dst_32w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1528 of file vp9_mc_msa.c.

◆ common_vt_8t_and_aver_dst_64w_msa()

static void common_vt_8t_and_aver_dst_64w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1538 of file vp9_mc_msa.c.

◆ common_hv_8ht_8vt_and_aver_dst_4w_msa()

static void common_hv_8ht_8vt_and_aver_dst_4w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

Definition at line 1548 of file vp9_mc_msa.c.

◆ common_hv_8ht_8vt_and_aver_dst_8w_msa()

static void common_hv_8ht_8vt_and_aver_dst_8w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

◆ common_hv_8ht_8vt_and_aver_dst_16w_msa()

static void common_hv_8ht_8vt_and_aver_dst_16w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

Definition at line 1735 of file vp9_mc_msa.c.

◆ common_hv_8ht_8vt_and_aver_dst_32w_msa()

static void common_hv_8ht_8vt_and_aver_dst_32w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

Definition at line 1755 of file vp9_mc_msa.c.

◆ common_hv_8ht_8vt_and_aver_dst_64w_msa()

static void common_hv_8ht_8vt_and_aver_dst_64w_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

Definition at line 1775 of file vp9_mc_msa.c.

◆ common_hz_2t_4x4_msa()

static void common_hz_2t_4x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 1795 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_4h_msa().

◆ common_hz_2t_4x8_msa()

static void common_hz_2t_4x8_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 1818 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_4h_msa().

◆ ff_put_bilin_4h_msa()

void ff_put_bilin_4h_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 1847 of file vp9_mc_msa.c.

◆ common_hz_2t_8x4_msa()

static void common_hz_2t_8x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 1860 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_8h_msa().

◆ common_hz_2t_8x8mult_msa()

static void common_hz_2t_8x8mult_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 1884 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_8h_msa().

◆ ff_put_bilin_8h_msa()

void ff_put_bilin_8h_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 1946 of file vp9_mc_msa.c.

◆ ff_put_bilin_16h_msa()

void ff_put_bilin_16h_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 1960 of file vp9_mc_msa.c.

◆ ff_put_bilin_32h_msa()

void ff_put_bilin_32h_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2027 of file vp9_mc_msa.c.

◆ ff_put_bilin_64h_msa()

void ff_put_bilin_64h_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2074 of file vp9_mc_msa.c.

◆ common_vt_2t_4x4_msa()

static void common_vt_2t_4x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 2117 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_4v_msa().

◆ common_vt_2t_4x8_msa()

static void common_vt_2t_4x8_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 2143 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_4v_msa().

◆ ff_put_bilin_4v_msa()

void ff_put_bilin_4v_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2177 of file vp9_mc_msa.c.

◆ common_vt_2t_8x4_msa()

static void common_vt_2t_8x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 2190 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_8v_msa().

◆ common_vt_2t_8x8mult_msa()

static void common_vt_2t_8x8mult_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 2214 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_8v_msa().

◆ ff_put_bilin_8v_msa()

void ff_put_bilin_8v_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2259 of file vp9_mc_msa.c.

◆ ff_put_bilin_16v_msa()

void ff_put_bilin_16v_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2273 of file vp9_mc_msa.c.

◆ ff_put_bilin_32v_msa()

void ff_put_bilin_32v_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2327 of file vp9_mc_msa.c.

◆ ff_put_bilin_64v_msa()

void ff_put_bilin_64v_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2405 of file vp9_mc_msa.c.

◆ common_hv_2ht_2vt_4x4_msa()

static void common_hv_2ht_2vt_4x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert 
)
static

Definition at line 2486 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_4hv_msa().

◆ common_hv_2ht_2vt_4x8_msa()

static void common_hv_2ht_2vt_4x8_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert 
)
static

Definition at line 2519 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_4hv_msa().

◆ ff_put_bilin_4hv_msa()

void ff_put_bilin_4hv_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2565 of file vp9_mc_msa.c.

◆ common_hv_2ht_2vt_8x4_msa()

static void common_hv_2ht_2vt_8x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert 
)
static

Definition at line 2581 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_8hv_msa().

◆ common_hv_2ht_2vt_8x8mult_msa()

static void common_hv_2ht_2vt_8x8mult_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

Definition at line 2624 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_8hv_msa().

◆ ff_put_bilin_8hv_msa()

void ff_put_bilin_8hv_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2703 of file vp9_mc_msa.c.

◆ ff_put_bilin_16hv_msa()

void ff_put_bilin_16hv_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2719 of file vp9_mc_msa.c.

Referenced by ff_put_bilin_32hv_msa(), and ff_put_bilin_64hv_msa().

◆ ff_put_bilin_32hv_msa()

void ff_put_bilin_32hv_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2790 of file vp9_mc_msa.c.

◆ ff_put_bilin_64hv_msa()

void ff_put_bilin_64hv_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2804 of file vp9_mc_msa.c.

◆ common_hz_2t_and_aver_dst_4x4_msa()

static void common_hz_2t_and_aver_dst_4x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 2818 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_4h_msa().

◆ common_hz_2t_and_aver_dst_4x8_msa()

static void common_hz_2t_and_aver_dst_4x8_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 2847 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_4h_msa().

◆ ff_avg_bilin_4h_msa()

void ff_avg_bilin_4h_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2881 of file vp9_mc_msa.c.

◆ common_hz_2t_and_aver_dst_8x4_msa()

static void common_hz_2t_and_aver_dst_8x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 2896 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_8h_msa().

◆ common_hz_2t_and_aver_dst_8x8mult_msa()

static void common_hz_2t_and_aver_dst_8x8mult_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 2924 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_8h_msa().

◆ ff_avg_bilin_8h_msa()

void ff_avg_bilin_8h_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 2996 of file vp9_mc_msa.c.

◆ ff_avg_bilin_16h_msa()

void ff_avg_bilin_16h_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3011 of file vp9_mc_msa.c.

◆ ff_avg_bilin_32h_msa()

void ff_avg_bilin_32h_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3079 of file vp9_mc_msa.c.

◆ ff_avg_bilin_64h_msa()

void ff_avg_bilin_64h_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3129 of file vp9_mc_msa.c.

◆ common_vt_2t_and_aver_dst_4x4_msa()

static void common_vt_2t_and_aver_dst_4x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 3171 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_4v_msa().

◆ common_vt_2t_and_aver_dst_4x8_msa()

static void common_vt_2t_and_aver_dst_4x8_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 3207 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_4v_msa().

◆ ff_avg_bilin_4v_msa()

void ff_avg_bilin_4v_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3246 of file vp9_mc_msa.c.

◆ common_vt_2t_and_aver_dst_8x4_msa()

static void common_vt_2t_and_aver_dst_8x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter 
)
static

Definition at line 3261 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_8v_msa().

◆ common_vt_2t_and_aver_dst_8x8mult_msa()

static void common_vt_2t_and_aver_dst_8x8mult_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter,
int32_t  height 
)
static

Definition at line 3290 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_8v_msa().

◆ ff_avg_bilin_8v_msa()

void ff_avg_bilin_8v_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3345 of file vp9_mc_msa.c.

◆ ff_avg_bilin_16v_msa()

void ff_avg_bilin_16v_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3360 of file vp9_mc_msa.c.

◆ ff_avg_bilin_32v_msa()

void ff_avg_bilin_32v_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3414 of file vp9_mc_msa.c.

◆ ff_avg_bilin_64v_msa()

void ff_avg_bilin_64v_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3494 of file vp9_mc_msa.c.

◆ common_hv_2ht_2vt_and_aver_dst_4x4_msa()

static void common_hv_2ht_2vt_and_aver_dst_4x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert 
)
static

Definition at line 3581 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_4hv_msa().

◆ common_hv_2ht_2vt_and_aver_dst_4x8_msa()

static void common_hv_2ht_2vt_and_aver_dst_4x8_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert 
)
static

Definition at line 3625 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_4hv_msa().

◆ ff_avg_bilin_4hv_msa()

void ff_avg_bilin_4hv_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3677 of file vp9_mc_msa.c.

◆ common_hv_2ht_2vt_and_aver_dst_8x4_msa()

static void common_hv_2ht_2vt_and_aver_dst_8x4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert 
)
static

Definition at line 3693 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_8hv_msa().

◆ common_hv_2ht_2vt_and_aver_dst_8x8mult_msa()

static void common_hv_2ht_2vt_and_aver_dst_8x8mult_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
const int8_t *  filter_horiz,
const int8_t *  filter_vert,
int32_t  height 
)
static

Definition at line 3743 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_8hv_msa().

◆ ff_avg_bilin_8hv_msa()

void ff_avg_bilin_8hv_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3805 of file vp9_mc_msa.c.

◆ ff_avg_bilin_16hv_msa()

void ff_avg_bilin_16hv_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3823 of file vp9_mc_msa.c.

Referenced by ff_avg_bilin_32hv_msa(), and ff_avg_bilin_64hv_msa().

◆ ff_avg_bilin_32hv_msa()

void ff_avg_bilin_32hv_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3894 of file vp9_mc_msa.c.

◆ ff_avg_bilin_64hv_msa()

void ff_avg_bilin_64hv_msa ( uint8_t *  dst,
ptrdiff_t  dst_stride,
const uint8_t *  src,
ptrdiff_t  src_stride,
int  height,
int  mx,
int  my 
)

Definition at line 3908 of file vp9_mc_msa.c.

◆ copy_width8_msa()

static void copy_width8_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
int32_t  height 
)
static

Definition at line 3922 of file vp9_mc_msa.c.

◆ copy_width16_msa()

static void copy_width16_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
int32_t  height 
)
static

Definition at line 3952 of file vp9_mc_msa.c.

◆ copy_width32_msa()

static void copy_width32_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
int32_t  height 
)
static

Definition at line 3996 of file vp9_mc_msa.c.

◆ copy_width64_msa()

static void copy_width64_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
int32_t  height 
)
static

Definition at line 4026 of file vp9_mc_msa.c.

◆ avg_width4_msa()

static void avg_width4_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
int32_t  height 
)
static

Definition at line 4055 of file vp9_mc_msa.c.

◆ avg_width8_msa()

static void avg_width8_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
int32_t  height 
)
static

Definition at line 4084 of file vp9_mc_msa.c.

◆ avg_width16_msa()

static void avg_width16_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
int32_t  height 
)
static

Definition at line 4126 of file vp9_mc_msa.c.

◆ avg_width32_msa()

static void avg_width32_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
int32_t  height 
)
static

Definition at line 4161 of file vp9_mc_msa.c.

◆ avg_width64_msa()

static void avg_width64_msa ( const uint8_t *  src,
int32_t  src_stride,
uint8_t *  dst,
int32_t  dst_stride,
int32_t  height 
)
static

Definition at line 4224 of file vp9_mc_msa.c.

◆ VP9_8TAP_MIPS_MSA_FUNC() [1/15]

VP9_8TAP_MIPS_MSA_FUNC ( 64  ,
regular  ,
FILTER_8TAP_REGULAR   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [2/15]

VP9_8TAP_MIPS_MSA_FUNC ( 32  ,
regular  ,
FILTER_8TAP_REGULAR   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [3/15]

VP9_8TAP_MIPS_MSA_FUNC ( 16  ,
regular  ,
FILTER_8TAP_REGULAR   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [4/15]

VP9_8TAP_MIPS_MSA_FUNC ( ,
regular  ,
FILTER_8TAP_REGULAR   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [5/15]

VP9_8TAP_MIPS_MSA_FUNC ( ,
regular  ,
FILTER_8TAP_REGULAR   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [6/15]

VP9_8TAP_MIPS_MSA_FUNC ( 64  ,
sharp  ,
FILTER_8TAP_SHARP   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [7/15]

VP9_8TAP_MIPS_MSA_FUNC ( 32  ,
sharp  ,
FILTER_8TAP_SHARP   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [8/15]

VP9_8TAP_MIPS_MSA_FUNC ( 16  ,
sharp  ,
FILTER_8TAP_SHARP   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [9/15]

VP9_8TAP_MIPS_MSA_FUNC ( ,
sharp  ,
FILTER_8TAP_SHARP   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [10/15]

VP9_8TAP_MIPS_MSA_FUNC ( ,
sharp  ,
FILTER_8TAP_SHARP   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [11/15]

VP9_8TAP_MIPS_MSA_FUNC ( 64  ,
smooth  ,
FILTER_8TAP_SMOOTH   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [12/15]

VP9_8TAP_MIPS_MSA_FUNC ( 32  ,
smooth  ,
FILTER_8TAP_SMOOTH   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [13/15]

VP9_8TAP_MIPS_MSA_FUNC ( 16  ,
smooth  ,
FILTER_8TAP_SMOOTH   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [14/15]

VP9_8TAP_MIPS_MSA_FUNC ( ,
smooth  ,
FILTER_8TAP_SMOOTH   
)

◆ VP9_8TAP_MIPS_MSA_FUNC() [15/15]

VP9_8TAP_MIPS_MSA_FUNC ( ,
smooth  ,
FILTER_8TAP_SMOOTH   
)

◆ VP9_COPY_AVG_MIPS_MSA_FUNC() [1/4]

VP9_COPY_AVG_MIPS_MSA_FUNC ( 64  )

◆ VP9_COPY_AVG_MIPS_MSA_FUNC() [2/4]

VP9_COPY_AVG_MIPS_MSA_FUNC ( 32  )

◆ VP9_COPY_AVG_MIPS_MSA_FUNC() [3/4]

VP9_COPY_AVG_MIPS_MSA_FUNC ( 16  )

◆ VP9_COPY_AVG_MIPS_MSA_FUNC() [4/4]

VP9_COPY_AVG_MIPS_MSA_FUNC ( )

◆ VP9_AVG_MIPS_MSA_FUNC()

VP9_AVG_MIPS_MSA_FUNC ( )

Variable Documentation

◆ mc_filt_mask_arr

const uint8_t mc_filt_mask_arr[16 *3]
static
Initial value:
= {
0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,
0, 1, 1, 2, 2, 3, 3, 4, 16, 17, 17, 18, 18, 19, 19, 20,
8, 9, 9, 10, 10, 11, 11, 12, 24, 25, 25, 26, 26, 27, 27, 28
}

Definition at line 25 of file vp9_mc_msa.c.

Referenced by common_hv_2ht_2vt_4x4_msa(), common_hv_2ht_2vt_4x8_msa(), common_hv_2ht_2vt_8x4_msa(), common_hv_2ht_2vt_8x8mult_msa(), common_hv_2ht_2vt_and_aver_dst_4x4_msa(), common_hv_2ht_2vt_and_aver_dst_4x8_msa(), common_hv_2ht_2vt_and_aver_dst_8x4_msa(), common_hv_2ht_2vt_and_aver_dst_8x8mult_msa(), common_hv_8ht_8vt_4w_msa(), common_hv_8ht_8vt_8w_msa(), common_hv_8ht_8vt_and_aver_dst_4w_msa(), common_hv_8ht_8vt_and_aver_dst_8w_msa(), common_hz_2t_4x4_msa(), common_hz_2t_4x8_msa(), common_hz_2t_8x4_msa(), common_hz_2t_8x8mult_msa(), common_hz_2t_and_aver_dst_4x4_msa(), common_hz_2t_and_aver_dst_4x8_msa(), common_hz_2t_and_aver_dst_8x4_msa(), common_hz_2t_and_aver_dst_8x8mult_msa(), common_hz_8t_16w_msa(), common_hz_8t_32w_msa(), common_hz_8t_4x4_msa(), common_hz_8t_4x8_msa(), common_hz_8t_64w_msa(), common_hz_8t_8x4_msa(), common_hz_8t_8x8mult_msa(), common_hz_8t_and_aver_dst_16w_msa(), common_hz_8t_and_aver_dst_32w_msa(), common_hz_8t_and_aver_dst_4x4_msa(), common_hz_8t_and_aver_dst_4x8_msa(), common_hz_8t_and_aver_dst_64w_msa(), common_hz_8t_and_aver_dst_8w_msa(), ff_avg_bilin_16h_msa(), ff_avg_bilin_16hv_msa(), ff_avg_bilin_32h_msa(), ff_avg_bilin_64h_msa(), ff_put_bilin_16h_msa(), ff_put_bilin_16hv_msa(), ff_put_bilin_32h_msa(), and ff_put_bilin_64h_msa().

◆ vp9_bilinear_filters_msa

const int8_t vp9_bilinear_filters_msa[15][2]
static

◆ vp9_subpel_filters_msa

const int8_t vp9_subpel_filters_msa[3][15][8]
static

Definition at line 4274 of file vp9_mc_msa.c.

VSHF_B2_SB
#define VSHF_B2_SB(...)
Definition: generic_macros_msa.h:662
src1
const pixel * src1
Definition: h264pred_template.c:421
VSHF_B4_SB
#define VSHF_B4_SB(...)
Definition: generic_macros_msa.h:680
PCKEV_B2_UB
#define PCKEV_B2_UB(...)
Definition: generic_macros_msa.h:1720
PCKEV_XORI128_UB
#define PCKEV_XORI128_UB(in0, in1)
Definition: generic_macros_msa.h:2751
SIZE
#define SIZE
Definition: bitstream_template.c:36
src2
const pixel * src2
Definition: h264pred_template.c:422
stride
#define stride
Definition: h264pred_template.c:537
src0
const pixel *const src0
Definition: h264pred_template.c:420
src
INIT_CLIP pixel * src
Definition: h264pred_template.c:418
h
h
Definition: vp9dsp_template.c:2038
FILT_8TAP_DPADD_S_H
#define FILT_8TAP_DPADD_S_H(vec0, vec1, vec2, vec3, filt0, filt1, filt2, filt3)
Definition: vp9_mc_msa.c:52