From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 1AFFA49C09 for ; Sat, 4 May 2024 15:04:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BAC5468D793; Sat, 4 May 2024 18:03:39 +0300 (EEST) Received: from out203-205-251-53.mail.qq.com (out203-205-251-53.mail.qq.com [203.205.251.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 58EBA68D741 for ; Sat, 4 May 2024 18:03:31 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1714835003; bh=ahoMFM0lfab16vgzGVWzQH7ifNe8hmrOQnCPZln2HyY=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=WBwYgQnfu4+iq+uH3mgFki0p1HUFI9MsDgnrSf8j5TGH+aWmq/josrioeq3aSMOWV LoLBUL0TdmncBOtZ/AIXsZ2kJme7ilpXVq+3I8DlbknLgtpldheAsT6JNYU0h5CpFa JlImsMFyjAmBDp6nRedJwpRjJ90gl50iba2D/H6k= Received: from localhost.localdomain ([42.56.223.122]) by newxmesmtplogicsvrsza15-1.qq.com (NewEsmtp) with SMTP id D215A30; Sat, 04 May 2024 23:03:18 +0800 X-QQ-mid: xmsmtpt1714835002tnpywczjl Message-ID: X-QQ-XMAILINFO: Mdc3TkmnJyI/pptKhFwGnlTLQ/Rsgc0M2x4Gsfs3U9mrxg6c5Jv6I1mVDcNqca niu4kesj6Clh3MLPxWrbKBIi9c6584TN05oup3Jt/74FbbLkYL6RQQvVlM8PT4XhT7Kg9nhp+28h hjA508Tbc1fITrhuGkbBUqGKs+8LKrD+scKPfh9i1bqjYwk/xCBjrou9+PC3YuVqUqu/GB0Sp/OQ 6R4GWz7RoTS7O/Ggi9KGeb/4AmO8VjiI5fBqDGE0lMtufU76Vlr+bPNmWxRdUlB+FMAelEKQ7Tho uRTitwZSOssc+vLtd7ig+oVhJxa2vxjnzvptQadNkrAJT/dIVup7imYfqMbEg8Y8xeTzBxfAIZPi idiCuEaA0Y6uss6g2sWovwpoT6ms1BY8WimyoZ+DILSXyp7w86ysTJNKUpv84frokwXQipmC3/ru elTMki1J7Xfdhox7W35sDse0G1getMxS2fMn1pCdUdpOhfBqU9R8Qm7y5lE+ThWl0obAcgQ7urpR 2wi5aufeiE0iWZag/lwKfy/nKoYXP6euM6tTnb8+ckmtWTvi4nrfIj/JB6Qy8BFHllIVn0lTHh1Q hdLqsMAte6xJF8DTbQtr780FxGJnXlBqlD6iNqpXHB7W0eTbOgMjFPhGrxWj2zJuuCd1VnVHnRD+ kkq4zOqWOSOd6DuZBCWFjkG9F8P/14Wn41rsfYwLicT81uAQHRhCpvOq1iYGEykGce64aItqOLw4 wfSoes2BIa7xzu9JlqnKgIHI5dOWjtBECWmka4dKJIC5hQp3QxyrEuWtC6tkzNf7Z58EavcYNNhP Awp/n/7WB9cU3Q8i3fcGeOdtugcXODueHDf3wVEgQnTRi1NMxHWftB0xJ2r0aX/Anssb9fLRU9p1 fCHKKLh6U6YwHJIihGWbWMqI5dVrBSNyBK4y8kOvKiMlcn46r+oBOy8Qgp+juJL7a9l+nB7diYIv FqVvo2t0SQOx9uapG12JyfBatPVBk5 X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg= From: uk7b@foxmail.com To: ffmpeg-devel@ffmpeg.org Date: Sat, 4 May 2024 23:03:08 +0800 X-OQ-MSGID: <20240504150313.2472910-5-uk7b@foxmail.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240504150313.2472910-1-uk7b@foxmail.com> References: <20240504150313.2472910-1-uk7b@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/10] lavc/vp9dsp: R-V V mc bilin h X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: sunyuechi Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: sunyuechi C908: vp9_avg_bilin_4h_8bpp_c: 5.5 vp9_avg_bilin_4h_8bpp_rvv_i64: 2.5 vp9_avg_bilin_8h_8bpp_c: 19.7 vp9_avg_bilin_8h_8bpp_rvv_i64: 5.0 vp9_avg_bilin_16h_8bpp_c: 78.2 vp9_avg_bilin_16h_8bpp_rvv_i64: 10.0 vp9_avg_bilin_32h_8bpp_c: 325.2 vp9_avg_bilin_32h_8bpp_rvv_i64: 28.5 vp9_avg_bilin_64h_8bpp_c: 1266.2 vp9_avg_bilin_64h_8bpp_rvv_i64: 115.0 vp9_put_bilin_4h_8bpp_c: 4.5 vp9_put_bilin_4h_8bpp_rvv_i64: 2.2 vp9_put_bilin_8h_8bpp_c: 16.7 vp9_put_bilin_8h_8bpp_rvv_i64: 4.2 vp9_put_bilin_16h_8bpp_c: 65.2 vp9_put_bilin_16h_8bpp_rvv_i64: 8.7 vp9_put_bilin_32h_8bpp_c: 273.5 vp9_put_bilin_32h_8bpp_rvv_i64: 26.7 vp9_put_bilin_64h_8bpp_c: 1041.0 vp9_put_bilin_64h_8bpp_rvv_i64: 87.2 --- libavcodec/riscv/vp9_mc_rvv.S | 73 ++++++++++++++++++++++++++++++++++ libavcodec/riscv/vp9dsp_init.c | 17 ++++++++ 2 files changed, 90 insertions(+) diff --git a/libavcodec/riscv/vp9_mc_rvv.S b/libavcodec/riscv/vp9_mc_rvv.S index ba9ec3431f..a97807633e 100644 --- a/libavcodec/riscv/vp9_mc_rvv.S +++ b/libavcodec/riscv/vp9_mc_rvv.S @@ -51,6 +51,72 @@ ret .endm +.macro bilin_h_load dst len type +.ifc \len,4 + vsetivli zero, 5, e8, mf2, ta, ma +.elseif \len == 8 + vsetivli zero, 9, e8, m1, ta, ma +.elseif \len == 16 + vsetivli zero, 17, e8, m2, ta, ma +.elseif \len == 32 + li t0, 33 + vsetvli zero, t0, e8, m4, ta, ma +.elseif \len == 64 + li t0, 65 + vsetvli zero, t0, e8, m8, ta, ma +.endif + + vle8.v v8, (a2) + vslide1down.vx v0, v8, t5 + +.ifc \len,4 + vsetivli zero, 4, e8, mf4, ta, ma +.elseif \len == 8 + vsetivli zero, 8, e8, mf2, ta, ma +.elseif \len == 16 + vsetivli zero, 16, e8, m1, ta, ma +.elseif \len == 32 + li t0, 32 + vsetvli zero, t0, e8, m2, ta, ma +.elseif \len == 64 + li t0, 64 + vsetvli zero, t0, e8, m4, ta, ma +.endif + + vwmulu.vx v16, v0, a5 + vwmaccsu.vx v16, t1, v8 + vwadd.wx v16, v16, t4 + vnsra.wi v16, v16, 4 + vadd.vv \dst, v16, v8 + +.ifc \type,put + vadd.vv \dst, v16, v8 +.elseif \type == avg + vadd.vv v16, v16, v8 + vle8.v \dst, (a0) + vaaddu.vv \dst, \dst, v16 +.endif + +.endm + +.macro bilin_h len type +.ifc \type,avg + csrwi vxrm, 0 +.endif + li t4, 8 + li t5, 1 + neg t1, a5 +1: + addi a4, a4, -1 + bilin_h_load v0, \len, \type + vse8.v v0, (a0) + add a2, a2, a3 + add a0, a0, a1 + bnez a4, 1b + + ret +.endm + .irp len 64, 32, 16 func ff_copy\len\()_rvv, zve32x copy_avg \len copy @@ -61,4 +127,11 @@ endfunc func ff_avg\len\()_rvv, zve32x copy_avg \len avg endfunc + +func ff_put_bilin_\len\()h_rvv, zve32x + bilin_h \len put +endfunc +func ff_avg_bilin_\len\()h_rvv, zve32x + bilin_h \len avg +endfunc .endr diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c index da33e15e97..248501f5d2 100644 --- a/libavcodec/riscv/vp9dsp_init.c +++ b/libavcodec/riscv/vp9dsp_init.c @@ -106,6 +106,23 @@ static av_cold void vp9dsp_mc_init_rvv(VP9DSPContext *dsp, int bpp) #undef init_copy_avg #undef init_avg #undef init_fpel + +#define init_subpel1(idx1, idx2, idxh, idxv, sz, dir, type) \ + dsp->mc[idx1][FILTER_BILINEAR ][idx2][idxh][idxv] = \ + ff_##type##_bilin_##sz##dir##_rvv; + +#define init_subpel2(idx, idxh, idxv, dir, type) \ + init_subpel1(0, idx, idxh, idxv, 64, dir, type); \ + init_subpel1(1, idx, idxh, idxv, 32, dir, type); \ + init_subpel1(2, idx, idxh, idxv, 16, dir, type); \ + init_subpel1(3, idx, idxh, idxv, 8, dir, type); \ + init_subpel1(4, idx, idxh, idxv, 4, dir, type) + +#define init_subpel3(idx, type) \ + init_subpel2(idx, 1, 0, h, type) + + init_subpel3(0, put); + init_subpel3(1, avg); } #endif #endif -- 2.45.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".