From patchwork Wed May 29 17:15:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: uk7b@foxmail.com X-Patchwork-Id: 49358 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:8f0d:0:b0:460:55fa:d5ed with SMTP id i13csp805447vqu; Wed, 29 May 2024 10:16:58 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUvA2+gfXXoXLgFwuYEs1RTQt2PtPZyg692cNn8ZPwEPvSD5wXSRUJiVUeR7o3wFJw7f9Bl8o8F/HygXAvXP0lLnKABOwpzI0GG6Q== X-Google-Smtp-Source: AGHT+IGl0D/DqxQ+DkuGduwguKwWFf2QBU5iu/RFVvtbnX3dRXhoPnw55JBhK1XrOJ9WE2Vyzlx5 X-Received: by 2002:a50:cb8c:0:b0:579:c471:dbd0 with SMTP id 4fb4d7f45d1cf-579c471dc93mr7766485a12.21.1717003017737; Wed, 29 May 2024 10:16:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717003017; cv=none; d=google.com; s=arc-20160816; b=CABw4EP9TcRiuqwG8BWisv0xivz1d2wb4K2WiwBZGMEmaQ52yrOd5UUsQ5ctLX/w2H xicd0dPQiU3hztDQKXPKVICX28rgE3QvqBDXOJFnECbrXmW0fDBFQqpOTGZ38ztf97Xp BfTxcTEwI/6oIhyO/+fMvndPZuX9oJC+qoC8F7WeT4gUR1ywTPrK3aXFPZ04JX8GhI3V fdsyJ9h89T+CDrdYnbMpMCYxFlb3O83EKogqh6riqQsxEH6jmlxLtWi91knLLNibAC8O iTkdPcy+D4IcL1VLE6JYTHOru+VkSolpJcMyF+vzvwfES85ZwxCuPt902cG4JEqeYLJ8 jclw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:date:to:from:message-id :dkim-signature:delivered-to; bh=qYkmbK7pnSscR7FiUdXTtHzNTB/OWHXTRQ1l6Q41t+w=; fh=D0bFwGkf4X22/D/bfeDVrXKIx7S6kcXsNzy10j8ORbQ=; b=byQx0iafvBv8FDWmyBiJxUk7qxbTREd8NoBrp4GiIQP3W4ybpjFTAyFpeYaAsGHQYe aXH1g3tgbV15GRIMx9cOQJ19f7coe84GOjNluWKEZ4grWKyqgrQqednxrPRzuGWYSSnN 4fBfhbV0n3xQlYi0IpVD2+mEsqWUkndjkpR9w2cD6ir2S4JUu2Vge1NxTpLwd0WdS/Nq sDwfCZTZXueCrmbaZDSH4Bp0HId/voEqeMiNoRXg8jSUDD2Sg4G5yf2f1aUV3NmLXBiV nX9Wves1Ok2GQTHn8UetgaAFrthusie2NYPSwZVHK7D8ekhVN/yWSmSGt+XkVLBoOAJ2 1H4Q==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=UdH97oQj; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-579e5d0a09bsi2857623a12.187.2024.05.29.10.16.57; Wed, 29 May 2024 10:16:57 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=UdH97oQj; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2C18A68CC90; Wed, 29 May 2024 20:16:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-173.mail.qq.com (out203-205-221-173.mail.qq.com [203.205.221.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DBA8968D509 for ; Wed, 29 May 2024 20:16:21 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1717002972; bh=8IuY2C+lMRYiPh2nEDHaUMUFMF3+C49OohYTqm94fg4=; h=From:To:Cc:Subject:Date; b=UdH97oQjw2qqA0jE0ya74BwjKcDdIvHyOIF0KjXSDnngl6ZPtTEc5PxjQK+rz7IUn AuNyH/UolF9HTbqLvZcG/GBhP9o5RYpBTiTb5wLUZPIUFZkcGFy+Exp3uYRDukOoYS AOAO/2mwa0mMtX6g/OxUnL3lnzx8wOVeJ+gGt96s= Received: from localhost.localdomain ([42.86.114.86]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 40A88E50; Thu, 30 May 2024 01:16:10 +0800 X-QQ-mid: xmsmtpt1717002970t587spc42 Message-ID: X-QQ-XMAILINFO: MgQY1K25Ph0m0efdAkCIm4EJOgUs3HIDQCXk3nfrU2RsII89kPBg37mNdXrs1L oj5VMn09Wzh9wNvUm5mHeJAJ1GfGEJ4D6SncMGZ3om4X1JOtN2drXfyLVwb4Lpf7VLE9AeN5V/LH uGBO4RArXQSyVhi1Az1LbAmr/cwatx1EOg1+WzyNH4PIGIUeVTsj0XPCnWc8Rg9L13kQVm67bOhU cc5vtoSLyWAw7TUlKj0qkmqgb6UbZ8+PdAzKzXW944HFYKMIc65vYoz2lGkdvqY9J2Xv2BGPVfBY 2cGYdtJ1webjTASQj9BPUok0zfln7yTBpc7r2K3igaczun+VcS/DDhXZB/Wt48NhpAbAVv/uLCYN WRYNQoUneWKY4xpOtf6yrj6TrdCbwkhNihzfnvx6FtfPhpsT3SP4G5SmZEkAL8uP5c7ksZ8P3lDV k99XibVGHdgdGVJ8xSUWDX4vRq9NCr/eiWSptjx81NecBgZANIHVACTYzh03tRs4f1kMXdcABvJl rlwb2w7Pc6uZNv6/BLXe8l1gacOi/EW3yEYZRxH/q1xIlIhiuRt2LXAkciq5Sma+xxHBOmpKe2nK ygwxpg+Pmu9SlRzJisJdGV4ozUdb9X3RdVrqpGaB/rvADJ1pHkgPv+Eg+ugRMfaWAiEwQejTKcgi YyKrV9hh5S2fRWxmg01tpkDAl+0eY8jfZqchANBB4GxwrVqQ/VBTKH6U+mNhOAo6JVuWqGp77xpi 4Iw7zow+b0NFH3x0sxioa0bPuVSx+Y2JdFqJ1WXXK49FmG2O5Bm8Rwfi/N1xRLz2HjSeBRkpUQHh MEPr5220RhMtRCQfBHrg4DLFNGThUmFp89VHaBxUuA3mZRVuEx2O9S1oOUnmcJWkArYHB2cpXaGe +bFq/AHsL0DGmmxrBlH0qyH7ORs3BEZw== X-QQ-XMRINFO: Mp0Kj//9VHAxr69bL5MkOOs= From: uk7b@foxmail.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 May 2024 01:15:36 +0800 X-OQ-MSGID: <20240529171540.911099-1-uk7b@foxmail.com> X-Mailer: git-send-email 2.45.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 1/5] lavc/vp9dsp: R-V V rename ff_avg to ff_vp9_avg 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: T3kxlDLYlSrE From: sunyuechi Avoid potential naming conflicts --- libavcodec/riscv/vp9_mc_rvv.S | 4 ++-- libavcodec/riscv/vp9dsp.h | 4 ++-- libavcodec/riscv/vp9dsp_init.c | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libavcodec/riscv/vp9_mc_rvv.S b/libavcodec/riscv/vp9_mc_rvv.S index 7811cd9928..7cb38ec94a 100644 --- a/libavcodec/riscv/vp9_mc_rvv.S +++ b/libavcodec/riscv/vp9_mc_rvv.S @@ -37,9 +37,9 @@ .endm .macro copy_avg len -func ff_avg\len\()_rvv, zve32x +func ff_vp9_avg\len\()_rvv, zve32x csrwi vxrm, 0 - vsetvlstatic8 \len t0 64 + vsetvlstatic8 \len, t0, 64 1: vle8.v v8, (a2) vle8.v v16, (a0) diff --git a/libavcodec/riscv/vp9dsp.h b/libavcodec/riscv/vp9dsp.h index 79330b4968..ff8431591c 100644 --- a/libavcodec/riscv/vp9dsp.h +++ b/libavcodec/riscv/vp9dsp.h @@ -138,11 +138,11 @@ void ff_avg_bilin_##SIZE##hv_rvv(uint8_t *dst, ptrdiff_t dststride, \ int h, int mx, int my); #define VP9_COPY_AVG_RISCV_RVV_FUNC(SIZE) \ -void ff_copy##SIZE##_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_vp9_copy##SIZE##_rvv(uint8_t *dst, ptrdiff_t dststride, \ const uint8_t *src, ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_avg##SIZE##_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_vp9_avg##SIZE##_rvv(uint8_t *dst, ptrdiff_t dststride, \ const uint8_t *src, ptrdiff_t srcstride, \ int h, int mx, int my); diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c index 6bfe23563a..454dcd963f 100644 --- a/libavcodec/riscv/vp9dsp_init.c +++ b/libavcodec/riscv/vp9dsp_init.c @@ -52,10 +52,10 @@ static av_cold void vp9dsp_mc_init_riscv(VP9DSPContext *dsp, int bpp) if (bpp == 8 && (flags & AV_CPU_FLAG_RVV_I32) && ff_rv_vlen_least(128)) { #define init_fpel(idx1, sz) \ - dsp->mc[idx1][FILTER_8TAP_SMOOTH ][1][0][0] = ff_avg##sz##_rvv; \ - dsp->mc[idx1][FILTER_8TAP_REGULAR][1][0][0] = ff_avg##sz##_rvv; \ - dsp->mc[idx1][FILTER_8TAP_SHARP ][1][0][0] = ff_avg##sz##_rvv; \ - dsp->mc[idx1][FILTER_BILINEAR ][1][0][0] = ff_avg##sz##_rvv + dsp->mc[idx1][FILTER_8TAP_SMOOTH ][1][0][0] = ff_vp9_avg##sz##_rvv; \ + dsp->mc[idx1][FILTER_8TAP_REGULAR][1][0][0] = ff_vp9_avg##sz##_rvv; \ + dsp->mc[idx1][FILTER_8TAP_SHARP ][1][0][0] = ff_vp9_avg##sz##_rvv; \ + dsp->mc[idx1][FILTER_BILINEAR ][1][0][0] = ff_vp9_avg##sz##_rvv init_fpel(0, 64); init_fpel(1, 32); From patchwork Wed May 29 17:15:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: uk7b@foxmail.com X-Patchwork-Id: 49356 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:8f0d:0:b0:460:55fa:d5ed with SMTP id i13csp805217vqu; Wed, 29 May 2024 10:16:36 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUDGYFLvSXqcYZD2MZctNptk0LIKzHm6iWjycmlAk69T/gfgOxXqf2/yp8U9QE43MHWD1tTuMW340lb+jrNtF/iMqJZI6Xf1aSfaQ== X-Google-Smtp-Source: AGHT+IGZJgtZdafl3jp+o2J5qar5Sg4sALtNS1StEAXHWy9k0llgaKqdNpvTHRooUVaAUfz6TjIQ X-Received: by 2002:a17:906:71b:b0:a64:e464:7123 with SMTP id a640c23a62f3a-a64e46471efmr153577266b.7.1717002996006; Wed, 29 May 2024 10:16:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717002995; cv=none; d=google.com; s=arc-20160816; b=o5oILqJlA2+Pbp5pwG0jlDCpUA+/+mye5a0q+t4XeajXQnNKahhB0QKMzC99l21bTw xAP8nH9nSAa+/A5JchTsI7NjIQpjdjdlWUhFzvHn59Hg1yPrn5yUbs9WONEAWxHenzBS zpOqrNbjGWnda2NnVfgajK9c8WANcKsAjKFVfK6DcI++8STAB+v51OGlyZcUT8XZg7qM s1Sm9FAAtgDv4D29MgrWQDXNiyuOk/TFJM7ooxe4i3MCuS7ZiOfFjYq/h4OYrjes5SgH iP8rH9hJqiuDVCNb/YX2DyjGqvsLe39MIXgxSUvDqA/iYJBrBLXwiImfemMhZo5NN4ev w3kQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=+Wqv9iK6nYNYRhSfO0Qz/2Ag0JmZwJKo83rnqe0Tp4E=; fh=D0bFwGkf4X22/D/bfeDVrXKIx7S6kcXsNzy10j8ORbQ=; b=y9e0kii1Z3pRtwBsCpNiWVvANzz8axLksuDkRVs0Yd5zJ25G/Ly5VIhBrKsoDnBB6w TFPCR1p76z/kgovYkGd10amIwlZDnDJ0q6+bGEO9qbLdLHPesT1poR02jumzE0Y80uOl G5xhHqP0Hs33IRjhoSdEWp7llYlRnSLMp/3qHRawi/KuKig+hvVk9vpBO7ifgp/NWvrl Z4Uxi+4J8WULcuLE2YhD0qXSyyvUrA0KSAYJmoF4MSWAchljNS0ESVaosVtnm6wqhQYA CSAb4vMlr1ooVJ8UZOnO0ovPECo4Z+WWsvF7yKPTuZHuBh00V2tDz9UGCJItkQCNpJt2 B96w==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=purKfssv; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a626cd90567si629710866b.702.2024.05.29.10.16.35; Wed, 29 May 2024 10:16:35 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=purKfssv; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DDA1E68D52E; Wed, 29 May 2024 20:16:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-205.mail.qq.com (out203-205-221-205.mail.qq.com [203.205.221.205]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DB22D68D4E9 for ; Wed, 29 May 2024 20:16:21 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1717002973; bh=5z1z8I8xyi8e3T714I2WJSm27td3cuW7k0lN2iTDHqM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=purKfssvU4dNWw/FbQf0QS0y8LaIfruomCQyyo87LQLwFjN/9tmtm15DJ5nFdoYsQ gE/x3QBNDHfhISl2NnuTUdY41Se1qAxWplsOqD+mkJhQgcZvhOLozMQMrBdruNrSsD ad/YQXzTV1XZjzlzcRieoHArnSFIAlOJ1C9o+i6k= Received: from localhost.localdomain ([42.86.114.86]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 40A88E50; Thu, 30 May 2024 01:16:10 +0800 X-QQ-mid: xmsmtpt1717002972t5e4ppc43 Message-ID: X-QQ-XMAILINFO: M0PjjqbLT90wCYSuEpFX9CHxclNhSIqHEM+vVnGCqRnoRveOZ3uvIjuDKPaGdc Y6NYFNcV2cO3RzmmM6s9FVzQM7of+XwkIDjb9vZpON2Dqo2K0sYUAi7hS1LM2EWRM3lBAAjmRtd6 NOVBDGz1cDHKwAd9w/li04/DonJE3r9jWA2g1nsTkHqGRInZ+nXrk3KbRV71aaFS28kKW4cDtji0 1zfwFpcxteBg7UMF7Ukwnj5Yx5QJt2oZLOlP6dOGt5sSesHAqHTaRHE1iTmMfQamglqxVddQe6pE /wOXUNn2hpkPi5MSBEwUB8VUBUbvNTgwpx31lHeWHhntL0AlJFYYmJdrrTEzlqRbnsM43Po1ysqI 3cDM+jTxHXWjXGSdu3oA31m8KEg4hbJ1DoccNwNV97k0qDFqY7o9aJ1m3S4HtFqF3RYd4ZO5y70/ oZGFH4bwnUrbHIlDy0B2fsmbiHfg10gwdUAOy8ecuGu3euUhPKC2GmxloIB+5G/OCJVEDqO4RMxJ KgEz12wd4+SReuSAaAICM6nQ8jDL7Gkd/DmClADQhG4kyUNQ5r5xiWpmPAel+FaFg8Hvz+IUp353 Qdn9jDUP2alGar1ayf/Y5s+cwgFRRER7WLAESCTDBUQCiq5aUkKMquPHGTMZLsm8BdpVzTnMnYRW thBWs7vhRlCoN5qHoYwPqltIJfdESIu0wDT/D3LSqMS92sNpG5cKJhzlnnwuzCUxmZE/XNTr3x/u 4W0piLv/rk898BTvkEwbTet+P6eqiBWN/J6A59l8ZN1e1kflMv7OExgEDE9iDJYSFtZzFpeHJVwP Ysel1P49zjHLhrLtSwyk+Nv0VALXZlbnoplFrJlekQlPlayE8cgIMjXMgKnA+lnW86mMxrfHaZHP IdOQXjPZmKqwHXJI8MX15y1TwlKs7LRg== X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0= From: uk7b@foxmail.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 May 2024 01:15:37 +0800 X-OQ-MSGID: <20240529171540.911099-2-uk7b@foxmail.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240529171540.911099-1-uk7b@foxmail.com> References: <20240529171540.911099-1-uk7b@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 2/5] lavc/vp9dsp: R-V V mc bilin h v 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 7nTkiSA1iipN From: sunyuechi C908: vp9_avg_bilin_4h_8bpp_c: 5.2 vp9_avg_bilin_4h_8bpp_rvv_i64: 2.2 vp9_avg_bilin_4v_8bpp_c: 5.5 vp9_avg_bilin_4v_8bpp_rvv_i64: 2.2 vp9_avg_bilin_8h_8bpp_c: 20.0 vp9_avg_bilin_8h_8bpp_rvv_i64: 4.5 vp9_avg_bilin_8v_8bpp_c: 21.0 vp9_avg_bilin_8v_8bpp_rvv_i64: 4.2 vp9_avg_bilin_16h_8bpp_c: 78.2 vp9_avg_bilin_16h_8bpp_rvv_i64: 9.0 vp9_avg_bilin_16v_8bpp_c: 82.0 vp9_avg_bilin_16v_8bpp_rvv_i64: 9.0 vp9_avg_bilin_32h_8bpp_c: 325.5 vp9_avg_bilin_32h_8bpp_rvv_i64: 26.2 vp9_avg_bilin_32v_8bpp_c: 326.2 vp9_avg_bilin_32v_8bpp_rvv_i64: 26.2 vp9_avg_bilin_64h_8bpp_c: 1265.7 vp9_avg_bilin_64h_8bpp_rvv_i64: 91.5 vp9_avg_bilin_64v_8bpp_c: 1317.0 vp9_avg_bilin_64v_8bpp_rvv_i64: 91.2 vp9_put_bilin_4h_8bpp_c: 4.5 vp9_put_bilin_4h_8bpp_rvv_i64: 1.7 vp9_put_bilin_4v_8bpp_c: 4.7 vp9_put_bilin_4v_8bpp_rvv_i64: 1.7 vp9_put_bilin_8h_8bpp_c: 17.0 vp9_put_bilin_8h_8bpp_rvv_i64: 3.5 vp9_put_bilin_8v_8bpp_c: 18.0 vp9_put_bilin_8v_8bpp_rvv_i64: 3.5 vp9_put_bilin_16h_8bpp_c: 65.2 vp9_put_bilin_16h_8bpp_rvv_i64: 7.5 vp9_put_bilin_16v_8bpp_c: 85.7 vp9_put_bilin_16v_8bpp_rvv_i64: 7.5 vp9_put_bilin_32h_8bpp_c: 257.5 vp9_put_bilin_32h_8bpp_rvv_i64: 23.5 vp9_put_bilin_32v_8bpp_c: 274.5 vp9_put_bilin_32v_8bpp_rvv_i64: 23.5 vp9_put_bilin_64h_8bpp_c: 1040.5 vp9_put_bilin_64h_8bpp_rvv_i64: 82.5 vp9_put_bilin_64v_8bpp_c: 1108.7 vp9_put_bilin_64v_8bpp_rvv_i64: 82.2 --- libavcodec/riscv/vp9_mc_rvv.S | 60 ++++++++++++++++++++++++++++++++++ libavcodec/riscv/vp9dsp.h | 12 +++---- libavcodec/riscv/vp9dsp_init.c | 21 ++++++++++++ 3 files changed, 87 insertions(+), 6 deletions(-) diff --git a/libavcodec/riscv/vp9_mc_rvv.S b/libavcodec/riscv/vp9_mc_rvv.S index 7cb38ec94a..9611aba0ed 100644 --- a/libavcodec/riscv/vp9_mc_rvv.S +++ b/libavcodec/riscv/vp9_mc_rvv.S @@ -53,6 +53,66 @@ func ff_vp9_avg\len\()_rvv, zve32x endfunc .endm +.macro bilin_load dst, op, type, mn +.ifc \type,v + add t5, a2, a3 +.else + addi t5, a2, 1 +.endif + vle8.v v8, (a2) + vle8.v v0, (t5) + vwmulu.vx v16, v0, \mn + vwmaccsu.vx v16, t1, v8 + vwadd.wx v16, v16, t4 + vnsra.wi v16, v16, 4 + vadd.vv \dst, v16, v8 +.ifc \op,avg + vle8.v v16, (a0) + vaaddu.vv \dst, \dst, v16 +.endif +.endm + +.macro bilin_h_v op, type, mn +func ff_\op\()_vp9_bilin_4\type\()_rvv, zve32x + vsetvlstatic8 4, t0, 64 +.Lbilin_\type\op: +.ifc \op,avg + csrwi vxrm, 0 +.endif + li t4, 8 + neg t1, \mn +1: + addi a4, a4, -1 + bilin_load v0, \op, \type, \mn + vse8.v v0, (a0) + add a2, a2, a3 + add a0, a0, a1 + bnez a4, 1b + + ret +endfunc +.endm + .irp len, 64, 32, 16, 8, 4 copy_avg \len .endr + +bilin_h_v put, h, a5 +bilin_h_v avg, h, a5 +bilin_h_v put, v, a6 +bilin_h_v avg, v, a6 + +.macro func_bilin_h_v len, op, type +func ff_\op\()_vp9_bilin_\len\()\type\()_rvv, zve32x + vsetvlstatic8 \len, t0, 64 + j .Lbilin_\type\()\op +endfunc +.endm + +.irp len, 64, 32, 16, 8 + .irp op, put, avg + .irp type, h, v + func_bilin_h_v \len, \op, \type + .endr + .endr +.endr diff --git a/libavcodec/riscv/vp9dsp.h b/libavcodec/riscv/vp9dsp.h index ff8431591c..8fb326dae0 100644 --- a/libavcodec/riscv/vp9dsp.h +++ b/libavcodec/riscv/vp9dsp.h @@ -113,27 +113,27 @@ void ff_avg_8tap_##type##_##SIZE##hv_rvv(uint8_t *dst, ptrdiff_t dststride, \ int h, int mx, int my); #define VP9_BILINEAR_RISCV_RVV_FUNC(SIZE) \ -void ff_put_bilin_##SIZE##h_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_put_vp9_bilin_##SIZE##h_rvv(uint8_t *dst, ptrdiff_t dststride, \ const uint8_t *src, ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_put_bilin_##SIZE##v_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_put_vp9_bilin_##SIZE##v_rvv(uint8_t *dst, ptrdiff_t dststride, \ const uint8_t *src, ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_put_bilin_##SIZE##hv_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_put_vp9_bilin_##SIZE##hv_rvv(uint8_t *dst, ptrdiff_t dststride, \ const uint8_t *src, ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_avg_bilin_##SIZE##h_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_avg_vp9_bilin_##SIZE##h_rvv(uint8_t *dst, ptrdiff_t dststride, \ const uint8_t *src, ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_avg_bilin_##SIZE##v_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_avg_vp9_bilin_##SIZE##v_rvv(uint8_t *dst, ptrdiff_t dststride, \ const uint8_t *src, ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_avg_bilin_##SIZE##hv_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_avg_vp9_bilin_##SIZE##hv_rvv(uint8_t *dst, ptrdiff_t dststride, \ const uint8_t *src, ptrdiff_t srcstride, \ int h, int mx, int my); diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c index 454dcd963f..9606d8545f 100644 --- a/libavcodec/riscv/vp9dsp_init.c +++ b/libavcodec/riscv/vp9dsp_init.c @@ -63,6 +63,27 @@ static av_cold void vp9dsp_mc_init_riscv(VP9DSPContext *dsp, int bpp) init_fpel(3, 8); init_fpel(4, 4); + dsp->mc[0][FILTER_BILINEAR ][0][0][1] = ff_put_vp9_bilin_64v_rvv; + dsp->mc[0][FILTER_BILINEAR ][0][1][0] = ff_put_vp9_bilin_64h_rvv; + dsp->mc[0][FILTER_BILINEAR ][1][0][1] = ff_avg_vp9_bilin_64v_rvv; + dsp->mc[0][FILTER_BILINEAR ][1][1][0] = ff_avg_vp9_bilin_64h_rvv; + dsp->mc[1][FILTER_BILINEAR ][0][0][1] = ff_put_vp9_bilin_32v_rvv; + dsp->mc[1][FILTER_BILINEAR ][0][1][0] = ff_put_vp9_bilin_32h_rvv; + dsp->mc[1][FILTER_BILINEAR ][1][0][1] = ff_avg_vp9_bilin_32v_rvv; + dsp->mc[1][FILTER_BILINEAR ][1][1][0] = ff_avg_vp9_bilin_32h_rvv; + dsp->mc[2][FILTER_BILINEAR ][0][0][1] = ff_put_vp9_bilin_16v_rvv; + dsp->mc[2][FILTER_BILINEAR ][0][1][0] = ff_put_vp9_bilin_16h_rvv; + dsp->mc[2][FILTER_BILINEAR ][1][0][1] = ff_avg_vp9_bilin_16v_rvv; + dsp->mc[2][FILTER_BILINEAR ][1][1][0] = ff_avg_vp9_bilin_16h_rvv; + dsp->mc[3][FILTER_BILINEAR ][0][0][1] = ff_put_vp9_bilin_8v_rvv; + dsp->mc[3][FILTER_BILINEAR ][0][1][0] = ff_put_vp9_bilin_8h_rvv; + dsp->mc[3][FILTER_BILINEAR ][1][0][1] = ff_avg_vp9_bilin_8v_rvv; + dsp->mc[3][FILTER_BILINEAR ][1][1][0] = ff_avg_vp9_bilin_8h_rvv; + dsp->mc[4][FILTER_BILINEAR ][0][0][1] = ff_put_vp9_bilin_4v_rvv; + dsp->mc[4][FILTER_BILINEAR ][0][1][0] = ff_put_vp9_bilin_4h_rvv; + dsp->mc[4][FILTER_BILINEAR ][1][0][1] = ff_avg_vp9_bilin_4v_rvv; + dsp->mc[4][FILTER_BILINEAR ][1][1][0] = ff_avg_vp9_bilin_4h_rvv; + #undef init_fpel } #endif From patchwork Wed May 29 17:15:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: uk7b@foxmail.com X-Patchwork-Id: 49360 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:8f0d:0:b0:460:55fa:d5ed with SMTP id i13csp805662vqu; Wed, 29 May 2024 10:17:19 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWWPXk50dJZs+TayNN0GjjBusvS56TIWWGvG0OPR5hrmSvCsvJ+ES7vvklYCOcUj8iu4Zb0zSSVNRnyh2KniWQSEpmRbHlHMGGD5w== X-Google-Smtp-Source: AGHT+IER9nmm/MB0Zcon/y+5F33k3MKhMuygi4iUyCLTO9pSSIwI2taDu/KhmVsBgbqd5DQzWPnF X-Received: by 2002:a50:9b44:0:b0:572:9c4c:2503 with SMTP id 4fb4d7f45d1cf-57851a4eb8cmr9861703a12.38.1717003038732; Wed, 29 May 2024 10:17:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717003038; cv=none; d=google.com; s=arc-20160816; b=PXq5Sty4umf3b5sW2QZon+2yK67ecz6X0aghZ1vDT+A998WA/YFQXlytOZrsyJYMuh 20NnRSEszqnFz269Goy9zX7Rcwj7b7/Mpcw/cMo3BTsw+Wih5zRsWJF4HBUKFicX/pKo cTvWD08qzfMxifbeKiTNUJ1motovL54H+gKvpnIOcpxYdRtuhhHEyCPY83OBtGfA0Uc1 PLVtYxQN1Nl02a7RawhF8UIfKD+8z+nrlcLWmnm3SOG20kqXm/oSybj5cQtSI0xVGCqb v8PPvqhs2YYNZjHJBUhcVpNs5+OFvtEg/0x2S2M4MLrm1mcXx4C/K0f3YgesjjdplArm 938w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=5L8e+jWThSqFOMKMo4gjzMIe1ObJrbi6ZKdD2HXBBwk=; fh=D0bFwGkf4X22/D/bfeDVrXKIx7S6kcXsNzy10j8ORbQ=; b=K5UMKLz/AJSYRqTMJUdMxNXGf6z4Oy7o9tHIRltAA6yI0bY6MOjiBLC09WgvWz4Si6 oBfzHFjH10SwXkqyOjD5dYxpNZ2LnhHzOmIndzBhF25Kc2saJYpfTbEirP+buhB3Lro6 C9XQMXHcg65PUoON2Lyp1iYITOiM4lCJZSFtlKRxAzb9lCKXKAZSn8bv1HaW60qbeilE T7EbFvzpBxMfv1tL5wnrlzYFiK38y65my1M1fln0kjle0MHW6qfAcOY0dwGNKW9iY1q4 T8x9quw0jNA6bp28netUaQw1gVEVIWp93JNgBep4sZ/KtEWseUDulDC5eCaLkx6jcw+e yE+Q==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=sawCOffY; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5785733c80asi6340904a12.664.2024.05.29.10.17.18; Wed, 29 May 2024 10:17:18 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=sawCOffY; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 28E1468D56D; Wed, 29 May 2024 20:16:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from xmbghk7.mail.qq.com (unknown [119.28.226.18]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4D7A068D56A for ; Wed, 29 May 2024 20:16:35 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1717002973; bh=5XZ4Eoi/2AUKEujb3ajIW43UvA2PspMsgGoOmoy9Owc=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=sawCOffYeMvBgk3a9mUvItViBHY2R/EpMKdIeKlf3cYXs6ARSYYI0LRKyiLdwvH3l IVDpmdRQ5tGJN0pGeJJZ4KBJEtPMb7mH9Yt0QLgc+ojGDTCt8OWZAI0uqsckqpsCWl YnU/Ho8sQ2ruG+HYLb7Pu7l1iduFLyrscqKBAVVw= Received: from localhost.localdomain ([42.86.114.86]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 40A88E50; Thu, 30 May 2024 01:16:10 +0800 X-QQ-mid: xmsmtpt1717002972tlfwmd4du Message-ID: X-QQ-XMAILINFO: MIAHdi1iQo+ztHwhKltP103TOpArWPT/14osLprW0mArDRpnMvm8qX4aAwOxwP CCgUnB9ZyrpR2ybzkNcF6+z5CuDOEqKSEayxJLkezo0+Nn1bDS8VdUBoEcCfujt0oifV2BwG1v3Q 7wWVTnJLczHhXxYbe4MB2jOWekLnY2Al1QYFLuhgQ69UsJRpxyV4bAJ9fJ+DgYWJoIIA/xjfzOE5 URaQ7Q4UZAhuUIiLxeIVfg7o5noTIwAExp7z/x6cIOvxCiqdKG15wfSFg4+gTKfCk8eNIQ3qPEdz DTMSXIjgc1RWuknSXpl79JNi27j0yt7d53XUDtjcaR2gcfG1YDPC23K8QQVPoRwwZ4y9QY3enUAj NweVA3468rkorgph2c4v9Jg6nM+RF5IZoDHSXzMAWNuTyfoa4pFk373HbI+M5XD3Ws57e6mp6fy0 wCIZN9S57jGQ9l5+6a0jGr4TB32dUG2l27AbZSoLDRwQUX8mW5DKhTZaD8t4T8xL9JFB5DERXGcL EsCOktI9yRYpGrvIIYgdSDdtL92zXYvJ9RufwUBfWpf+wQNbQJMt9NBmvCmW6ErJNvW5PA2pg4wQ AJcnr2ZcUKa9u4Oysm8B0o+0+PpKCQ7z3ICvqWAmJOnVDoTSeVBI9m2EHP1KUcCQn+f1t0CybpdV dVRVqyi40BeCu83Gr1iBZi1HjJCHWmznNuND1Rb7b9k+godCShsXDdsajBySYxYFqPrZ4C16ZYFj OVnlJuhnI9fWuVxdMpXpehKtG3GInSQalJX3i8rnpRS3Fuftyh1RTRWflTmCrwxL/7rp13mJStQm wjRfaRQe0pt2p5313KL7s6tVFjW9OSzkyRzY/CpTQacJHCv6gAOtcouk+n+ID3G0VARfudDSMp0I pDjGUaznXQ/4H16PInfqc2jLY9BHMfonM0dAqXD8UR X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc= From: uk7b@foxmail.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 May 2024 01:15:38 +0800 X-OQ-MSGID: <20240529171540.911099-3-uk7b@foxmail.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240529171540.911099-1-uk7b@foxmail.com> References: <20240529171540.911099-1-uk7b@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 3/5] lavc/vp9dsp: R-V V mc bilin hv 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: oPFUeLhLzc4W From: sunyuechi C908: vp9_avg_bilin_4hv_8bpp_c: 11.0 vp9_avg_bilin_4hv_8bpp_rvv_i64: 3.7 vp9_avg_bilin_8hv_8bpp_c: 38.7 vp9_avg_bilin_8hv_8bpp_rvv_i64: 7.2 vp9_avg_bilin_16hv_8bpp_c: 147.0 vp9_avg_bilin_16hv_8bpp_rvv_i64: 14.2 vp9_avg_bilin_32hv_8bpp_c: 574.5 vp9_avg_bilin_32hv_8bpp_rvv_i64: 42.7 vp9_avg_bilin_64hv_8bpp_c: 2311.5 vp9_avg_bilin_64hv_8bpp_rvv_i64: 201.7 vp9_put_bilin_4hv_8bpp_c: 10.0 vp9_put_bilin_4hv_8bpp_rvv_i64: 3.2 vp9_put_bilin_8hv_8bpp_c: 35.2 vp9_put_bilin_8hv_8bpp_rvv_i64: 6.5 vp9_put_bilin_16hv_8bpp_c: 133.7 vp9_put_bilin_16hv_8bpp_rvv_i64: 13.0 vp9_put_bilin_32hv_8bpp_c: 538.2 vp9_put_bilin_32hv_8bpp_rvv_i64: 39.7 vp9_put_bilin_64hv_8bpp_c: 2114.0 vp9_put_bilin_64hv_8bpp_rvv_i64: 153.7 --- libavcodec/riscv/vp9_mc_rvv.S | 38 +++++++++++++++++++++++++++++++++- libavcodec/riscv/vp9dsp_init.c | 10 +++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/libavcodec/riscv/vp9_mc_rvv.S b/libavcodec/riscv/vp9_mc_rvv.S index 9611aba0ed..990271736b 100644 --- a/libavcodec/riscv/vp9_mc_rvv.S +++ b/libavcodec/riscv/vp9_mc_rvv.S @@ -93,6 +93,40 @@ func ff_\op\()_vp9_bilin_4\type\()_rvv, zve32x endfunc .endm +.macro bilin_hv op +func ff_\op\()_vp9_bilin_4hv_rvv, zve32x + vsetvlstatic8 4, t0, 64 +.Lbilin_hv\op: +.ifc \op,avg + csrwi vxrm, 0 +.endif + neg t1, a5 + neg t2, a6 + li t4, 8 + bilin_load v24, put, h, a5 + add a2, a2, a3 +1: + addi a4, a4, -1 + bilin_load v4, put, h, a5 + vwmulu.vx v16, v4, a6 + vwmaccsu.vx v16, t2, v24 + vwadd.wx v16, v16, t4 + vnsra.wi v16, v16, 4 + vadd.vv v0, v16, v24 +.ifc \op,avg + vle8.v v16, (a0) + vaaddu.vv v0, v0, v16 +.endif + vse8.v v0, (a0) + vmv.v.v v24, v4 + add a2, a2, a3 + add a0, a0, a1 + bnez a4, 1b + + ret +endfunc +.endm + .irp len, 64, 32, 16, 8, 4 copy_avg \len .endr @@ -101,6 +135,8 @@ bilin_h_v put, h, a5 bilin_h_v avg, h, a5 bilin_h_v put, v, a6 bilin_h_v avg, v, a6 +bilin_hv put +bilin_hv avg .macro func_bilin_h_v len, op, type func ff_\op\()_vp9_bilin_\len\()\type\()_rvv, zve32x @@ -111,7 +147,7 @@ endfunc .irp len, 64, 32, 16, 8 .irp op, put, avg - .irp type, h, v + .irp type, h, v, hv func_bilin_h_v \len, \op, \type .endr .endr diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c index 9606d8545f..b3700dfb08 100644 --- a/libavcodec/riscv/vp9dsp_init.c +++ b/libavcodec/riscv/vp9dsp_init.c @@ -83,6 +83,16 @@ static av_cold void vp9dsp_mc_init_riscv(VP9DSPContext *dsp, int bpp) dsp->mc[4][FILTER_BILINEAR ][0][1][0] = ff_put_vp9_bilin_4h_rvv; dsp->mc[4][FILTER_BILINEAR ][1][0][1] = ff_avg_vp9_bilin_4v_rvv; dsp->mc[4][FILTER_BILINEAR ][1][1][0] = ff_avg_vp9_bilin_4h_rvv; + dsp->mc[0][FILTER_BILINEAR ][0][1][1] = ff_put_vp9_bilin_64hv_rvv; + dsp->mc[0][FILTER_BILINEAR ][1][1][1] = ff_avg_vp9_bilin_64hv_rvv; + dsp->mc[1][FILTER_BILINEAR ][0][1][1] = ff_put_vp9_bilin_32hv_rvv; + dsp->mc[1][FILTER_BILINEAR ][1][1][1] = ff_avg_vp9_bilin_32hv_rvv; + dsp->mc[2][FILTER_BILINEAR ][0][1][1] = ff_put_vp9_bilin_16hv_rvv; + dsp->mc[2][FILTER_BILINEAR ][1][1][1] = ff_avg_vp9_bilin_16hv_rvv; + dsp->mc[3][FILTER_BILINEAR ][0][1][1] = ff_put_vp9_bilin_8hv_rvv; + dsp->mc[3][FILTER_BILINEAR ][1][1][1] = ff_avg_vp9_bilin_8hv_rvv; + dsp->mc[4][FILTER_BILINEAR ][0][1][1] = ff_put_vp9_bilin_4hv_rvv; + dsp->mc[4][FILTER_BILINEAR ][1][1][1] = ff_avg_vp9_bilin_4hv_rvv; #undef init_fpel } From patchwork Wed May 29 17:15:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: uk7b@foxmail.com X-Patchwork-Id: 49357 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:8f0d:0:b0:460:55fa:d5ed with SMTP id i13csp805351vqu; Wed, 29 May 2024 10:16:47 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVhnKvDkqMpXUz2Oe6u8ckRVc3CZ8Eoyw5h2P5Sd3S4yz7AD/L90w/vobNCDR5xahjG2ZUfPnXw0okmwAQZLkl3HB3WEY2CYsAQkA== X-Google-Smtp-Source: AGHT+IH/86vli0qXGYEcuLBAS38FrafCsr+feI3FSy7cFdW4G6E2lnXQMLvNK/eQK1dl0+SrC6Uy X-Received: by 2002:a17:906:2bc7:b0:a62:ca08:855d with SMTP id a640c23a62f3a-a642d7d8957mr251511866b.26.1717003007580; Wed, 29 May 2024 10:16:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717003007; cv=none; d=google.com; s=arc-20160816; b=H+//AzU+HItXnYbt2wZ+q60hOxQhsbFS/YPzp4DodcVnGG81G0Cm7RalPqVvqtih4x ZKjtuiAuTzRj8OvFAli0/JPxdlvaxSbv91QbyhSzvsszPU05fNXT2mHzsX09sZsbvGR+ iLmISAZdrM8J9nv4/WjHtfN4KZF8p7IIC+Q2LrQO32ImvgSJW9xnd/fJrwh7GTju7buT MUacj4BhxUKrhd9109rVDFgxLccwYyeNkqUG8IWgZrGQetD0bxuMxOQYpeVPiOXjElzc 7CvsZCKiobChSkuPTK35YHJdCUU0yvCsRJe8TCpuxicFuX0GyhDYtki2mX+X+PKP571D 9cqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=RDzAY4oPWT9n57fy8j5Sr7NLZ1BwiA9L2nXibkE3XPU=; fh=D0bFwGkf4X22/D/bfeDVrXKIx7S6kcXsNzy10j8ORbQ=; b=hqHlcPFY2tw9ueUp8R6QB1JnT3szZrEh46mDh8D3HqFv/DRNXfyjBFMZRQHNk0DBqL zYuKP9kuiWtrvxi2GIzB9ZU4/E22vN4b65gbZhT0IymqGbMyu99qTSB+sCb0QGNhbBBG nKPVIvko2hegzj0iG7QKvpYBp4OBJYeEY/bomPmlifKegu+ek8rWJ22L2MUe/0E0EEwg vdFKfe1fw9o0FH4zt9It1t3Q+BHyO8rptJT037eMQV2U+LwhRZhYCUldNQk50yqZyGUZ fQzYCQQemEdP4jPhdo0VGD8MN0TmFTABpDP7R05eOtWdJOrcCWhRv3QM3wqCPgpCoT9n Gc3g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=ghGIo74+; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a626cc37a88si669296066b.371.2024.05.29.10.16.46; Wed, 29 May 2024 10:16:47 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=ghGIo74+; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D17EE68D545; Wed, 29 May 2024 20:16:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-190.mail.qq.com (out203-205-221-190.mail.qq.com [203.205.221.190]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F3E4C68D521 for ; Wed, 29 May 2024 20:16:22 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1717002974; bh=VWMwC6rsCkgU/eozphS1QtbNt6ZJEc80aIbW1c2TKBs=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ghGIo74+6VH8MBgjmfG8NmoaClFhFGhQREzt6amxUsH1bTLWdH09Jvc/aNWn4lnbR duiSlKcp3zJ5Txgxdk8WtNEdrdg9WYMWtflZBPHebZNL9PkOrCx228e4mxrNyyB2OU 5Hg4EiRavVPs8OLliZHSKr1pF3VsLxUCosYFoIzM= Received: from localhost.localdomain ([42.86.114.86]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 40A88E50; Thu, 30 May 2024 01:16:10 +0800 X-QQ-mid: xmsmtpt1717002973tud6gwa77 Message-ID: X-QQ-XMAILINFO: Mdc3TkmnJyI/JiFV9o2YUMwQpCdaffDAVfFYEfoi5Dzhxhn6dohKuhA6Mx2NGi LIm3Zeygr9IStdJ0ssYpdiyzWAP8yQoKPU3a3EzTjsZ4p/X6gUtasAIfZQxAAUEymXENQPcFIjNU 3O3kCv/GmtffE5lwb4XTGsqs4lhaqOjVWDADFpLMiC8VCxyA20r7oB84L7IGaUQi8xqx6MX08uiI s6COYboWQadYAb5A1gOrpdzYbUF4rlJKQOFUcMi1piNLlD/eo3syBrIGfA04+quPqbc8LkxSNGbB DLdZXGZ4uOb0eLSZvmKdA0Hsd0lWboAgPxkI2LMwebij3U6g6a+sVhDchrM+OJdMGu8IjDHSGEqJ 5nRSfynYDyj82L4pgWTDMWWjKCqs5Ai9nBNVyjRC2gS6jZ4dgiMiSntbK6mSlVY/+hQwDZ3/EqAk iLQoOOhX+8kYd3ThzhSYorc75nMCbfQMKvBcnWdv7XECTTVEVa2/kBDwtzG4KRLGA8wJ6pG50/nS si5BBoTP7nDcCiJioFskoE9yHhJjreubxl2Ie4ym6N51mIcMrTrqtvO6di6NNma1QnDEmD4B8wa2 H5+VXcc9Z+wePdXx0QRV/nMLRZM86yuLyR5e+akbmDvi01aIHic8oN1ja49AoxwTItV7Lt3PwceI Cw4h4yknvJ4MCVkyatEkYJF5Uj8qYYwUO3MhE1sReIAzYPuUJf1s9xrOPcF9cmKi3WAgXzddCKc8 m0elc3raJsdvfrU22BoJ4Xnb65Wvdm8MFctBr2gXDvg1RPipzeZ8GqxIJAHEy2pjZ5qgmBsgqhC8 Fwy6cP/LUxzOdgIEVFANUykGhvQMdgH6iLwW70nT1I+FxJM9NmZ6b4Fp9Hi1XJfPlWoyl/hq0N6h we9ohSKplWLMjora+qZ4iC8EFxTTxk5d9EklSfzPUZVf8Iz3ZqrbyPjB4MjeH/tw== X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc= From: uk7b@foxmail.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 May 2024 01:15:39 +0800 X-OQ-MSGID: <20240529171540.911099-4-uk7b@foxmail.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240529171540.911099-1-uk7b@foxmail.com> References: <20240529171540.911099-1-uk7b@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 4/5] lavc/vp9dsp: R-V V mc tap h v 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 1pmyTDq8Qucn From: sunyuechi C908 X60 vp9_avg_8tap_smooth_4h_8bpp_c : 13.0 11.2 vp9_avg_8tap_smooth_4h_8bpp_rvv_i32 : 5.0 4.2 vp9_avg_8tap_smooth_4v_8bpp_c : 13.7 12.5 vp9_avg_8tap_smooth_4v_8bpp_rvv_i32 : 5.0 4.2 vp9_avg_8tap_smooth_8h_8bpp_c : 49.5 42.2 vp9_avg_8tap_smooth_8h_8bpp_rvv_i32 : 9.2 8.5 vp9_avg_8tap_smooth_8v_8bpp_c : 66.5 45.0 vp9_avg_8tap_smooth_8v_8bpp_rvv_i32 : 9.5 8.5 vp9_avg_8tap_smooth_16h_8bpp_c : 192.7 166.5 vp9_avg_8tap_smooth_16h_8bpp_rvv_i32 : 21.2 18.7 vp9_avg_8tap_smooth_16v_8bpp_c : 192.2 175.7 vp9_avg_8tap_smooth_16v_8bpp_rvv_i32 : 21.5 19.0 vp9_avg_8tap_smooth_32h_8bpp_c : 780.2 663.7 vp9_avg_8tap_smooth_32h_8bpp_rvv_i32 : 83.5 60.0 vp9_avg_8tap_smooth_32v_8bpp_c : 770.5 689.2 vp9_avg_8tap_smooth_32v_8bpp_rvv_i32 : 67.2 60.0 vp9_avg_8tap_smooth_64h_8bpp_c : 3115.5 2647.2 vp9_avg_8tap_smooth_64h_8bpp_rvv_i32 : 283.5 119.2 vp9_avg_8tap_smooth_64v_8bpp_c : 3082.2 2729.0 vp9_avg_8tap_smooth_64v_8bpp_rvv_i32 : 305.2 119.0 vp9_put_8tap_smooth_4h_8bpp_c : 11.2 9.7 vp9_put_8tap_smooth_4h_8bpp_rvv_i32 : 4.2 4.0 vp9_put_8tap_smooth_4v_8bpp_c : 11.7 10.7 vp9_put_8tap_smooth_4v_8bpp_rvv_i32 : 4.2 4.0 vp9_put_8tap_smooth_8h_8bpp_c : 42.0 37.5 vp9_put_8tap_smooth_8h_8bpp_rvv_i32 : 8.5 7.7 vp9_put_8tap_smooth_8v_8bpp_c : 44.2 38.7 vp9_put_8tap_smooth_8v_8bpp_rvv_i32 : 8.5 7.7 vp9_put_8tap_smooth_16h_8bpp_c : 165.7 147.2 vp9_put_8tap_smooth_16h_8bpp_rvv_i32 : 19.5 17.5 vp9_put_8tap_smooth_16v_8bpp_c : 169.0 149.7 vp9_put_8tap_smooth_16v_8bpp_rvv_i32 : 19.7 17.5 vp9_put_8tap_smooth_32h_8bpp_c : 659.7 586.7 vp9_put_8tap_smooth_32h_8bpp_rvv_i32 : 64.2 57.2 vp9_put_8tap_smooth_32v_8bpp_c : 680.5 591.2 vp9_put_8tap_smooth_32v_8bpp_rvv_i32 : 64.2 57.2 vp9_put_8tap_smooth_64h_8bpp_c : 2681.5 2339.0 vp9_put_8tap_smooth_64h_8bpp_rvv_i32 : 255.5 114.2 vp9_put_8tap_smooth_64v_8bpp_c : 2709.7 2348.7 vp9_put_8tap_smooth_64v_8bpp_rvv_i32 : 255.5 114.0 --- libavcodec/riscv/vp9_mc_rvv.S | 204 +++++++++++++++++++++++++++++++++ libavcodec/riscv/vp9dsp.h | 72 ++++++++---- libavcodec/riscv/vp9dsp_init.c | 37 +++++- 3 files changed, 288 insertions(+), 25 deletions(-) diff --git a/libavcodec/riscv/vp9_mc_rvv.S b/libavcodec/riscv/vp9_mc_rvv.S index 990271736b..53dd833dac 100644 --- a/libavcodec/riscv/vp9_mc_rvv.S +++ b/libavcodec/riscv/vp9_mc_rvv.S @@ -36,6 +36,18 @@ .endif .endm +.macro vsetvlstatic16 len +.ifc \len,4 + vsetvli zero, zero, e16, mf2, ta, ma +.elseif \len == 8 + vsetvli zero, zero, e16, m1, ta, ma +.elseif \len == 16 + vsetvli zero, zero, e16, m2, ta, ma +.else + vsetvli zero, zero, e16, m4, ta, ma +.endif +.endm + .macro copy_avg len func ff_vp9_avg\len\()_rvv, zve32x csrwi vxrm, 0 @@ -127,8 +139,200 @@ func ff_\op\()_vp9_bilin_4hv_rvv, zve32x endfunc .endm +.macro epel_filter name, type, regtype + lla \regtype\()2, ff_vp9_subpel_filters + +.ifc \name,regular + addi \regtype\()2, \regtype\()2, 16*8*2 +.endif +.ifc \name,sharp + addi \regtype\()2, \regtype\()2, 16*8*2*2 +.endif + +.ifc \type,v + slli \regtype\()0, a6, 4 +.else + slli \regtype\()0, a5, 4 +.endif + add \regtype\()0, \regtype\()0, \regtype\()2 + + lh \regtype\()1, 2(\regtype\()0) + lh \regtype\()2, 4(\regtype\()0) + lh \regtype\()3, 6(\regtype\()0) + lh \regtype\()4, 8(\regtype\()0) + lh \regtype\()5, 10(\regtype\()0) + lh \regtype\()6, 12(\regtype\()0) + +.ifc \regtype,t + lh a7, 14(\regtype\()0) +.else + lh s7, 14(\regtype\()0) +.endif + lh \regtype\()0, 0(\regtype\()0) +.endm + +.macro epel_load dst, len, op, name, type, from_mem, regtype + li a5, 64 +.ifc \from_mem, 1 + vle8.v v22, (a2) +.ifc \type,v + sub a2, a2, a3 + vle8.v v20, (a2) + sh1add a2, a3, a2 + vle8.v v24, (a2) + add a2, a2, a3 + vle8.v v26, (a2) + add a2, a2, a3 + vle8.v v28, (a2) + add a2, a2, a3 + vle8.v v30, (a2) +.else + addi a2, a2, -1 + vle8.v v20, (a2) + addi a2, a2, 2 + vle8.v v24, (a2) + addi a2, a2, 1 + vle8.v v26, (a2) + addi a2, a2, 1 + vle8.v v28, (a2) + addi a2, a2, 1 + vle8.v v30, (a2) +.endif + +.ifc \name,smooth + vwmulu.vx v16, v24, \regtype\()4 + vwmaccu.vx v16, \regtype\()2, v20 + vwmaccu.vx v16, \regtype\()5, v26 + vwmaccsu.vx v16, \regtype\()6, v28 +.else + vwmulu.vx v16, v28, \regtype\()6 + vwmaccsu.vx v16, \regtype\()2, v20 + vwmaccsu.vx v16, \regtype\()5, v26 +.endif + +.ifc \regtype,t + vwmaccsu.vx v16, a7, v30 +.else + vwmaccsu.vx v16, s7, v30 +.endif + +.ifc \type,v + .rept 6 + sub a2, a2, a3 + .endr + vle8.v v28, (a2) + sub a2, a2, a3 + vle8.v v26, (a2) + sh1add a2, a3, a2 + add a2, a2, a3 +.else + addi a2, a2, -6 + vle8.v v28, (a2) + addi a2, a2, -1 + vle8.v v26, (a2) + addi a2, a2, 3 +.endif + +.ifc \name,smooth + vwmaccsu.vx v16, \regtype\()1, v28 +.else + vwmaccu.vx v16, \regtype\()1, v28 + vwmulu.vx v28, v24, \regtype\()4 +.endif + vwmaccsu.vx v16, \regtype\()0, v26 + vwmulu.vx v20, v22, \regtype\()3 +.else +.ifc \name,smooth + vwmulu.vx v16, v8, \regtype\()4 + vwmaccu.vx v16, \regtype\()2, v4 + vwmaccu.vx v16, \regtype\()5, v10 + vwmaccsu.vx v16, \regtype\()6, v12 + vwmaccsu.vx v16, \regtype\()1, v2 +.else + vwmulu.vx v16, v2, \regtype\()1 + vwmaccu.vx v16, \regtype\()6, v12 + vwmaccsu.vx v16, \regtype\()5, v10 + vwmaccsu.vx v16, \regtype\()2, v4 + vwmulu.vx v28, v8, \regtype\()4 +.endif + vwmaccsu.vx v16, \regtype\()0, v0 + vwmulu.vx v20, v6, \regtype\()3 + +.ifc \regtype,t + vwmaccsu.vx v16, a7, v14 +.else + vwmaccsu.vx v16, s7, v14 +.endif + +.endif + vwadd.wx v16, v16, a5 + vsetvlstatic16 \len + +.ifc \name,smooth + vwadd.vv v24, v16, v20 +.else + vwadd.vv v24, v16, v28 + vwadd.wv v24, v24, v20 +.endif + vnsra.wi v24, v24, 7 + vmax.vx v24, v24, zero + vsetvlstatic8 \len, zero, 32, m2 + + vnclipu.wi \dst, v24, 0 +.ifc \op,avg + vle8.v v24, (a0) + vaaddu.vv \dst, \dst, v24 +.endif + +.endm + +.macro epel_load_inc dst, len, op, name, type, from_mem, regtype + epel_load \dst, \len, \op, \name, \type, \from_mem, \regtype + add a2, a2, a3 +.endm + +.macro epel len, op, name, type, vlen +func ff_\op\()_vp9_8tap_\name\()_\len\()\type\()_rvv\vlen\(), zve32x + epel_filter \name, \type, t +.if \vlen < 256 + vsetvlstatic8 \len, a5, 32, m2 +.else + vsetvlstatic8 \len, a5, 64, m2 +.endif +.ifc \op,avg + csrwi vxrm, 0 +.endif + +1: + addi a4, a4, -1 + epel_load v30, \len, \op, \name, \type, 1, t + vse8.v v30, (a0) +.if \len == 64 && \vlen < 256 + addi a0, a0, 32 + addi a2, a2, 32 + epel_load v30, \len, \op, \name, \type, 1, t + vse8.v v30, (a0) + addi a0, a0, -32 + addi a2, a2, -32 +.endif + add a2, a2, a3 + add a0, a0, a1 + bnez a4, 1b + + ret +endfunc +.endm + .irp len, 64, 32, 16, 8, 4 copy_avg \len + .irp op, put, avg + .irp name, regular, sharp, smooth + .irp type, h, v + epel \len, \op, \name, \type, 128 + epel \len, \op, \name, \type, 256 + .endr + .endr + .endr .endr bilin_h_v put, h, a5 diff --git a/libavcodec/riscv/vp9dsp.h b/libavcodec/riscv/vp9dsp.h index 8fb326dae0..5fd64a1b8c 100644 --- a/libavcodec/riscv/vp9dsp.h +++ b/libavcodec/riscv/vp9dsp.h @@ -81,33 +81,39 @@ void ff_tm_8x8_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, void ff_tm_4x4_rvv(uint8_t *dst, ptrdiff_t stride, const uint8_t *l, const uint8_t *a); -#define VP9_8TAP_RISCV_RVV_FUNC(SIZE, type, type_idx) \ -void ff_put_8tap_##type##_##SIZE##h_rvv(uint8_t *dst, ptrdiff_t dststride, \ +#define VP9_8TAP_RISCV_RVV_FUNC(SIZE, type, type_idx, min_vlen) \ +void ff_put_vp9_8tap_##type##_##SIZE##h_rvv##min_vlen(uint8_t *dst, \ + ptrdiff_t dststride, \ const uint8_t *src, \ ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_put_8tap_##type##_##SIZE##v_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_put_vp9_8tap_##type##_##SIZE##v_rvv##min_vlen(uint8_t *dst, \ + ptrdiff_t dststride, \ const uint8_t *src, \ ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_put_8tap_##type##_##SIZE##hv_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_put_vp9_8tap_##type##_##SIZE##hv_rvv##min_vlen(uint8_t *dst, \ + ptrdiff_t dststride, \ const uint8_t *src, \ ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_avg_8tap_##type##_##SIZE##h_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_avg_vp9_8tap_##type##_##SIZE##h_rvv##min_vlen(uint8_t *dst, \ + ptrdiff_t dststride, \ const uint8_t *src, \ ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_avg_8tap_##type##_##SIZE##v_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_avg_vp9_8tap_##type##_##SIZE##v_rvv##min_vlen(uint8_t *dst, \ + ptrdiff_t dststride, \ const uint8_t *src, \ ptrdiff_t srcstride, \ int h, int mx, int my); \ \ -void ff_avg_8tap_##type##_##SIZE##hv_rvv(uint8_t *dst, ptrdiff_t dststride, \ +void ff_avg_vp9_8tap_##type##_##SIZE##hv_rvv##min_vlen(uint8_t *dst, \ + ptrdiff_t dststride, \ const uint8_t *src, \ ptrdiff_t srcstride, \ int h, int mx, int my); @@ -146,23 +152,41 @@ void ff_vp9_avg##SIZE##_rvv(uint8_t *dst, ptrdiff_t dststride, \ const uint8_t *src, ptrdiff_t srcstride, \ int h, int mx, int my); -VP9_8TAP_RISCV_RVV_FUNC(64, regular, FILTER_8TAP_REGULAR); -VP9_8TAP_RISCV_RVV_FUNC(32, regular, FILTER_8TAP_REGULAR); -VP9_8TAP_RISCV_RVV_FUNC(16, regular, FILTER_8TAP_REGULAR); -VP9_8TAP_RISCV_RVV_FUNC(8, regular, FILTER_8TAP_REGULAR); -VP9_8TAP_RISCV_RVV_FUNC(4, regular, FILTER_8TAP_REGULAR); - -VP9_8TAP_RISCV_RVV_FUNC(64, sharp, FILTER_8TAP_SHARP); -VP9_8TAP_RISCV_RVV_FUNC(32, sharp, FILTER_8TAP_SHARP); -VP9_8TAP_RISCV_RVV_FUNC(16, sharp, FILTER_8TAP_SHARP); -VP9_8TAP_RISCV_RVV_FUNC(8, sharp, FILTER_8TAP_SHARP); -VP9_8TAP_RISCV_RVV_FUNC(4, sharp, FILTER_8TAP_SHARP); - -VP9_8TAP_RISCV_RVV_FUNC(64, smooth, FILTER_8TAP_SMOOTH); -VP9_8TAP_RISCV_RVV_FUNC(32, smooth, FILTER_8TAP_SMOOTH); -VP9_8TAP_RISCV_RVV_FUNC(16, smooth, FILTER_8TAP_SMOOTH); -VP9_8TAP_RISCV_RVV_FUNC(8, smooth, FILTER_8TAP_SMOOTH); -VP9_8TAP_RISCV_RVV_FUNC(4, smooth, FILTER_8TAP_SMOOTH); +VP9_8TAP_RISCV_RVV_FUNC(64, regular, FILTER_8TAP_REGULAR, 128); +VP9_8TAP_RISCV_RVV_FUNC(32, regular, FILTER_8TAP_REGULAR, 128); +VP9_8TAP_RISCV_RVV_FUNC(16, regular, FILTER_8TAP_REGULAR, 128); +VP9_8TAP_RISCV_RVV_FUNC(8, regular, FILTER_8TAP_REGULAR, 128); +VP9_8TAP_RISCV_RVV_FUNC(4, regular, FILTER_8TAP_REGULAR, 128); + +VP9_8TAP_RISCV_RVV_FUNC(64, sharp, FILTER_8TAP_SHARP, 128); +VP9_8TAP_RISCV_RVV_FUNC(32, sharp, FILTER_8TAP_SHARP, 128); +VP9_8TAP_RISCV_RVV_FUNC(16, sharp, FILTER_8TAP_SHARP, 128); +VP9_8TAP_RISCV_RVV_FUNC(8, sharp, FILTER_8TAP_SHARP, 128); +VP9_8TAP_RISCV_RVV_FUNC(4, sharp, FILTER_8TAP_SHARP, 128); + +VP9_8TAP_RISCV_RVV_FUNC(64, smooth, FILTER_8TAP_SMOOTH, 128); +VP9_8TAP_RISCV_RVV_FUNC(32, smooth, FILTER_8TAP_SMOOTH, 128); +VP9_8TAP_RISCV_RVV_FUNC(16, smooth, FILTER_8TAP_SMOOTH, 128); +VP9_8TAP_RISCV_RVV_FUNC(8, smooth, FILTER_8TAP_SMOOTH, 128); +VP9_8TAP_RISCV_RVV_FUNC(4, smooth, FILTER_8TAP_SMOOTH, 128); + +VP9_8TAP_RISCV_RVV_FUNC(64, regular, FILTER_8TAP_REGULAR, 256); +VP9_8TAP_RISCV_RVV_FUNC(32, regular, FILTER_8TAP_REGULAR, 256); +VP9_8TAP_RISCV_RVV_FUNC(16, regular, FILTER_8TAP_REGULAR, 256); +VP9_8TAP_RISCV_RVV_FUNC(8, regular, FILTER_8TAP_REGULAR, 256); +VP9_8TAP_RISCV_RVV_FUNC(4, regular, FILTER_8TAP_REGULAR, 256); + +VP9_8TAP_RISCV_RVV_FUNC(64, sharp, FILTER_8TAP_SHARP, 256); +VP9_8TAP_RISCV_RVV_FUNC(32, sharp, FILTER_8TAP_SHARP, 256); +VP9_8TAP_RISCV_RVV_FUNC(16, sharp, FILTER_8TAP_SHARP, 256); +VP9_8TAP_RISCV_RVV_FUNC(8, sharp, FILTER_8TAP_SHARP, 256); +VP9_8TAP_RISCV_RVV_FUNC(4, sharp, FILTER_8TAP_SHARP, 256); + +VP9_8TAP_RISCV_RVV_FUNC(64, smooth, FILTER_8TAP_SMOOTH, 256); +VP9_8TAP_RISCV_RVV_FUNC(32, smooth, FILTER_8TAP_SMOOTH, 256); +VP9_8TAP_RISCV_RVV_FUNC(16, smooth, FILTER_8TAP_SMOOTH, 256); +VP9_8TAP_RISCV_RVV_FUNC(8, smooth, FILTER_8TAP_SMOOTH, 256); +VP9_8TAP_RISCV_RVV_FUNC(4, smooth, FILTER_8TAP_SMOOTH, 256); VP9_BILINEAR_RISCV_RVV_FUNC(64); VP9_BILINEAR_RISCV_RVV_FUNC(32); diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c index b3700dfb08..5f759e6bc8 100644 --- a/libavcodec/riscv/vp9dsp_init.c +++ b/libavcodec/riscv/vp9dsp_init.c @@ -49,7 +49,8 @@ static av_cold void vp9dsp_mc_init_riscv(VP9DSPContext *dsp, int bpp) # endif #if HAVE_RVV - if (bpp == 8 && (flags & AV_CPU_FLAG_RVV_I32) && ff_rv_vlen_least(128)) { + if (bpp == 8 && (flags & AV_CPU_FLAG_RVV_I32)) { + if (ff_rv_vlen_least(128)) { #define init_fpel(idx1, sz) \ dsp->mc[idx1][FILTER_8TAP_SMOOTH ][1][0][0] = ff_vp9_avg##sz##_rvv; \ @@ -95,6 +96,40 @@ static av_cold void vp9dsp_mc_init_riscv(VP9DSPContext *dsp, int bpp) dsp->mc[4][FILTER_BILINEAR ][1][1][1] = ff_avg_vp9_bilin_4hv_rvv; #undef init_fpel + +#define init_subpel1(idx1, idx2, idxh, idxv, sz, dir, type, vlen) \ + dsp->mc[idx1][FILTER_8TAP_SMOOTH ][idx2][idxh][idxv] = \ + ff_##type##_vp9_8tap_smooth_##sz##dir##_rvv##vlen; \ + dsp->mc[idx1][FILTER_8TAP_REGULAR][idx2][idxh][idxv] = \ + ff_##type##_vp9_8tap_regular_##sz##dir##_rvv##vlen; \ + dsp->mc[idx1][FILTER_8TAP_SHARP ][idx2][idxh][idxv] = \ + ff_##type##_vp9_8tap_sharp_##sz##dir##_rvv##vlen; + +#define init_subpel2(idx, idxh, idxv, dir, type, vlen) \ + init_subpel1(0, idx, idxh, idxv, 64, dir, type, vlen); \ + init_subpel1(1, idx, idxh, idxv, 32, dir, type, vlen); \ + init_subpel1(2, idx, idxh, idxv, 16, dir, type, vlen); \ + init_subpel1(3, idx, idxh, idxv, 8, dir, type, vlen); \ + init_subpel1(4, idx, idxh, idxv, 4, dir, type, vlen) + + init_subpel2(0, 1, 0, h, put, 128); + init_subpel2(1, 1, 0, h, avg, 128); + + if (flags & AV_CPU_FLAG_RVB_ADDR) { + init_subpel2(0, 0, 1, v, put, 128); + init_subpel2(1, 0, 1, v, avg, 128); + } + + } + if (ff_rv_vlen_least(256)) { + init_subpel2(0, 1, 0, h, put, 256); + init_subpel2(1, 1, 0, h, avg, 256); + + if (flags & AV_CPU_FLAG_RVB_ADDR) { + init_subpel2(0, 0, 1, v, put, 256); + init_subpel2(1, 0, 1, v, avg, 256); + } + } } #endif #endif From patchwork Wed May 29 17:15:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: uk7b@foxmail.com X-Patchwork-Id: 49359 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:8f0d:0:b0:460:55fa:d5ed with SMTP id i13csp805564vqu; Wed, 29 May 2024 10:17:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV0+xrnNf2dDhFfpdfqc25vKFEvq8yuC4CwysoA8SlAAYkgOysUHe92waOUvfRCOxb/Ta27poDnDUTgZQu/xoz6fvJDqRdj17hmvQ== X-Google-Smtp-Source: AGHT+IHTT0pqTmoUH9nnyqr8EY26nRdJiugmdSlDUVIhWNzM/g9Q9OZaHQLZCUtzbQBZ2oQ7tSOP X-Received: by 2002:a17:906:af0e:b0:a59:beb4:62b8 with SMTP id a640c23a62f3a-a642d5a388bmr245152866b.21.1717003027748; Wed, 29 May 2024 10:17:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717003027; cv=none; d=google.com; s=arc-20160816; b=QHm7TVEqiWCQ05INkTJw0JEfp6LhpAMOXWL1ueTwKcb9y0jErXXPl5+5pAcrVyWbNi vftExA66kYMnCQspCZ2/V6pzFx2JTP659vhBM6LnePyRIIi2ZMk0MEpHfFcVqert7Dda IoYB/Wy+LFMaMSJ5YU/jn3mkK3Y7ZXCuckKqq8KJISMXDEdWdpPX5RtlAeELeo3HynIl FraAnffR1aVoCSbnKBmR0sEggD+kX/FcmFeC50zl0taf5Xeo4Af84DGEx3v1CAlDsoA2 OB1V4+58ReiSeU2OuzpvTh2A7/1FZNbKPq2v5XXAOx7th1+HyMtHTN7CtI71tguNnBgZ 4FRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=EcVuutWJeVAbGrBZlP15lyGbq/o/mDYz8FgDSD5UemQ=; fh=D0bFwGkf4X22/D/bfeDVrXKIx7S6kcXsNzy10j8ORbQ=; b=sG8rt7H0MdYgC+XLlnIVnGjTax4MqU4OCGkMrjdHlab0a6n/RLMHuQ/hS0dcg/HxXM vGb6swGtbFJJQ5WK9bhFTNoqa7RMImfe0wRALeT4Lcrs94eKIbmCBfASfzEd5FTx79w9 ZfLGo88Ld3iquLLDxBO+CzOKWa5pHv+cWgFo5iN8fp9whbRrV255I/3JePTZOoHr5Co0 FJLpYzlrgk1co/4NKErlgnNNIjyAi3K8yyY1Vpram2De+vp8Ji6sDr0Xjy4cADy18/ml 8TAhZ8DFX6PJDgoW9h5mm/qUhXzKCBPDzRcCO5dRvdO5pxtie3UaM6cp7EEwWgdnF1BE wTDQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=ByrHV34S; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a626c800623si643805666b.10.2024.05.29.10.17.07; Wed, 29 May 2024 10:17:07 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=ByrHV34S; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 14EC968D55F; Wed, 29 May 2024 20:16:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-58-211.mail.qq.com (out162-62-58-211.mail.qq.com [162.62.58.211]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BD14968D522 for ; Wed, 29 May 2024 20:16:23 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1717002975; bh=D5eLV379Yya45RL2Wb2NCyH2eQSxrTgo1ghIpwOZdGU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=ByrHV34Sfdtvvk4Ew27osd+dJCArAHErgubnezE/kl2q9SsPJCquk+a8lq0nUAfuW RtxCMsc67SmTEkBZ4OhcD1cB9orQOQQL0Y8Xn8qf9lX70pikpC01yD7/K7+8FQF0M+ n7jPoP0mHYLx6H+LfUjQleyJINMciTe65aFL03cc= Received: from localhost.localdomain ([42.86.114.86]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 40A88E50; Thu, 30 May 2024 01:16:10 +0800 X-QQ-mid: xmsmtpt1717002974tf366sdgq Message-ID: X-QQ-XMAILINFO: MtZ4zLDUQmWf/tRfr4+FxTqx6bw+9GFJP16+H73ucEbwKgTUW06LoeUFX5hC1F 297AbYHwLshXELf0SfnH99j8LxBJrNAr+ObDVYQKGSD/zkuLNhajGAcWw9EK0jXyV2ie6xQqqhW/ +SJRPuXNXYjr+/27dDezgfZ4VpQguVRdd1mEXI0lGKC+8/E98XPa9ea1Fs41+XYEZelIF5qWuLxj ba8Nqgc2RNlACBFz5RUNQJNNXiUfUAtdFjLC5ni4HAephJQPPrEJtZZNVuPypPH55Wtgr/GgwLsn TBaiGJaxlPT2DzS/EOYuscenmrWWUrC7nL+UuCj912TrBCkCduYQv/+HcOeh1kIhaWjlHQLRJUeT FPBxqlBj9CzmwfYvan7w2CIBRp2eXCbuU5bUBFOtvh2yQCA890ikucuIBsqTXqby58a3MTNqCYo/ qt0/86C9fsBZxZQoAa6oZOQEME6r1/x8UL7krFppt1gzk+vVTuIxDXq5BsmUOaUl+yfZJSA8KrEc O9HoEk1SBwBHDSC2vZYpRhMWWrTh96ElF/u2OpSOVZI8kKVOn9KH6Ikth+RHK1XWdJMTR04tzNqU mOTooL2L6le+8HPZ5RVKNwR9jGQ08rUBia1jV671UgMxruPluRLzk3BPa9B9sy0CeXHXYoE4H1Uy DTVWDiaFpfsppUey+io9MxGjY3mMHNbAhF0Q/Q1eE/WbWCLCV0U/4ZlyqG6xAiTp3cQsV10HVsjI hqtYmLVK7yr4aiaUy0fIP4XqzqMsID4ihUXR37fUH8LNizrYxIlRsBr4c2e+Eeo+o0lETXY9wUUg JEdAMmYBIdvENJSUgKHAj8rlF3L/ZfVS2oyXSI3cvWNpTFN/mRdBt7BxF0SjQ4ycK48Um/7lC0Lt pFGqpy+0ZctyJSZMNvt74sGi0EGgraww== X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg= From: uk7b@foxmail.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 May 2024 01:15:40 +0800 X-OQ-MSGID: <20240529171540.911099-5-uk7b@foxmail.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240529171540.911099-1-uk7b@foxmail.com> References: <20240529171540.911099-1-uk7b@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 5/5] lavc/vp9dsp: R-V V mc tap hv 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: gKW5PQhlB3ig From: sunyuechi C908 X60 vp9_avg_8tap_smooth_4hv_8bpp_c : 32.0 28.2 vp9_avg_8tap_smooth_4hv_8bpp_rvv_i32 : 15.0 13.2 vp9_avg_8tap_smooth_8hv_8bpp_c : 98.0 86.2 vp9_avg_8tap_smooth_8hv_8bpp_rvv_i32 : 23.7 21.0 vp9_avg_8tap_smooth_16hv_8bpp_c : 355.5 297.0 vp9_avg_8tap_smooth_16hv_8bpp_rvv_i32 : 62.7 41.2 vp9_avg_8tap_smooth_32hv_8bpp_c : 1273.0 1099.7 vp9_avg_8tap_smooth_32hv_8bpp_rvv_i32 : 133.7 119.2 vp9_avg_8tap_smooth_64hv_8bpp_c : 4933.0 4240.5 vp9_avg_8tap_smooth_64hv_8bpp_rvv_i32 : 506.7 227.0 vp9_put_8tap_smooth_4hv_8bpp_c : 30.2 27.0 vp9_put_8tap_smooth_4hv_8bpp_rvv_i32 : 14.5 12.7 vp9_put_8tap_smooth_8hv_8bpp_c : 91.2 81.2 vp9_put_8tap_smooth_8hv_8bpp_rvv_i32 : 22.7 20.2 vp9_put_8tap_smooth_16hv_8bpp_c : 329.2 277.7 vp9_put_8tap_smooth_16hv_8bpp_rvv_i32 : 44.7 40.0 vp9_put_8tap_smooth_32hv_8bpp_c : 1183.7 1022.7 vp9_put_8tap_smooth_32hv_8bpp_rvv_i32 : 130.7 116.5 vp9_put_8tap_smooth_64hv_8bpp_c : 4502.7 3954.5 vp9_put_8tap_smooth_64hv_8bpp_rvv_i32 : 496.0 224.7 --- libavcodec/riscv/vp9_mc_rvv.S | 75 ++++++++++++++++++++++++++++++++++ libavcodec/riscv/vp9dsp_init.c | 8 ++++ 2 files changed, 83 insertions(+) diff --git a/libavcodec/riscv/vp9_mc_rvv.S b/libavcodec/riscv/vp9_mc_rvv.S index 53dd833dac..fed698c802 100644 --- a/libavcodec/riscv/vp9_mc_rvv.S +++ b/libavcodec/riscv/vp9_mc_rvv.S @@ -323,6 +323,77 @@ func ff_\op\()_vp9_8tap_\name\()_\len\()\type\()_rvv\vlen\(), zve32x endfunc .endm +#if __riscv_xlen == 64 +.macro epel_hv_once len, name, op + sub a2, a2, a3 + sub a2, a2, a3 + sub a2, a2, a3 + .irp n,0,2,4,6,8,10,12,14 + epel_load_inc v\n, \len, put, \name, h, 1, t + .endr + addi a4, a4, -1 +1: + addi a4, a4, -1 + epel_load v30, \len, \op, \name, v, 0, s + vse8.v v30, (a0) + vmv.v.v v0, v2 + vmv.v.v v2, v4 + vmv.v.v v4, v6 + vmv.v.v v6, v8 + vmv.v.v v8, v10 + vmv.v.v v10, v12 + vmv.v.v v12, v14 + epel_load v14, \len, put, \name, h, 1, t + add a2, a2, a3 + add a0, a0, a1 + bnez a4, 1b + epel_load v30, \len, \op, \name, v, 0, s + vse8.v v30, (a0) +.endm + +.macro epel_hv op, name, len, vlen +func ff_\op\()_vp9_8tap_\name\()_\len\()hv_rvv\vlen\(), zve32x + addi sp, sp, -64 + .irp n,0,1,2,3,4,5,6,7 + sd s\n, \n\()<<3(sp) + .endr +.if \len == 64 && \vlen < 256 + addi sp, sp, -48 + .irp n,0,1,2,3,4,5 + sd a\n, \n\()<<3(sp) + .endr +.endif +.ifc \op,avg + csrwi vxrm, 0 +.endif + epel_filter \name, h, t + epel_filter \name, v, s +.if \vlen < 256 + vsetvlstatic8 \len, a6, 32, m2 +.else + vsetvlstatic8 \len, a6, 64, m2 +.endif + epel_hv_once \len, \name, \op +.if \len == 64 && \vlen < 256 + .irp n,0,1,2,3,4,5 + ld a\n, \n\()<<3(sp) + .endr + addi sp, sp, 48 + addi a0, a0, 32 + addi a2, a2, 32 + epel_filter \name, h, t + epel_hv_once \len, \name, \op +.endif + .irp n,0,1,2,3,4,5,6,7 + ld s\n, \n\()<<3(sp) + .endr + addi sp, sp, 64 + + ret +endfunc +.endm +#endif + .irp len, 64, 32, 16, 8, 4 copy_avg \len .irp op, put, avg @@ -331,6 +402,10 @@ endfunc epel \len, \op, \name, \type, 128 epel \len, \op, \name, \type, 256 .endr + #if __riscv_xlen == 64 + epel_hv \op, \name, \len, 128 + epel_hv \op, \name, \len, 256 + #endif .endr .endr .endr diff --git a/libavcodec/riscv/vp9dsp_init.c b/libavcodec/riscv/vp9dsp_init.c index 5f759e6bc8..6b39ad8ee0 100644 --- a/libavcodec/riscv/vp9dsp_init.c +++ b/libavcodec/riscv/vp9dsp_init.c @@ -118,6 +118,10 @@ static av_cold void vp9dsp_mc_init_riscv(VP9DSPContext *dsp, int bpp) if (flags & AV_CPU_FLAG_RVB_ADDR) { init_subpel2(0, 0, 1, v, put, 128); init_subpel2(1, 0, 1, v, avg, 128); +# if __riscv_xlen == 64 + init_subpel2(0, 1, 1, hv, put, 128); + init_subpel2(1, 1, 1, hv, avg, 128); +# endif } } @@ -128,6 +132,10 @@ static av_cold void vp9dsp_mc_init_riscv(VP9DSPContext *dsp, int bpp) if (flags & AV_CPU_FLAG_RVB_ADDR) { init_subpel2(0, 0, 1, v, put, 256); init_subpel2(1, 0, 1, v, avg, 256); +# if __riscv_xlen == 64 + init_subpel2(0, 1, 1, hv, put, 256); + init_subpel2(1, 1, 1, hv, avg, 256); +# endif } } }