From patchwork Sat May 18 15:53:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= X-Patchwork-Id: 48982 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3513695pzb; Sat, 18 May 2024 08:53:36 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW0SA7HOylUwoHWJjfIDR/LQ+TmqZYbboH8qGxj669yaAeePXZoKWa/URTgI+MWL/PDAaN+9XGUnhNbPffjC0PmOAvF5/IPUYgLQg== X-Google-Smtp-Source: AGHT+IE0Ssf3ec7xs5ZaKd7jnMVlc/zEpeC7nG2ImGx43C8JjC/iuJ7ELYyHdLN4Sb9992g6uZFR X-Received: by 2002:a50:f61e:0:b0:572:1625:ae99 with SMTP id 4fb4d7f45d1cf-5734d67ea99mr16050120a12.31.1716047616065; Sat, 18 May 2024 08:53:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1716047616; cv=none; d=google.com; s=arc-20160816; b=VZuGwWON9F1hvuYBeFKfCF86xlM/JqCJBBnigtXg7oYFpNRyrtccy24cumDYgPxlFB FaFHGma4EokEIux14vJ8Xm+PgMuhZVSIGJhGkrK8WrnfqVaavBaKRsqrdXZSEegjiKiz ZebhYUUHoM7orQv4nkHGAXfhf5KoESPl55h1eGzNhjFi3NK7oAf6ADa/HLa0Nr4eU4sW SuoLS1BEInhiDL132chnVZhyg4ADC0x8ayby+Yg/ivR6oyHsZv8yf1LVsIE8/ep7S9gd sNa/SAGDebKkT7af7SWQ/jlUW19DerYiQlKNZQXObm61W51ytC/0S+slC7iBQ4MwCA8L JL0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=wgyDQ07yw/rHVN/eH1TOK+0A9pgynZ+YdeKJB+sv9vw=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=YYnhWvXJLkhqJQE4t+qv0Z/kAk2Sy+qUyrS3nqQgR2PYQHej79eLTQfduxKhuThgXH UZ8Wu1mw8fzQbOYnhjKqFjdc+o8RMkdk39R4LqpQfJ32VVyf6jK/reLHv9BQpiokHv64 jn5neC+x0DUCiKF9ETI3ucM/Lm7SP3gBET+vHuBO8k8PV2QUWz1ScnIP4xS/BJItV/WQ WfZNG/tlQRAJi+KD15tJRiO5pvd5xc6ogl6zhRvkeiJIQkkBkXBiisZ45nUQ63fRzGlR ehPiPlKYdq+6ESvbvSZhb5OxBSVCPIfYTN2UA301ZIqV0lqkh233E7qZLgjQYjcZmCfV /cbg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-574f50048c7si4739147a12.199.2024.05.18.08.53.35; Sat, 18 May 2024 08:53:36 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3537B68CF19; Sat, 18 May 2024 18:53:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from ursule.remlab.net (vps-a2bccee9.vps.ovh.net [51.75.19.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C089768C72F for ; Sat, 18 May 2024 18:53:24 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id 1CACCC013E for ; Sat, 18 May 2024 18:53:24 +0300 (EEST) From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 18 May 2024 18:53:21 +0300 Message-ID: <20240518155323.32422-1-remi@remlab.net> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] lavc/startcode: add R-V V startcode_find_candidate 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Ri3MAkizAI88 --- libavcodec/riscv/Makefile | 1 + libavcodec/riscv/h264dsp_init.c | 5 ++++ libavcodec/riscv/startcode_rvv.S | 44 ++++++++++++++++++++++++++++++++ libavcodec/riscv/vc1dsp_init.c | 20 +++++++++------ 4 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 libavcodec/riscv/startcode_rvv.S diff --git a/libavcodec/riscv/Makefile b/libavcodec/riscv/Makefile index 697c10269a..07d5c2915d 100644 --- a/libavcodec/riscv/Makefile +++ b/libavcodec/riscv/Makefile @@ -53,6 +53,7 @@ RVV-OBJS-$(CONFIG_RV34DSP) += riscv/rv34dsp_rvv.o OBJS-$(CONFIG_RV40_DECODER) += riscv/rv40dsp_init.o RVV-OBJS-$(CONFIG_RV40_DECODER) += riscv/rv40dsp_rvv.o RV-OBJS-$(CONFIG_STARTCODE) += riscv/startcode_rvb.o +RVV-OBJS-$(CONFIG_STARTCODE) += riscv/startcode_rvv.o OBJS-$(CONFIG_SVQ1_ENCODER) += riscv/svqenc_init.o RVV-OBJS-$(CONFIG_SVQ1_ENCODER) += riscv/svqenc_rvv.o OBJS-$(CONFIG_TAK_DECODER) += riscv/takdsp_init.o diff --git a/libavcodec/riscv/h264dsp_init.c b/libavcodec/riscv/h264dsp_init.c index 60c84734cd..dbbf3db400 100644 --- a/libavcodec/riscv/h264dsp_init.c +++ b/libavcodec/riscv/h264dsp_init.c @@ -27,6 +27,7 @@ #include "libavcodec/h264dsp.h" extern int ff_startcode_find_candidate_rvb(const uint8_t *, int); +extern int ff_startcode_find_candidate_rvv(const uint8_t *, int); av_cold void ff_h264dsp_init_riscv(H264DSPContext *dsp, const int bit_depth, const int chroma_format_idc) @@ -36,5 +37,9 @@ av_cold void ff_h264dsp_init_riscv(H264DSPContext *dsp, const int bit_depth, if (flags & AV_CPU_FLAG_RVB_BASIC) dsp->startcode_find_candidate = ff_startcode_find_candidate_rvb; +# if HAVE_RVV + if (flags & AV_CPU_FLAG_RVV_I32) + dsp->startcode_find_candidate = ff_startcode_find_candidate_rvv; +# endif #endif } diff --git a/libavcodec/riscv/startcode_rvv.S b/libavcodec/riscv/startcode_rvv.S new file mode 100644 index 0000000000..7c43b1d7f3 --- /dev/null +++ b/libavcodec/riscv/startcode_rvv.S @@ -0,0 +1,44 @@ +/* + * Copyright © 2024 Rémi Denis-Courmont. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "libavutil/riscv/asm.S" + +func ff_startcode_find_candidate_rvv, zve32x + mv t0, a0 +1: + vsetvli t1, a1, e8, m8, ta, ma + vle8.v v8, (t0) + sub a1, a1, t1 + vmseq.vi v0, v8, 0 + vfirst.m t2, v0 + bgez t2, 2f + add t0, t0, t1 + bnez a1, 1b +2: + add t0, t0, t2 + sub a0, t0, a0 + ret +endfunc diff --git a/libavcodec/riscv/vc1dsp_init.c b/libavcodec/riscv/vc1dsp_init.c index d82f7efbc2..8ef0c1f40f 100644 --- a/libavcodec/riscv/vc1dsp_init.c +++ b/libavcodec/riscv/vc1dsp_init.c @@ -34,6 +34,7 @@ void ff_put_pixels8x8_rvi(uint8_t *dst, const uint8_t *src, ptrdiff_t line_size, void ff_avg_pixels16x16_rvv(uint8_t *dst, const uint8_t *src, ptrdiff_t line_size, int rnd); void ff_avg_pixels8x8_rvv(uint8_t *dst, const uint8_t *src, ptrdiff_t line_size, int rnd); int ff_startcode_find_candidate_rvb(const uint8_t *, int); +int ff_startcode_find_candidate_rvv(const uint8_t *, int); av_cold void ff_vc1dsp_init_riscv(VC1DSPContext *dsp) { @@ -49,15 +50,18 @@ av_cold void ff_vc1dsp_init_riscv(VC1DSPContext *dsp) if (flags & AV_CPU_FLAG_RVB_BASIC) dsp->startcode_find_candidate = ff_startcode_find_candidate_rvb; # if HAVE_RVV - if (flags & AV_CPU_FLAG_RVV_I32 && ff_rv_vlen_least(128)) { - dsp->vc1_inv_trans_4x8_dc = ff_vc1_inv_trans_4x8_dc_rvv; - dsp->vc1_inv_trans_4x4_dc = ff_vc1_inv_trans_4x4_dc_rvv; - dsp->avg_vc1_mspel_pixels_tab[0][0] = ff_avg_pixels16x16_rvv; - if (flags & AV_CPU_FLAG_RVV_I64) { - dsp->vc1_inv_trans_8x8_dc = ff_vc1_inv_trans_8x8_dc_rvv; - dsp->vc1_inv_trans_8x4_dc = ff_vc1_inv_trans_8x4_dc_rvv; - dsp->avg_vc1_mspel_pixels_tab[1][0] = ff_avg_pixels8x8_rvv; + if (flags & AV_CPU_FLAG_RVV_I32) { + if (ff_rv_vlen_least(128)) { + dsp->vc1_inv_trans_4x8_dc = ff_vc1_inv_trans_4x8_dc_rvv; + dsp->vc1_inv_trans_4x4_dc = ff_vc1_inv_trans_4x4_dc_rvv; + dsp->avg_vc1_mspel_pixels_tab[0][0] = ff_avg_pixels16x16_rvv; + if (flags & AV_CPU_FLAG_RVV_I64) { + dsp->vc1_inv_trans_8x8_dc = ff_vc1_inv_trans_8x8_dc_rvv; + dsp->vc1_inv_trans_8x4_dc = ff_vc1_inv_trans_8x4_dc_rvv; + dsp->avg_vc1_mspel_pixels_tab[1][0] = ff_avg_pixels8x8_rvv; + } } + dsp->startcode_find_candidate = ff_startcode_find_candidate_rvv; } # endif #endif From patchwork Sat May 18 15:53:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= X-Patchwork-Id: 48981 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:3a48:b0:1af:fc2d:ff5a with SMTP id zu8csp3513751pzb; Sat, 18 May 2024 08:53:46 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCX4QhMKnmfNjM6rFSkxEGqB3VyDI+M4Of1OirXLk+pSsGvq8sJ0fwj8eDzw6ociRizbYf6bB87yrbj2cw2OvQM+YB0tsF5KnI+fFg== X-Google-Smtp-Source: AGHT+IGIjsWaoDjoMO45An09iZ8yiOSyiLmaoXq6ypQ7pyX89CQp72uEZxL3AfafpiJMQWwQo987 X-Received: by 2002:a17:907:a4e:b0:a59:da00:5acf with SMTP id a640c23a62f3a-a5a2d53f590mr2023222466b.2.1716047626008; Sat, 18 May 2024 08:53:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1716047625; cv=none; d=google.com; s=arc-20160816; b=xn9t52rZbcybFCX6mo+4hoESc5eSl80Yju2lBjoeTLX2F5p+CKQxsKDePp121Edcb1 3f2g0LvDKFbYqfXDkGzNAbDz2hVdUuiGhKZdiMsUeG4MVC1LFte3o5ZoImbnHdJvyWkv Y9whGYx1PS3m0fseuKHnyJ7iZGSVdgjGpbg6LArYNG8oMdjpcZJqqKj+gebc4l5MM4oz u5oj8b3XJya/AzEiZsCsH3Ig0LULka0kkU+ji8UJF8TVJrxxVwjxzCEvIPzh6BQdE3tx asIMZIPx/PleQ5mjaGxNdaEfqArHXSXm1aMWU0AWeU5/JagMUmG/2GopjVGExKQzR5fp m2Cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:delivered-to; bh=YTwKzVGI5I3dNRsLyTkm9sWUKKu+jTJ2mjzQVFWOXp4=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=FnxTbFhSqRaY7/rbWiiuzMlThxWkW1E6u9ThkiblfIP04V83qBnT6BuSXZkzDuPnu+ 7PcBeVfZEcEfyYpl1pxmXDK/coYiACkVSBIOye5bvFDKJ3KkQE28doL+p5FRGgml5rrJ U86eEXisZ6VXm/1YFfZ+Xz9O0wvNfzpvAEBuiI41yKq20qZTGgTMt1cXI0pTL+mjEss3 m/nU7xiM9t3VZMPOqr1jYrWthrozKz5nvs0oLC4xduYIarxxq/hr0AG8DY9B3m3KPkG9 hPmuS9sLLbToS5i2hcoUMshICv1P876L/n6Hj4ZZKqgIzIlf68Jzttj1bGbqilhWLLMu Ko6w==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a5a17c2c393si1187429666b.934.2024.05.18.08.53.45; Sat, 18 May 2024 08:53:45 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 593BB68CF25; Sat, 18 May 2024 18:53:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from ursule.remlab.net (vps-a2bccee9.vps.ovh.net [51.75.19.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C3E0268CE05 for ; Sat, 18 May 2024 18:53:24 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id 50456C0142 for ; Sat, 18 May 2024 18:53:24 +0300 (EEST) From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 18 May 2024 18:53:22 +0300 Message-ID: <20240518155323.32422-2-remi@remlab.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240518155323.32422-1-remi@remlab.net> References: <20240518155323.32422-1-remi@remlab.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] lavc/vp8dsp: fix .irp use with LLVM as 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 5KAvF5H0PHZz --- libavcodec/riscv/vp8dsp_rvv.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/riscv/vp8dsp_rvv.S b/libavcodec/riscv/vp8dsp_rvv.S index 4d7a9f6a2d..0ba9fa443d 100644 --- a/libavcodec/riscv/vp8dsp_rvv.S +++ b/libavcodec/riscv/vp8dsp_rvv.S @@ -171,7 +171,7 @@ endconst li t1, 6 mul t0, t0, t1 add t0, t0, t2 - .irp n 1,2,3,4 + .irp n,1,2,3,4 lb t\n, \n(t0) .endr .ifc \size,6 @@ -236,7 +236,7 @@ func ff_put_vp8_epel\len\()_\type\()\size\()_rvv, zve32x endfunc .endm -.irp len 16,8,4 +.irp len,16,8,4 put_vp8_bilin_h_v \len h a5 put_vp8_bilin_h_v \len v a6 put_vp8_bilin_hv \len