/*
* Copyright ( c ) 2022 The WebM project authors . All Rights Reserved .
*
* Use of this source code is governed by a BSD - style license
* that can be found in the LICENSE file in the root of the source
* tree . An additional intellectual property rights grant can be found
* in the file PATENTS . All contributing project authors may
* be found in the AUTHORS file in the root of the source tree .
*/
#ifndef VPX_VPX_DSP_LOONGARCH_VARIANCE_LSX_H_
#define VPX_VPX_DSP_LOONGARCH_VARIANCE_LSX_H_
#include "vpx_util/loongson_intrinsics.h"
#define HADD_SW_S32(in0, in1) \
do { \
__m128i res0_m; \
\
res0_m = __lsx_vhaddw_d_w(in0, in0); \
res0_m = __lsx_vhaddw_q_d(res0_m, res0_m); \
in1 = __lsx_vpickve2gr_w(res0_m, 0 ); \
} while (0 )
#define HORIZ_2TAP_FILT_UH(in0, in1, mask, coeff, shift, in2) \
do { \
__m128i tmp0_m, tmp1_m; \
\
tmp0_m = __lsx_vshuf_b(in1, in0, mask); \
tmp1_m = __lsx_vdp2_h_bu(tmp0_m, coeff); \
in2 = __lsx_vsrari_h(tmp1_m, shift); \
} while (0 )
#define CALC_MSE_B(src, ref, var) \
do { \
__m128i src_l0_m, src_l1_m; \
__m128i res_l0_m, res_l1_m; \
\
src_l0_m = __lsx_vilvl_b(src, ref); \
src_l1_m = __lsx_vilvh_b(src, ref); \
DUP2_ARG2(__lsx_vhsubw_hu_bu, src_l0_m, src_l0_m, src_l1_m, src_l1_m, \
res_l0_m, res_l1_m); \
var = __lsx_vdp2add_w_h(var, res_l0_m, res_l0_m); \
var = __lsx_vdp2add_w_h(var, res_l1_m, res_l1_m); \
} while (0 )
#define CALC_MSE_AVG_B(src, ref, var, sub) \
do { \
__m128i src_l0_m, src_l1_m; \
__m128i res_l0_m, res_l1_m; \
\
src_l0_m = __lsx_vilvl_b(src, ref); \
src_l1_m = __lsx_vilvh_b(src, ref); \
DUP2_ARG2(__lsx_vhsubw_hu_bu, src_l0_m, src_l0_m, src_l1_m, src_l1_m, \
res_l0_m, res_l1_m); \
var = __lsx_vdp2add_w_h(var, res_l0_m, res_l0_m); \
var = __lsx_vdp2add_w_h(var, res_l1_m, res_l1_m); \
sub = __lsx_vadd_h(sub, res_l0_m); \
sub = __lsx_vadd_h(sub, res_l1_m); \
} while (0 )
#endif // VPX_VPX_DSP_LOONGARCH_VARIANCE_LSX_H_
Messung V0.5 in Prozent C=92 H=78 G=84
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-08-26)
¤
*© Formatika GbR, Deutschland