From patchwork Tue May 7 19:12:04 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: 48647 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9c99:b0:1af:836d:81b3 with SMTP id mj25csp110135pzb; Tue, 7 May 2024 12:12:19 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUQc4mUgzT7J1Iqb8XvbaZNkn3Q9R41Pyf9WN0ZOOL4H73f5WGeJrHCWaWKFQd5cmwfG9sus0MjU8BI/IIhdkh3Cxh4Xmuy230Dmg== X-Google-Smtp-Source: AGHT+IFgDTC+PcGqBzKNCOWJqBOHGDA1jmlxQ7QNvaF8nDUR1MvwYOpXZ3TJ6Zu9Wl2QFNTNCPmv X-Received: by 2002:a17:906:1110:b0:a59:b1cf:fea3 with SMTP id a640c23a62f3a-a59fb947c87mr23742366b.3.1715109139553; Tue, 07 May 2024 12:12:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1715109139; cv=none; d=google.com; s=arc-20160816; b=nfol59z39wZPXfp3vcFOdGabIKEyUI4KTa7a8eHC2i7vx0ulDla52usHMtwuH6IdV0 5RiN9h6p7HqjQZOV4yNH12mVxJjvJ4bKafpvz6X3DFEc4Us0vSm5YB4qOHEVLn1tRYbo /kfJBYroHOniOWPKU8fE2nvI/xbsnxURj9vib8d3Dq/Ypa+mWFcT8lcD5kQpYGMZloQq MLiKW6BDUUKDitoPDd1Ik/sw5jFxC2wtZSAhDz15NiWaO4KbPulAbtMFiG/GpfNOaNyN BS3R9EoII3GBCLpfqxuIAY9CaWHBO6z9YuSJ12mR6JKtqxrWza4q1lL93Ci0IofhjWtk 4E0A== 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=gqF7EX3MyyyPOFr7NL1Q+A+srzLkJI6V5S6TsXA6V9c=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=tAIzqYkjRhEKVuY5MAeqpF+jnTb8x2/vv1nyAMINnXKkXpXMMCeIMq23XJpeeWxpgQ Us5amUycgMVVOqPjpKEdLT/QzgQMcKfZQNOKxuG3cZZElNxodDKQFJZU1g5AfN0ocNdP rULqNoz/VQSpbBT0qnie12Jw7M16v2fYDtxSp1HtHZNtZ1fR+DJJOqGHjYSKWKAFE/mh Dyf/gDJY48v1G6/hEN/PBuqrD/WnCbuqWblOW8g/RHZQIwXHibNRpvHmOYiBjSa2Nsy5 3mIj9d1a5F0IIWitEsikhSvd9SYnFmBmHUjSNKy4i4Bw0bLE0NryBCOgojX+S29Xm/Gt szKA==; 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 n18-20020a1709062bd200b00a59be66e43dsi3431332ejg.546.2024.05.07.12.12.19; Tue, 07 May 2024 12:12:19 -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 3DE3768D6FE; Tue, 7 May 2024 22:12:15 +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 D48E568D548 for ; Tue, 7 May 2024 22:12:08 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id 54EDBC00C0 for ; Tue, 7 May 2024 22:12:08 +0300 (EEST) From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 7 May 2024 22:12:04 +0300 Message-ID: <20240507191208.61372-1-remi@remlab.net> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] riscv: add Zvbb vector bit manipulation extension 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: Oo7KNpBZRrEU --- Makefile | 2 +- configure | 3 +++ doc/APIchanges | 3 +++ ffbuild/arch.mak | 1 + libavutil/cpu.h | 1 + libavutil/tests/cpu.c | 1 + tests/checkasm/checkasm.c | 1 + 7 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index de727cbe00..4c3af09fec 100644 --- a/Makefile +++ b/Makefile @@ -101,7 +101,7 @@ SUBDIR_VARS := CLEANFILES FFLIBS HOSTPROGS TESTPROGS TOOLS \ ARMV5TE-OBJS ARMV6-OBJS ARMV8-OBJS VFP-OBJS NEON-OBJS \ ALTIVEC-OBJS VSX-OBJS MMX-OBJS X86ASM-OBJS \ MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSP-OBJS MSA-OBJS \ - MMI-OBJS LSX-OBJS LASX-OBJS RV-OBJS RVV-OBJS \ + MMI-OBJS LSX-OBJS LASX-OBJS RV-OBJS RVV-OBJS RVVB-OBJS \ OBJS SLIBOBJS SHLIBOBJS STLIBOBJS HOSTOBJS TESTOBJS define RESET diff --git a/configure b/configure index 00c3cee33f..2c74b1e8a3 100755 --- a/configure +++ b/configure @@ -2222,6 +2222,7 @@ ARCH_EXT_LIST_PPC=" ARCH_EXT_LIST_RISCV=" rv rvv + rv_zvbb " ARCH_EXT_LIST_X86=" @@ -2760,6 +2761,7 @@ power8_deps="vsx" rv_deps="riscv" rvv_deps="rv" +rv_zvbb_deps="rvv" loongson2_deps="mips" loongson3_deps="mips" @@ -6379,6 +6381,7 @@ elif enabled riscv; then enabled rv && check_inline_asm rv '".option arch, +zbb\nrev8 t0, t1"' enabled rvv && check_inline_asm rvv '".option arch, +v\nvsetivli zero, 0, e8, m1, ta, ma"' + enabled rv_zvbb && check_inline_asm rv_zvbb '".option arch, +zvbb\nvclz.v v0, v8"' elif enabled x86; then diff --git a/doc/APIchanges b/doc/APIchanges index 824beec9d3..238d22c135 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,9 @@ The last version increases of all libraries were on 2024-03-07 API changes, most recent first: +2024-05-10 - xxxxxxxxx - lavu 59.18.100 - cpu.h + Add AV_CPU_FLAG_RV_ZVBB. + 2024-05-04 - xxxxxxxxxx - lavu 59.17.100 - opt.h Add AV_OPT_TYPE_UINT and av_opt_eval_uint(). diff --git a/ffbuild/arch.mak b/ffbuild/arch.mak index 23a3feb090..3fc40e5e5d 100644 --- a/ffbuild/arch.mak +++ b/ffbuild/arch.mak @@ -17,6 +17,7 @@ OBJS-$(HAVE_VSX) += $(VSX-OBJS) $(VSX-OBJS-yes) OBJS-$(HAVE_RV) += $(RV-OBJS) $(RV-OBJS-yes) OBJS-$(HAVE_RVV) += $(RVV-OBJS) $(RVV-OBJS-yes) +OBJS-$(HAVE_RV_ZVBB) += $(RVVB-OBJS) $(RVVB-OBJS-yes) OBJS-$(HAVE_MMX) += $(MMX-OBJS) $(MMX-OBJS-yes) OBJS-$(HAVE_X86ASM) += $(X86ASM-OBJS) $(X86ASM-OBJS-yes) diff --git a/libavutil/cpu.h b/libavutil/cpu.h index 8dff341886..cc19828d4b 100644 --- a/libavutil/cpu.h +++ b/libavutil/cpu.h @@ -90,6 +90,7 @@ #define AV_CPU_FLAG_RVV_F64 (1 << 6) ///< Vectors of double's #define AV_CPU_FLAG_RVB_BASIC (1 << 7) ///< Basic bit-manipulations #define AV_CPU_FLAG_RVB_ADDR (1 << 8) ///< Address bit-manipulations +#define AV_CPU_FLAG_RV_ZVBB (1 << 9) ///< Vector basic bit-manipulations /** * Return the flags which specify extensions supported by the CPU. diff --git a/libavutil/tests/cpu.c b/libavutil/tests/cpu.c index d91bfeab5c..10e620963b 100644 --- a/libavutil/tests/cpu.c +++ b/libavutil/tests/cpu.c @@ -94,6 +94,7 @@ static const struct { { AV_CPU_FLAG_RVV_F32, "zve32f" }, { AV_CPU_FLAG_RVV_I64, "zve64x" }, { AV_CPU_FLAG_RVV_F64, "zve64d" }, + { AV_CPU_FLAG_RV_ZVBB, "zvbb" }, #endif { 0 } }; diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 9be32fc16e..9a05c1f95e 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -282,6 +282,7 @@ static const struct { { "RVVf32", "rvv_f32", AV_CPU_FLAG_RVV_F32 }, { "RVVi64", "rvv_i64", AV_CPU_FLAG_RVV_I64 }, { "RVVf64", "rvv_f64", AV_CPU_FLAG_RVV_F64 }, + { "RV_Zvbb", "rv_zvbb", AV_CPU_FLAG_RV_ZVBB }, #elif ARCH_MIPS { "MMI", "mmi", AV_CPU_FLAG_MMI }, { "MSA", "msa", AV_CPU_FLAG_MSA }, From patchwork Tue May 7 19:12:05 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: 48648 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9c99:b0:1af:836d:81b3 with SMTP id mj25csp110207pzb; Tue, 7 May 2024 12:12:29 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXhsMukLuixq5U8mg6M142mf9D+0iqjZSzdCoNo2TnumwI17tjSAwayI4YPbPZxlwiFKCrmbTPms0o9ERv/NiHWM1WVpTHv9RkzwQ== X-Google-Smtp-Source: AGHT+IE4idbdGEIonDLvt8doIZNQp87Y8m6YvEu9IniruFp26yLtI+IZcctP2MxIKav06PGH0TLG X-Received: by 2002:a17:906:81d4:b0:a58:ef89:d04c with SMTP id a640c23a62f3a-a59fb96a322mr22135066b.46.1715109149193; Tue, 07 May 2024 12:12:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1715109149; cv=none; d=google.com; s=arc-20160816; b=P2+/0d7m27C3znboGBkjCe+xlwUHdagA707ZV44sUf7hN+MQs3IbF/DjMoUHvQNR7o uQNVUm0kXhEXtKYTkz1a9Wg+jaaF29zPNkC9G/31k2GchP/drlJCOmnUvfu/4wbIVGN3 Ww6cBnPs+vgMgxtx/X4OjjE1GMpgFSjDIaT14pnbjaor5pRmNrw1Tfv4+MPfiUiQGkV5 dfuHZLrbb+Z1GkbzeUjvvw5oOTPHVL8VzlwFTcU+UGjrp+BDNIOJ54WTH0UVaTPciSOA Z9cd+f2s5mfnNDxIFphlKrtntbyTgttf3GZc9ICoBw32iCrdtwTibej82PQnepKPXm4a mFtA== 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=z8dkY7P4fvvyXQ9Z11mdgw18VpJDpz2Q/KFEwZQgzzw=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=nJiwUMCdbcaQfD8gG0HsB6Aa6wpsx7pqNhWC5ppbwK9RMt0V7DFPgFOaSpNIbO9b9H ux7TrdIS0jseG3EadsOsICYZSdp9Gtyzl7uNzvPEc19OihvlDjHsDHQBGx4OOmuAdovA nVsYeKt11g89luRLzMGYR82gedEjttx1SnIaKJe+ibPBR+9X7rDiYpgqiRayHfhJPwLa UeBmPGJQdekDAetCbfFHprMeGdTyKojc/zotlqxnVt8hn3ZmAMzckjy1/1Os7OtUuGIT CBR+6777xueuRpL5JFRkIY2li7NhMIWytUp9hYBcF3C0xsl2svQAv0R+2ADjC+Ee3Yj6 6jxg==; 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 u25-20020a17090657d900b00a59ae97e3e2si4128862ejr.675.2024.05.07.12.12.28; Tue, 07 May 2024 12:12:29 -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 6150268D709; Tue, 7 May 2024 22:12:16 +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 EE6A468D54D for ; Tue, 7 May 2024 22:12:08 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id 866A7C0186 for ; Tue, 7 May 2024 22:12:08 +0300 (EEST) From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 7 May 2024 22:12:05 +0300 Message-ID: <20240507191208.61372-2-remi@remlab.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240507191208.61372-1-remi@remlab.net> References: <20240507191208.61372-1-remi@remlab.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] lavu/riscv: add Zvbb CPU capability detection 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: lUkjSDtFoq7z This requires Linux kernel version 6.8 or later. --- libavutil/riscv/cpu.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavutil/riscv/cpu.c b/libavutil/riscv/cpu.c index 69d1afe853..3cf4e25bc9 100644 --- a/libavutil/riscv/cpu.c +++ b/libavutil/riscv/cpu.c @@ -54,6 +54,10 @@ int ff_get_cpu_flags_riscv(void) ret |= AV_CPU_FLAG_RVB_ADDR; if (pairs[1].value & RISCV_HWPROBE_EXT_ZBB) ret |= AV_CPU_FLAG_RVB_BASIC; +#ifdef RISCV_HWPROBE_EXT_ZVBB + if (pairs[1].value & RISCV_HWPROBE_EXT_ZVBB) + ret |= AV_CPU_FLAG_RV_ZVBB; +#endif } else #endif #if HAVE_GETAUXVAL @@ -105,6 +109,9 @@ int ff_get_cpu_flags_riscv(void) ret |= AV_CPU_FLAG_RVV_F64; #endif #endif +#endif +#ifdef __riscv_zvbb + ret |= AV_CPU_FLAG_RV_ZVBB; #endif return ret; From patchwork Tue May 7 19:12:06 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: 48649 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9c99:b0:1af:836d:81b3 with SMTP id mj25csp110269pzb; Tue, 7 May 2024 12:12:38 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUPbB5JFXH5w7HyBJ0KnfzrMg2KwZ1Vc/ZQDhJcIVLuOXB6NvowtoYj+U9JQFC4rJCK0vwBFXZQFheM476OTIunIuoa26+R6qRIVA== X-Google-Smtp-Source: AGHT+IEioQcAbMxA2BInxUi7mNsJ1oODM6XoikHtM+ogy//CvU3ku++1V3907LUGy9SCvAzkQEfj X-Received: by 2002:a19:434b:0:b0:519:6953:2ffc with SMTP id 2adb3069b0e04-5217cc4af32mr234244e87.42.1715109158420; Tue, 07 May 2024 12:12:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1715109158; cv=none; d=google.com; s=arc-20160816; b=RTYRmsTWqcDGtjIoaOWS60WdoSrfHyaA/NHJ6dM8gN4SMRx3P6va0E5cBWlk79zVFg UNOfqUod6JkQW/iVV0IUlPrH5F1Mnq7kQYjDKm3xZj/kAMe1R4aVoQFvRonZU3z4Lh9r nKlVfbXL8cNl55rsExjft6I6dLFpnGiDDZvA46giflgO4JhkLURXcSMEK5iMB7RYjA31 GPv6h+i1FJl7ti/8kEEzmgpxvrbYnfa8J+91NKFK0w+eCpbVXffK4e1e/XJeeq50JC/8 7kB5qXXW4dpnATdDZrivP3tVELctz7VPRY882lKYNtIlTEzURGRP1UtPCLeKuRHx6PIO hPoA== 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=txGWgDyUnZZ5QBKHPHYx0DKfT3iHbjhBKt/M2dBla+c=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=j/cWW5EfsF0jDM8vN4mTcLYJM9Ai39gLGSorJbvByUNqfjVfNLueykzymGU+J1yP0C 3wVU2SAQZVELuXPU3evJcRzBeWzAY5b19Zx3WLWSFdjVS0M3hYrzft0ULv15ofmyyPT8 Y1jvRDwNdRbXzU60zbwTpONXmgtwXLZ7sFHDKAzmLvF0aBo604atmybjjMhjR17GyX9e QQSXdImMdYb0gZRj+/ZgAacUDuF2JTpP1HN3u6uiy7S23qJGGoHZOdGdzQohoCvrMqDZ QzB8vM2MmkJBxiQWCxX7ZPedV0MtGkSQbe8802uMzWaMDSS8uyJxsvl/kE4hYUmyVKP/ 0AWA==; 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 i5-20020aa7c705000000b00572c1b11bf9si6012846edq.107.2024.05.07.12.12.37; Tue, 07 May 2024 12:12:38 -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 5B56268D548; Tue, 7 May 2024 22:12:17 +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 5584368D54D for ; Tue, 7 May 2024 22:12:09 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id B6F35C018C for ; Tue, 7 May 2024 22:12:08 +0300 (EEST) From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 7 May 2024 22:12:06 +0300 Message-ID: <20240507191208.61372-3-remi@remlab.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240507191208.61372-1-remi@remlab.net> References: <20240507191208.61372-1-remi@remlab.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] lavc/ac3dsp: add R-V Zvbb extract_exponents 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: DA+oz0ibpFv0 --- libavcodec/riscv/Makefile | 1 + libavcodec/riscv/ac3dsp_init.c | 5 ++++ libavcodec/riscv/ac3dsp_rvvb.S | 43 ++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 libavcodec/riscv/ac3dsp_rvvb.S diff --git a/libavcodec/riscv/Makefile b/libavcodec/riscv/Makefile index 11d47f9a57..bd24f18cb9 100644 --- a/libavcodec/riscv/Makefile +++ b/libavcodec/riscv/Makefile @@ -5,6 +5,7 @@ RVV-OBJS-$(CONFIG_AAC_ENCODER) += riscv/aacencdsp_rvv.o OBJS-$(CONFIG_AC3DSP) += riscv/ac3dsp_init.o RV-OBJS-$(CONFIG_AC3DSP) += riscv/ac3dsp_rvb.o RVV-OBJS-$(CONFIG_AC3DSP) += riscv/ac3dsp_rvv.o +RVVB-OBJS-$(CONFIG_AC3DSP) += riscv/ac3dsp_rvvb.o OBJS-$(CONFIG_ALAC_DECODER) += riscv/alacdsp_init.o RVV-OBJS-$(CONFIG_ALAC_DECODER) += riscv/alacdsp_rvv.o OBJS-$(CONFIG_AUDIODSP) += riscv/audiodsp_init.o diff --git a/libavcodec/riscv/ac3dsp_init.c b/libavcodec/riscv/ac3dsp_init.c index 8cfa69055a..f66b6cac57 100644 --- a/libavcodec/riscv/ac3dsp_init.c +++ b/libavcodec/riscv/ac3dsp_init.c @@ -29,6 +29,7 @@ void ff_ac3_exponent_min_rvb(uint8_t *exp, int, int); void ff_ac3_exponent_min_rvv(uint8_t *exp, int, int); void ff_extract_exponents_rvb(uint8_t *exp, int32_t *coef, int nb_coefs); +void ff_extract_exponents_rvvb(uint8_t *exp, int32_t *coef, int nb_coefs); void ff_float_to_fixed24_rvv(int32_t *dst, const float *src, size_t len); void ff_sum_square_butterfly_int32_rvv(int64_t *, const int32_t *, const int32_t *, int); @@ -48,6 +49,10 @@ av_cold void ff_ac3dsp_init_riscv(AC3DSPContext *c) if (flags & AV_CPU_FLAG_RVB_ADDR) { if (flags & AV_CPU_FLAG_RVB_BASIC) c->extract_exponents = ff_extract_exponents_rvb; +# if HAVE_RV_ZVBB + if (flags & AV_CPU_FLAG_RV_ZVBB) + c->extract_exponents = ff_extract_exponents_rvvb; +# endif if (flags & AV_CPU_FLAG_RVV_F32) { c->float_to_fixed24 = ff_float_to_fixed24_rvv; c->sum_square_butterfly_float = ff_sum_square_butterfly_float_rvv; diff --git a/libavcodec/riscv/ac3dsp_rvvb.S b/libavcodec/riscv/ac3dsp_rvvb.S new file mode 100644 index 0000000000..64766b56be --- /dev/null +++ b/libavcodec/riscv/ac3dsp_rvvb.S @@ -0,0 +1,43 @@ +/* + * Copyright © 2023 Rémi Denis-Courmont. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "libavutil/riscv/asm.S" + +func ff_extract_exponents_rvvb, zve32x, zvbb +1: + vsetvli t0, a2, e32, m8, ta, ma + vle32.v v8, (a1) + sub a2, a2, t0 + vneg.v v16, v8 + sh2add a1, t0, a1 + vmax.vv v8, v8, v16 + vclz.v v8, v8 + vsetvli zero, zero, e16, m4, ta, ma + vncvt.x.x.w v4, v8 + vsetvli zero, zero, e8, m2, ta, ma + vncvt.x.x.w v2, v4 + vadd.vi v2, v2, 24 - 32 + vse8.v v2, (a0) + add a0, a0, t0 + bnez a2, 1b + + ret +endfunc