History

avcodec/mips: Unrolled loops and expanded functions in avc put mc 10 & 30 msa functions

Kaustubh Raste committed 9 years ago

Commit b5da07d1 parent 598e4161 file · +278 −6Browse files

Unified · Split

libavcodec/mips/h264qpel_msa.c+278−6
@@ -3065,37 +3065,309 @@ void ff_avg_h264_qpel4_mc00_msa(uint8_t *dst, const uint8_t *src, · 3064 unmodified lines
30653065 void ff_put_h264_qpel16_mc10_msa(uint8_t *dst, const uint8_t *src,
30663066 ptrdiff_t stride)
30673067 {
3068− avc_luma_hz_qrt_16w_msa(src - 2, stride, dst, stride, 16, 0);
3068+ uint32_t loop_cnt;
3069+ v16i8 dst0, dst1, dst2, dst3, src0, src1, src2, src3, src4, src5, src6;
3070+ v16i8 mask0, mask1, mask2, mask3, mask4, mask5, src7, vec11;
3071+ v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7, vec8, vec9, vec10;
3072+ v8i16 res0, res1, res2, res3, res4, res5, res6, res7;
3073+ v16i8 minus5b = __msa_ldi_b(-5);
3074+ v16i8 plus20b = __msa_ldi_b(20);
3075+
3076+ LD_SB3(&luma_mask_arr[0], 16, mask0, mask1, mask2);
3077+ mask3 = mask0 + 8;
3078+ mask4 = mask1 + 8;
3079+ mask5 = mask2 + 8;
3080+ src -= 2;
3081+
3082+ for (loop_cnt = 4; loop_cnt--;) {
3083+ LD_SB2(src, 16, src0, src1);
3084+ src += stride;
3085+ LD_SB2(src, 16, src2, src3);
3086+ src += stride;
3087+ LD_SB2(src, 16, src4, src5);
3088+ src += stride;
3089+ LD_SB2(src, 16, src6, src7);
3090+ src += stride;
3091+
3092+ XORI_B8_128_SB(src0, src1, src2, src3, src4, src5, src6, src7);
3093+ VSHF_B2_SB(src0, src0, src0, src1, mask0, mask3, vec0, vec3);
3094+ VSHF_B2_SB(src2, src2, src2, src3, mask0, mask3, vec6, vec9);
3095+ VSHF_B2_SB(src0, src0, src0, src1, mask1, mask4, vec1, vec4);
3096+ VSHF_B2_SB(src2, src2, src2, src3, mask1, mask4, vec7, vec10);
3097+ VSHF_B2_SB(src0, src0, src0, src1, mask2, mask5, vec2, vec5);
3098+ VSHF_B2_SB(src2, src2, src2, src3, mask2, mask5, vec8, vec11);
3099+ HADD_SB4_SH(vec0, vec3, vec6, vec9, res0, res1, res2, res3);
3100+ DPADD_SB4_SH(vec1, vec4, vec7, vec10, minus5b, minus5b, minus5b,
3101+ minus5b, res0, res1, res2, res3);
3102+ DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b,
3103+ plus20b, res0, res1, res2, res3);
3104+ VSHF_B2_SB(src4, src4, src4, src5, mask0, mask3, vec0, vec3);
3105+ VSHF_B2_SB(src6, src6, src6, src7, mask0, mask3, vec6, vec9);
3106+ VSHF_B2_SB(src4, src4, src4, src5, mask1, mask4, vec1, vec4);
3107+ VSHF_B2_SB(src6, src6, src6, src7, mask1, mask4, vec7, vec10);
3108+ VSHF_B2_SB(src4, src4, src4, src5, mask2, mask5, vec2, vec5);
3109+ VSHF_B2_SB(src6, src6, src6, src7, mask2, mask5, vec8, vec11);
3110+ HADD_SB4_SH(vec0, vec3, vec6, vec9, res4, res5, res6, res7);
3111+ DPADD_SB4_SH(vec1, vec4, vec7, vec10, minus5b, minus5b, minus5b,
3112+ minus5b, res4, res5, res6, res7);
3113+ DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b,
3114+ plus20b, res4, res5, res6, res7);
3115+ SLDI_B2_SB(src1, src3, src0, src2, src0, src2, 2);
3116+ SLDI_B2_SB(src5, src7, src4, src6, src4, src6, 2);
3117+ SRARI_H4_SH(res0, res1, res2, res3, 5);
3118+ SRARI_H4_SH(res4, res5, res6, res7, 5);
3119+ SAT_SH4_SH(res0, res1, res2, res3, 7);
3120+ SAT_SH4_SH(res4, res5, res6, res7, 7);
3121+ PCKEV_B2_SB(res1, res0, res3, res2, dst0, dst1);
3122+ PCKEV_B2_SB(res5, res4, res7, res6, dst2, dst3);
3123+ dst0 = __msa_aver_s_b(dst0, src0);
3124+ dst1 = __msa_aver_s_b(dst1, src2);
3125+ dst2 = __msa_aver_s_b(dst2, src4);
3126+ dst3 = __msa_aver_s_b(dst3, src6);
3127+ XORI_B4_128_SB(dst0, dst1, dst2, dst3);
3128+ ST_SB4(dst0, dst1, dst2, dst3, dst, stride);
3129+ dst += (4 * stride);
3130+ }
30693131 }
30703132
30713133 void ff_put_h264_qpel16_mc30_msa(uint8_t *dst, const uint8_t *src,
30723134 ptrdiff_t stride)
30733135 {
3074− avc_luma_hz_qrt_16w_msa(src - 2, stride, dst, stride, 16, 1);
3136+ uint32_t loop_cnt;
3137+ v16i8 dst0, dst1, dst2, dst3, src0, src1, src2, src3, src4, src5, src6;
3138+ v16i8 mask0, mask1, mask2, mask3, mask4, mask5, src7, vec11;
3139+ v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7, vec8, vec9, vec10;
3140+ v8i16 res0, res1, res2, res3, res4, res5, res6, res7;
3141+ v16i8 minus5b = __msa_ldi_b(-5);
3142+ v16i8 plus20b = __msa_ldi_b(20);
3143+
3144+ LD_SB3(&luma_mask_arr[0], 16, mask0, mask1, mask2);
3145+ mask3 = mask0 + 8;
3146+ mask4 = mask1 + 8;
3147+ mask5 = mask2 + 8;
3148+ src -= 2;
3149+
3150+ for (loop_cnt = 4; loop_cnt--;) {
3151+ LD_SB2(src, 16, src0, src1);
3152+ src += stride;
3153+ LD_SB2(src, 16, src2, src3);
3154+ src += stride;
3155+ LD_SB2(src, 16, src4, src5);
3156+ src += stride;
3157+ LD_SB2(src, 16, src6, src7);
3158+ src += stride;
3159+
3160+ XORI_B8_128_SB(src0, src1, src2, src3, src4, src5, src6, src7);
3161+ VSHF_B2_SB(src0, src0, src0, src1, mask0, mask3, vec0, vec3);
3162+ VSHF_B2_SB(src2, src2, src2, src3, mask0, mask3, vec6, vec9);
3163+ VSHF_B2_SB(src0, src0, src0, src1, mask1, mask4, vec1, vec4);
3164+ VSHF_B2_SB(src2, src2, src2, src3, mask1, mask4, vec7, vec10);
3165+ VSHF_B2_SB(src0, src0, src0, src1, mask2, mask5, vec2, vec5);
3166+ VSHF_B2_SB(src2, src2, src2, src3, mask2, mask5, vec8, vec11);
3167+ HADD_SB4_SH(vec0, vec3, vec6, vec9, res0, res1, res2, res3);
3168+ DPADD_SB4_SH(vec1, vec4, vec7, vec10, minus5b, minus5b, minus5b,
3169+ minus5b, res0, res1, res2, res3);
3170+ DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b,
3171+ plus20b, res0, res1, res2, res3);
3172+ VSHF_B2_SB(src4, src4, src4, src5, mask0, mask3, vec0, vec3);
3173+ VSHF_B2_SB(src6, src6, src6, src7, mask0, mask3, vec6, vec9);
3174+ VSHF_B2_SB(src4, src4, src4, src5, mask1, mask4, vec1, vec4);
3175+ VSHF_B2_SB(src6, src6, src6, src7, mask1, mask4, vec7, vec10);
3176+ VSHF_B2_SB(src4, src4, src4, src5, mask2, mask5, vec2, vec5);
3177+ VSHF_B2_SB(src6, src6, src6, src7, mask2, mask5, vec8, vec11);
3178+ HADD_SB4_SH(vec0, vec3, vec6, vec9, res4, res5, res6, res7);
3179+ DPADD_SB4_SH(vec1, vec4, vec7, vec10, minus5b, minus5b, minus5b,
3180+ minus5b, res4, res5, res6, res7);
3181+ DPADD_SB4_SH(vec2, vec5, vec8, vec11, plus20b, plus20b, plus20b,
3182+ plus20b, res4, res5, res6, res7);
3183+ SLDI_B2_SB(src1, src3, src0, src2, src0, src2, 3);
3184+ SLDI_B2_SB(src5, src7, src4, src6, src4, src6, 3);
3185+ SRARI_H4_SH(res0, res1, res2, res3, 5);
3186+ SRARI_H4_SH(res4, res5, res6, res7, 5);
3187+ SAT_SH4_SH(res0, res1, res2, res3, 7);
3188+ SAT_SH4_SH(res4, res5, res6, res7, 7);
3189+ PCKEV_B2_SB(res1, res0, res3, res2, dst0, dst1);
3190+ PCKEV_B2_SB(res5, res4, res7, res6, dst2, dst3);
3191+ dst0 = __msa_aver_s_b(dst0, src0);
3192+ dst1 = __msa_aver_s_b(dst1, src2);
3193+ dst2 = __msa_aver_s_b(dst2, src4);
3194+ dst3 = __msa_aver_s_b(dst3, src6);
3195+ XORI_B4_128_SB(dst0, dst1, dst2, dst3);
3196+ ST_SB4(dst0, dst1, dst2, dst3, dst, stride);
3197+ dst += (4 * stride);
3198+ }
30753199 }
30763200
30773201 void ff_put_h264_qpel8_mc10_msa(uint8_t *dst, const uint8_t *src,
30783202 ptrdiff_t stride)
30793203 {
3080− avc_luma_hz_qrt_8w_msa(src - 2, stride, dst, stride, 8, 0);
3204+ v16i8 src0, src1, src2, src3, src4, src5, src6, src7, mask0, mask1, mask2;
3205+ v16i8 tmp0, tmp1, tmp2, tmp3, vec11;
3206+ v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7, vec8, vec9, vec10;
3207+ v8i16 res0, res1, res2, res3, res4, res5, res6, res7;
3208+ v16i8 minus5b = __msa_ldi_b(-5);
3209+ v16i8 plus20b = __msa_ldi_b(20);
3210+
3211+ LD_SB3(&luma_mask_arr[0], 16, mask0, mask1, mask2);
3212+ LD_SB8(src - 2, stride, src0, src1, src2, src3, src4, src5, src6, src7);
3213+ XORI_B8_128_SB(src0, src1, src2, src3, src4, src5, src6, src7);
3214+ VSHF_B2_SB(src0, src0, src1, src1, mask0, mask0, vec0, vec1);
3215+ VSHF_B2_SB(src2, src2, src3, src3, mask0, mask0, vec2, vec3);
3216+ HADD_SB4_SH(vec0, vec1, vec2, vec3, res0, res1, res2, res3);
3217+ VSHF_B2_SB(src0, src0, src1, src1, mask1, mask1, vec4, vec5);
3218+ VSHF_B2_SB(src2, src2, src3, src3, mask1, mask1, vec6, vec7);
3219+ DPADD_SB4_SH(vec4, vec5, vec6, vec7, minus5b, minus5b, minus5b, minus5b,
3220+ res0, res1, res2, res3);
3221+ VSHF_B2_SB(src0, src0, src1, src1, mask2, mask2, vec8, vec9);
3222+ VSHF_B2_SB(src2, src2, src3, src3, mask2, mask2, vec10, vec11);
3223+ DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b,
3224+ res0, res1, res2, res3);
3225+ VSHF_B2_SB(src4, src4, src5, src5, mask0, mask0, vec0, vec1);
3226+ VSHF_B2_SB(src6, src6, src7, src7, mask0, mask0, vec2, vec3);
3227+ HADD_SB4_SH(vec0, vec1, vec2, vec3, res4, res5, res6, res7);
3228+ VSHF_B2_SB(src4, src4, src5, src5, mask1, mask1, vec4, vec5);
3229+ VSHF_B2_SB(src6, src6, src7, src7, mask1, mask1, vec6, vec7);
3230+ DPADD_SB4_SH(vec4, vec5, vec6, vec7, minus5b, minus5b, minus5b, minus5b,
3231+ res4, res5, res6, res7);
3232+ VSHF_B2_SB(src4, src4, src5, src5, mask2, mask2, vec8, vec9);
3233+ VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11);
3234+ DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b,
3235+ res4, res5, res6, res7);
3236+ SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 2);
3237+ SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 2);
3238+ SLDI_B2_SB(src4, src5, src4, src5, src4, src5, 2);
3239+ SLDI_B2_SB(src6, src7, src6, src7, src6, src7, 2);
3240+ PCKEV_D2_SB(src1, src0, src3, src2, src0, src1);
3241+ PCKEV_D2_SB(src5, src4, src7, src6, src4, src5);
3242+ SRARI_H4_SH(res0, res1, res2, res3, 5);
3243+ SRARI_H4_SH(res4, res5, res6, res7, 5);
3244+ SAT_SH4_SH(res0, res1, res2, res3, 7);
3245+ SAT_SH4_SH(res4, res5, res6, res7, 7);
3246+ PCKEV_B2_SB(res1, res0, res3, res2, tmp0, tmp1);
3247+ PCKEV_B2_SB(res5, res4, res7, res6, tmp2, tmp3);
3248+ tmp0 = __msa_aver_s_b(tmp0, src0);
3249+ tmp1 = __msa_aver_s_b(tmp1, src1);
3250+ tmp2 = __msa_aver_s_b(tmp2, src4);
3251+ tmp3 = __msa_aver_s_b(tmp3, src5);
3252+ XORI_B4_128_SB(tmp0, tmp1, tmp2, tmp3);
3253+ ST8x8_UB(tmp0, tmp1, tmp2, tmp3, dst, stride);
30813254 }
30823255
30833256 void ff_put_h264_qpel8_mc30_msa(uint8_t *dst, const uint8_t *src,
30843257 ptrdiff_t stride)
30853258 {
3086− avc_luma_hz_qrt_8w_msa(src - 2, stride, dst, stride, 8, 1);
3259+ v16i8 src0, src1, src2, src3, src4, src5, src6, src7, mask0, mask1, mask2;
3260+ v16i8 tmp0, tmp1, tmp2, tmp3, vec11;
3261+ v16i8 vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7, vec8, vec9, vec10;
3262+ v8i16 res0, res1, res2, res3, res4, res5, res6, res7;
3263+ v16i8 minus5b = __msa_ldi_b(-5);
3264+ v16i8 plus20b = __msa_ldi_b(20);
3265+
3266+ LD_SB3(&luma_mask_arr[0], 16, mask0, mask1, mask2);
3267+ LD_SB8(src - 2, stride, src0, src1, src2, src3, src4, src5, src6, src7);
3268+ XORI_B8_128_SB(src0, src1, src2, src3, src4, src5, src6, src7);
3269+ VSHF_B2_SB(src0, src0, src1, src1, mask0, mask0, vec0, vec1);
3270+ VSHF_B2_SB(src2, src2, src3, src3, mask0, mask0, vec2, vec3);
3271+ HADD_SB4_SH(vec0, vec1, vec2, vec3, res0, res1, res2, res3);
3272+ VSHF_B2_SB(src0, src0, src1, src1, mask1, mask1, vec4, vec5);
3273+ VSHF_B2_SB(src2, src2, src3, src3, mask1, mask1, vec6, vec7);
3274+ DPADD_SB4_SH(vec4, vec5, vec6, vec7, minus5b, minus5b, minus5b, minus5b,
3275+ res0, res1, res2, res3);
3276+ VSHF_B2_SB(src0, src0, src1, src1, mask2, mask2, vec8, vec9);
3277+ VSHF_B2_SB(src2, src2, src3, src3, mask2, mask2, vec10, vec11);
3278+ DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b,
3279+ res0, res1, res2, res3);
3280+ VSHF_B2_SB(src4, src4, src5, src5, mask0, mask0, vec0, vec1);
3281+ VSHF_B2_SB(src6, src6, src7, src7, mask0, mask0, vec2, vec3);
3282+ HADD_SB4_SH(vec0, vec1, vec2, vec3, res4, res5, res6, res7);
3283+ VSHF_B2_SB(src4, src4, src5, src5, mask1, mask1, vec4, vec5);
3284+ VSHF_B2_SB(src6, src6, src7, src7, mask1, mask1, vec6, vec7);
3285+ DPADD_SB4_SH(vec4, vec5, vec6, vec7, minus5b, minus5b, minus5b, minus5b,
3286+ res4, res5, res6, res7);
3287+ VSHF_B2_SB(src4, src4, src5, src5, mask2, mask2, vec8, vec9);
3288+ VSHF_B2_SB(src6, src6, src7, src7, mask2, mask2, vec10, vec11);
3289+ DPADD_SB4_SH(vec8, vec9, vec10, vec11, plus20b, plus20b, plus20b, plus20b,
3290+ res4, res5, res6, res7);
3291+ SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 3);
3292+ SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 3);
3293+ SLDI_B2_SB(src4, src5, src4, src5, src4, src5, 3);
3294+ SLDI_B2_SB(src6, src7, src6, src7, src6, src7, 3);
3295+ PCKEV_D2_SB(src1, src0, src3, src2, src0, src1);
3296+ PCKEV_D2_SB(src5, src4, src7, src6, src4, src5);
3297+ SRARI_H4_SH(res0, res1, res2, res3, 5);
3298+ SRARI_H4_SH(res4, res5, res6, res7, 5);
3299+ SAT_SH4_SH(res0, res1, res2, res3, 7);
3300+ SAT_SH4_SH(res4, res5, res6, res7, 7);
3301+ PCKEV_B2_SB(res1, res0, res3, res2, tmp0, tmp1);
3302+ PCKEV_B2_SB(res5, res4, res7, res6, tmp2, tmp3);
3303+ tmp0 = __msa_aver_s_b(tmp0, src0);
3304+ tmp1 = __msa_aver_s_b(tmp1, src1);
3305+ tmp2 = __msa_aver_s_b(tmp2, src4);
3306+ tmp3 = __msa_aver_s_b(tmp3, src5);
3307+ XORI_B4_128_SB(tmp0, tmp1, tmp2, tmp3);
3308+ ST8x8_UB(tmp0, tmp1, tmp2, tmp3, dst, stride);
30873309 }
30883310
30893311 void ff_put_h264_qpel4_mc10_msa(uint8_t *dst, const uint8_t *src,
30903312 ptrdiff_t stride)
30913313 {
3092− avc_luma_hz_qrt_4w_msa(src - 2, stride, dst, stride, 4, 0);
3314+ v16i8 src0, src1, src2, src3, res, mask0, mask1, mask2;
3315+ v16i8 vec0, vec1, vec2, vec3, vec4, vec5;
3316+ v8i16 res0, res1;
3317+ v16i8 minus5b = __msa_ldi_b(-5);
3318+ v16i8 plus20b = __msa_ldi_b(20);
3319+
3320+ LD_SB3(&luma_mask_arr[48], 16, mask0, mask1, mask2);
3321+ LD_SB4(src - 2, stride, src0, src1, src2, src3);
3322+ XORI_B4_128_SB(src0, src1, src2, src3);
3323+ VSHF_B2_SB(src0, src1, src2, src3, mask0, mask0, vec0, vec1);
3324+ HADD_SB2_SH(vec0, vec1, res0, res1);
3325+ VSHF_B2_SB(src0, src1, src2, src3, mask1, mask1, vec2, vec3);
3326+ DPADD_SB2_SH(vec2, vec3, minus5b, minus5b, res0, res1);
3327+ VSHF_B2_SB(src0, src1, src2, src3, mask2, mask2, vec4, vec5);
3328+ DPADD_SB2_SH(vec4, vec5, plus20b, plus20b, res0, res1);
3329+ SRARI_H2_SH(res0, res1, 5);
3330+ SAT_SH2_SH(res0, res1, 7);
3331+ res = __msa_pckev_b((v16i8) res1, (v16i8) res0);
3332+ SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 2);
3333+ SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 2);
3334+ src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1);
3335+ src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3);
3336+ src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1);
3337+ res = __msa_aver_s_b(res, src0);
3338+ res = (v16i8) __msa_xori_b((v16u8) res, 128);
3339+ ST4x4_UB(res, res, 0, 1, 2, 3, dst, stride);
30933340 }
30943341
30953342 void ff_put_h264_qpel4_mc30_msa(uint8_t *dst, const uint8_t *src,
30963343 ptrdiff_t stride)
30973344 {
3098− avc_luma_hz_qrt_4w_msa(src - 2, stride, dst, stride, 4, 1);
3345+ v16i8 src0, src1, src2, src3, res, mask0, mask1, mask2;
3346+ v16i8 vec0, vec1, vec2, vec3, vec4, vec5;
3347+ v8i16 res0, res1;
3348+ v16i8 minus5b = __msa_ldi_b(-5);
3349+ v16i8 plus20b = __msa_ldi_b(20);
3350+
3351+ LD_SB3(&luma_mask_arr[48], 16, mask0, mask1, mask2);
3352+ LD_SB4(src - 2, stride, src0, src1, src2, src3);
3353+ XORI_B4_128_SB(src0, src1, src2, src3);
3354+ VSHF_B2_SB(src0, src1, src2, src3, mask0, mask0, vec0, vec1);
3355+ HADD_SB2_SH(vec0, vec1, res0, res1);
3356+ VSHF_B2_SB(src0, src1, src2, src3, mask1, mask1, vec2, vec3);
3357+ DPADD_SB2_SH(vec2, vec3, minus5b, minus5b, res0, res1);
3358+ VSHF_B2_SB(src0, src1, src2, src3, mask2, mask2, vec4, vec5);
3359+ DPADD_SB2_SH(vec4, vec5, plus20b, plus20b, res0, res1);
3360+ SRARI_H2_SH(res0, res1, 5);
3361+ SAT_SH2_SH(res0, res1, 7);
3362+ res = __msa_pckev_b((v16i8) res1, (v16i8) res0);
3363+ SLDI_B2_SB(src0, src1, src0, src1, src0, src1, 3);
3364+ SLDI_B2_SB(src2, src3, src2, src3, src2, src3, 3);
3365+ src0 = (v16i8) __msa_insve_w((v4i32) src0, 1, (v4i32) src1);
3366+ src1 = (v16i8) __msa_insve_w((v4i32) src2, 1, (v4i32) src3);
3367+ src0 = (v16i8) __msa_insve_d((v2i64) src0, 1, (v2i64) src1);
3368+ res = __msa_aver_s_b(res, src0);
3369+ res = (v16i8) __msa_xori_b((v16u8) res, 128);
3370+ ST4x4_UB(res, res, 0, 1, 2, 3, dst, stride);
30993371 }
31003372
31013373 void ff_put_h264_qpel16_mc20_msa(uint8_t *dst, const uint8_t *src,

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t