From patchwork Tue Sep 27 20:04:21 2022 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: 38384 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp776193pzh; Tue, 27 Sep 2022 13:04:38 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7VKd8rLyRoij+BJHQ59d69by2JX2CQhVNCAvhb8xc80HLvRYzHIn5A+Jvy/FpwIcgzcDCI X-Received: by 2002:a17:907:7fa0:b0:782:948b:e212 with SMTP id qk32-20020a1709077fa000b00782948be212mr20696728ejc.231.1664309078321; Tue, 27 Sep 2022 13:04:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664309078; cv=none; d=google.com; s=arc-20160816; b=tTUQXfd8RJdmv4F2bXU7iWp0pOh79IMFuTMaTCLD9pVAOAD+9e4tEk9d6iNFGYICtT q12/Q17jFBTRWxYvwu4F78ExgqZPx59rDNm1djyQClftEYewS0DFt9Qip0pRujUgqb16 QdluQU5s03dI0oYNmNkkD6jGf1oKj3AhzyHwLFa3caIsku57C3MRqQtEbdxg3dLrdLiu Gls0EZu1ldPFdl1W9H1e5ElvTwtq8p6Cm47tOEYH7dvAdebsKocwnLYyrV7Lddf5jjM/ FSzLdWYw/Gdn6UYxTjVZz5wlYLcpLuZDALXZZDv+S1sEIWy8xvwC189KG/4YWHXy3DXf AOGw== 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=HyeA28eMfamp25p9SqAhTVAflzJRtMtkJ+2fW3AUDQ0=; b=0mXn8LcitsIgpv2zKhm75ljQlZiwixrLT1CQtJl/GbTIDc8KjODnKa2zbi6J11shHT WTrtgB7D78jW7OCq5aslVLSnKl5c7D2idzL8HuPmbtZ5hPtQw6MtI9yglf010NqEF+5W S3LqDFYraUt+F3V4zWisEkPsrwRYiGcbLURm2tuH+OYYKS3P/rcH6l47hJtFYjX7ijYw reZFjJfMZQhHL7sL0NQuCicjEn2L4ojbvX+NWJJxm05kNanTmeYcAXEAXgATsQecTtFI 2z2FeF5PqQFs6jaCKt01spUWBTUEFrk/EbSG0WvOCZRbMajTUKRv9bm6mYP3Wbv1j/sw XKXg== 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 hq28-20020a1709073f1c00b0078307781936si2501275ejc.359.2022.09.27.13.04.36; Tue, 27 Sep 2022 13:04: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 2FF6068BAE8; Tue, 27 Sep 2022 23:04:34 +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 31B2168BA58 for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id D2D63C0012 for ; Tue, 27 Sep 2022 23:04:27 +0300 (EEST) From: remi@remlab.net To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Sep 2022 23:04:21 +0300 Message-Id: <20220927200427.11811-1-remi@remlab.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <2846208.e9J7NaK4W3@basile.remlab.net> References: <2846208.e9J7NaK4W3@basile.remlab.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/7] lavu/riscv: helper to read the vector length 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: MprgUgHEhqa6 From: Rémi Denis-Courmont --- libavutil/riscv/cpu.h | 45 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 libavutil/riscv/cpu.h diff --git a/libavutil/riscv/cpu.h b/libavutil/riscv/cpu.h new file mode 100644 index 0000000000..56035f8556 --- /dev/null +++ b/libavutil/riscv/cpu.h @@ -0,0 +1,45 @@ +/* + * Copyright © 2022 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 + */ + +#ifndef AVUTIL_RISCV_CPU_H +#define AVUTIL_RISCV_CPU_H + +#include "config.h" +#include +#include "libavutil/cpu.h" + +#if HAVE_RVV +/** + * Returns the vector size in bytes (always a power of two and at least 4). + * This is undefined behaviour if vectors are not implemented. + */ +static inline size_t ff_get_rv_vlenb(void) +{ + size_t vlenb; + + __asm__ ( + ".option push\n" + ".option arch, +v\n" + " csrr %0, vlenb\n" + ".option pop\n" : "=r" (vlenb)); + return vlenb; +} +#endif +#endif From patchwork Tue Sep 27 20:04:22 2022 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: 38385 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp776261pzh; Tue, 27 Sep 2022 13:04:46 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4m+IYy5h5igiQbvlVdw3gQw8fSSJM1l6StwRxoAWTDKG6evm2n/kwVElOC71oZtXXCJAye X-Received: by 2002:a05:6402:2756:b0:443:4a6d:f05a with SMTP id z22-20020a056402275600b004434a6df05amr29983166edd.396.1664309085966; Tue, 27 Sep 2022 13:04:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664309085; cv=none; d=google.com; s=arc-20160816; b=SUQAbloItAvds3Q9E2MGQrR+3th9Uice9xUqYKG3ga4fLtoqY+oGBErQegewBR8Wk7 1xPwBD03dDxm7izNy9Ms3zggugaKXGBh0WMRjyv/CPdaKbZeBOpHXGMUvdY6cIFfeM3u j+LnE6m0fpnmpNE/43QhGf8SOfmAuPR1+7opVb8nBBhF3kyRkzhdWFhjgIFFdervduVG 1MZ26chY6pxUUjEErGXapY6du/MJzZaYNmPqWgZtluxjtjWVzeHnGZZBVfxN4ZG7T+WT Ithd9V3wpRIzvJG8Fr5jZM2exPCTzpLRRwX42XT7aJvkPEvEhz0Hoz83tzACHatuebkn 7vWw== 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=uzksyrqIG2ie7U9NZzCACn47amOh4uR4xQhjmsiZAUo=; b=SUMPdy0f+q+EKR96/3BqAiIFVL+ham7BWs6V5czHGvS19KJ9v5hxeCcObZ5xYh4lKm SXSL/QFr+SsWfnztyRsZb0mXCYyYzCSD110U3ZO/n9Vp2O0Ha/yMwq7RlbFIXd+GOfur i1MMuaegp1oOu7BpwBIBYlxPHmAWw7MeQ/fMakzzVd45LKiwCiGTpo86dJwxxUcT+/es eVkXqmLrnJEd3be+c7C0FkryEugojVa8hpZ3nEH1bn46aCQ6Dk0F+w+RRWN48mx8Abii RnY/5p1QM752RHMAJVJk8mpbooq5QQ7N42uGg8rMyPVCjyFK44Ttkpp086Z9fu3raNdF iz0Q== 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 nb24-20020a1709071c9800b007809c50fd78si2378194ejc.262.2022.09.27.13.04.45; Tue, 27 Sep 2022 13:04: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 4BAAA68BB05; Tue, 27 Sep 2022 23:04:35 +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 5D73668BA5B for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id 11C0EC0016 for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) From: remi@remlab.net To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Sep 2022 23:04:22 +0300 Message-Id: <20220927200427.11811-2-remi@remlab.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <2846208.e9J7NaK4W3@basile.remlab.net> References: <2846208.e9J7NaK4W3@basile.remlab.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/7] lavc/idctdsp: RISC-V V put_pixels_clamped function 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: ELLKilI/zWVu From: Rémi Denis-Courmont --- libavcodec/idctdsp.c | 2 ++ libavcodec/idctdsp.h | 2 ++ libavcodec/riscv/Makefile | 2 ++ libavcodec/riscv/idctdsp_init.c | 41 +++++++++++++++++++++++++++++++ libavcodec/riscv/idctdsp_rvv.S | 43 +++++++++++++++++++++++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 libavcodec/riscv/idctdsp_init.c create mode 100644 libavcodec/riscv/idctdsp_rvv.S diff --git a/libavcodec/idctdsp.c b/libavcodec/idctdsp.c index 9035003b72..4ee9c3aa74 100644 --- a/libavcodec/idctdsp.c +++ b/libavcodec/idctdsp.c @@ -312,6 +312,8 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) ff_idctdsp_init_arm(c, avctx, high_bit_depth); #elif ARCH_PPC ff_idctdsp_init_ppc(c, avctx, high_bit_depth); +#elif ARCH_RISCV + ff_idctdsp_init_riscv(c, avctx, high_bit_depth); #elif ARCH_X86 ff_idctdsp_init_x86(c, avctx, high_bit_depth); #elif ARCH_MIPS diff --git a/libavcodec/idctdsp.h b/libavcodec/idctdsp.h index e8f20acaf2..2bd9820f72 100644 --- a/libavcodec/idctdsp.h +++ b/libavcodec/idctdsp.h @@ -114,6 +114,8 @@ void ff_idctdsp_init_arm(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth); void ff_idctdsp_init_ppc(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth); +void ff_idctdsp_init_riscv(IDCTDSPContext *c, AVCodecContext *avctx, + unsigned high_bit_depth); void ff_idctdsp_init_x86(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth); void ff_idctdsp_init_mips(IDCTDSPContext *c, AVCodecContext *avctx, diff --git a/libavcodec/riscv/Makefile b/libavcodec/riscv/Makefile index 829a1823d2..96925afdab 100644 --- a/libavcodec/riscv/Makefile +++ b/libavcodec/riscv/Makefile @@ -5,6 +5,8 @@ OBJS-$(CONFIG_AUDIODSP) += riscv/audiodsp_init.o \ RVV-OBJS-$(CONFIG_AUDIODSP) += riscv/audiodsp_rvv.o OBJS-$(CONFIG_FMTCONVERT) += riscv/fmtconvert_init.o RVV-OBJS-$(CONFIG_FMTCONVERT) += riscv/fmtconvert_rvv.o +OBJS-$(CONFIG_IDCTDSP) += riscv/idctdsp_init.o +RVV-OBJS-$(CONFIG_IDCTDSP) += riscv/idctdsp_rvv.o OBJS-$(CONFIG_PIXBLOCKDSP) += riscv/pixblockdsp_init.o \ riscv/pixblockdsp_rvi.o OBJS-$(CONFIG_VORBIS_DECODER) += riscv/vorbisdsp_init.o diff --git a/libavcodec/riscv/idctdsp_init.c b/libavcodec/riscv/idctdsp_init.c new file mode 100644 index 0000000000..1a6add80da --- /dev/null +++ b/libavcodec/riscv/idctdsp_init.c @@ -0,0 +1,41 @@ +/* + * Copyright © 2022 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 + +#include "libavutil/attributes.h" +#include "libavutil/cpu.h" +#include "libavutil/riscv/cpu.h" +#include "libavcodec/avcodec.h" +#include "libavcodec/idctdsp.h" + +void ff_put_pixels_clamped_rvv(const int16_t *block, uint8_t *pixels, + ptrdiff_t stride); + +av_cold void ff_idctdsp_init_riscv(IDCTDSPContext *c, AVCodecContext *avctx, + unsigned high_bit_depth) +{ +#if HAVE_RVV + int flags = av_get_cpu_flags(); + + if ((flags & AV_CPU_FLAG_RVV_I32) && ff_get_rv_vlenb() >= 16) + c->put_pixels_clamped = ff_put_pixels_clamped_rvv; +#endif +} diff --git a/libavcodec/riscv/idctdsp_rvv.S b/libavcodec/riscv/idctdsp_rvv.S new file mode 100644 index 0000000000..a59edd0a83 --- /dev/null +++ b/libavcodec/riscv/idctdsp_rvv.S @@ -0,0 +1,43 @@ +/* + * Copyright © 2022 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_put_pixels_clamped_rvv, zve32x + vsetivli zero, 8, e16, m1, ta, ma + vlseg8e16.v v24, (a0) + /* RVV only has signed-signed and unsigned-unsigned clipping. + * We need two steps for signed-to-unsigned clipping. */ + vsetvli t0, zero, e16, m8, ta, ma + vmax.vx v24, v24, zero + + vsetivli zero, 8, e8, mf2, ta, ma + vnclipu.wi v16, v24, 0 + vnclipu.wi v17, v25, 0 + vnclipu.wi v18, v26, 0 + vnclipu.wi v19, v27, 0 + vnclipu.wi v20, v28, 0 + vnclipu.wi v21, v29, 0 + vnclipu.wi v22, v30, 0 + vnclipu.wi v23, v31, 0 + vssseg8e8.v v16, (a1), a2 + ret +endfunc From patchwork Tue Sep 27 20:04:23 2022 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: 38386 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp776387pzh; Tue, 27 Sep 2022 13:04:56 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7C7KfOcWFcMJNnDOmf4VMtW0JQuIflmWJEpFsM1OblYTbSdhVN4iwXCWqkqZOievjnoPZ4 X-Received: by 2002:a05:6402:1298:b0:457:c38a:2f10 with SMTP id w24-20020a056402129800b00457c38a2f10mr3822938edv.264.1664309096278; Tue, 27 Sep 2022 13:04:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664309096; cv=none; d=google.com; s=arc-20160816; b=TW/n17HCSViAqJujnBArqY8wKdC/oDnLawrV/7AX1dr0nO6lRh6Cn7Ml5YkDInNiEv cLtBjfhWoqZdCebRWmsbkPBTkCp7X0zBtc2zm/BE32hEhHEU3MiD0bO0VoIT0GqhrnhA mUNpyEnZSlkaHk5Dw374XlU1bL5Sgp60rthW2t8mB/r1BNYB1wjTbUzOSywN3jLrks4Q lJbb6M0i2e7SPG2OYuKfpEWJwNH0qOKGY2rhws3uEsmD0htTtncpUx79SZrZRRLAFsYI lqvK8dhJeYshTAEah96GViMFNWzq361BqS4emZFIGd7W3G3rXMTKCjrJn4mAK/8wUpOk uPpA== 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=2XFu80M1T8gj9tjp+YVAb24TRjJ8sC8Dhc887WURi5Y=; b=TI/HsJxiTli5DB5JFxb0PZGdDT0+pTCY1VMEGBiNcMifQorTxjs4hHHZtD9cA+xO8S Gy6qRm0gDdLwTOVQ/9wPZVe6ypbX8s0EXRVMOxMAnQH34Rn3UqO8IE0nlqmKL+i0NEdU y3JbL9zu0Oho4NLJcAaRmuytH9KjlaJRPo3RKBqwP8zp50vplHDXSC8gdsXeKsJR3zQb PWWhSOMC9byZxBH7JxrqcgJOxlQZR04NTIBmZCE1Y5+0zUNwE9h3s808J2/4oFu36h3A liM/aIidYPYTNAi8xS+nZ5v1IDH2DFkqWSoZl9/KA7p53u+BB+IryKYuRF4Gnu8F7OpN EyFg== 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 hw9-20020a170907a0c900b007815840270csi2482142ejc.118.2022.09.27.13.04.54; Tue, 27 Sep 2022 13:04:56 -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 4681768BA6F; Tue, 27 Sep 2022 23:04:36 +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 85E9268BA5B for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id 44F97C00AF for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) From: remi@remlab.net To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Sep 2022 23:04:23 +0300 Message-Id: <20220927200427.11811-3-remi@remlab.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <2846208.e9J7NaK4W3@basile.remlab.net> References: <2846208.e9J7NaK4W3@basile.remlab.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/7] lavc/idctdsp: RISC-V V add_pixels_clamped function 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: DqzXaOrHirX6 From: Rémi Denis-Courmont --- libavcodec/riscv/idctdsp_init.c | 6 +++++- libavcodec/riscv/idctdsp_rvv.S | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libavcodec/riscv/idctdsp_init.c b/libavcodec/riscv/idctdsp_init.c index 1a6add80da..58b8a6c97a 100644 --- a/libavcodec/riscv/idctdsp_init.c +++ b/libavcodec/riscv/idctdsp_init.c @@ -28,6 +28,8 @@ void ff_put_pixels_clamped_rvv(const int16_t *block, uint8_t *pixels, ptrdiff_t stride); +void ff_add_pixels_clamped_rvv(const int16_t *block, uint8_t *pixels, + ptrdiff_t stride); av_cold void ff_idctdsp_init_riscv(IDCTDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth) @@ -35,7 +37,9 @@ av_cold void ff_idctdsp_init_riscv(IDCTDSPContext *c, AVCodecContext *avctx, #if HAVE_RVV int flags = av_get_cpu_flags(); - if ((flags & AV_CPU_FLAG_RVV_I32) && ff_get_rv_vlenb() >= 16) + if ((flags & AV_CPU_FLAG_RVV_I32) && ff_get_rv_vlenb() >= 16) { c->put_pixels_clamped = ff_put_pixels_clamped_rvv; + c->add_pixels_clamped = ff_add_pixels_clamped_rvv; + } #endif } diff --git a/libavcodec/riscv/idctdsp_rvv.S b/libavcodec/riscv/idctdsp_rvv.S index a59edd0a83..e6cb53bd6f 100644 --- a/libavcodec/riscv/idctdsp_rvv.S +++ b/libavcodec/riscv/idctdsp_rvv.S @@ -24,6 +24,7 @@ func ff_put_pixels_clamped_rvv, zve32x vsetivli zero, 8, e16, m1, ta, ma vlseg8e16.v v24, (a0) +1: /* RVV only has signed-signed and unsigned-unsigned clipping. * We need two steps for signed-to-unsigned clipping. */ vsetvli t0, zero, e16, m8, ta, ma @@ -41,3 +42,18 @@ func ff_put_pixels_clamped_rvv, zve32x vssseg8e8.v v16, (a1), a2 ret endfunc + +func ff_add_pixels_clamped_rvv, zve32x + vsetivli zero, 8, e8, mf2, ta, ma + vlseg8e16.v v24, (a0) + vlsseg8e8.v v16, (a1), a2 + vwaddu.wv v24, v24, v16 + vwaddu.wv v25, v25, v17 + vwaddu.wv v26, v26, v18 + vwaddu.wv v27, v27, v19 + vwaddu.wv v28, v28, v20 + vwaddu.wv v29, v29, v21 + vwaddu.wv v30, v30, v22 + vwaddu.wv v31, v31, v23 + j 1b +endfunc From patchwork Tue Sep 27 20:04:24 2022 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: 38387 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp776478pzh; Tue, 27 Sep 2022 13:05:04 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5toBWzEQb2yfu1ARopuZaoayFr3gUSs7KgghZ2rkHIoq7MK+cWstV9LzxXdJNd/GuN6OEe X-Received: by 2002:a17:907:7f86:b0:787:7693:7947 with SMTP id qk6-20020a1709077f8600b0078776937947mr2079907ejc.621.1664309104464; Tue, 27 Sep 2022 13:05:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664309104; cv=none; d=google.com; s=arc-20160816; b=CfCVzuGKeNFgK0PpXvN1Rp5VWnvI6X5WW8kyBWun1FQjMGPCaiXiMYFcd8AO/JnGpA ybiZNjV1bV5brzpA2mDdKxQDP07C5IhEGEl+BwSz1YQHbneR1qhmcbc6FFkekcy7J0uZ t8tD+xqj7E+d92VedS7BBhwbq38wVLJvR20Ieh/afqKeK4rRy0WfIiTUI2a74Vt5Zgzo EQNlrjQYrpYvYJfq46ZC2wrfF/Z7qCWC5V8DeSCNMehZYWWm6x40JfaspA0zBwLMdr9T Nj/DJ1+5yMmZ3dOs8ywZukJvgeDyKi2JHe/ds/W88dPWitGg91W0WLcsBT37u72Qr4Dv rGXA== 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=iMfoKJZ1LuusXkgLKFJPaaWkPFuawDnMeDKllkKBHZU=; b=e+Ub2p7nluArshWJyg2PvYQYpdVsr5M/ptPQRe5GtCATl75oUQ4dGuFgPKexYt62gk rhzlvtI39/7/YpkhCk98mt2qDp4NUzIgn0dOSCCfGJCn+3kH9dwG1BLPo4E6gblXtVFu kvyQJX72AOIZ6SyVQfAUMzVWoORcKfCHYvG52OqSXcIwxasj140O6lANhq4hbOCf6eWt UZuaaJ5halqaStaNpffMT5D0QB8VRALoiWxQx2H8QcuDJD/TAp3R7VkptEuKVUajYIGg 00mkZCGxbsVI7Ek6C2FXbnJP0lnaZilGOLzhZv6FeoU9DxwzGxZe0SFlfiwII/KN5gwS NnCw== 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 g10-20020a170906520a00b007418a1e877dsi2054519ejm.580.2022.09.27.13.05.04; Tue, 27 Sep 2022 13:05:04 -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 540F868BB0F; Tue, 27 Sep 2022 23:04:38 +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 AE7D868BA5B for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id 6E216C00B0 for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) From: remi@remlab.net To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Sep 2022 23:04:24 +0300 Message-Id: <20220927200427.11811-4-remi@remlab.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <2846208.e9J7NaK4W3@basile.remlab.net> References: <2846208.e9J7NaK4W3@basile.remlab.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/7] lavc/idctdsp: RISC-V V put_signed_pixels_clamped function 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: VK8jFb6LUU/P From: Rémi Denis-Courmont --- libavcodec/riscv/idctdsp_init.c | 3 +++ libavcodec/riscv/idctdsp_rvv.S | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/libavcodec/riscv/idctdsp_init.c b/libavcodec/riscv/idctdsp_init.c index 58b8a6c97a..e6e616a555 100644 --- a/libavcodec/riscv/idctdsp_init.c +++ b/libavcodec/riscv/idctdsp_init.c @@ -28,6 +28,8 @@ void ff_put_pixels_clamped_rvv(const int16_t *block, uint8_t *pixels, ptrdiff_t stride); +void ff_put_signed_pixels_clamped_rvv(const int16_t *block, uint8_t *pixels, + ptrdiff_t stride); void ff_add_pixels_clamped_rvv(const int16_t *block, uint8_t *pixels, ptrdiff_t stride); @@ -39,6 +41,7 @@ av_cold void ff_idctdsp_init_riscv(IDCTDSPContext *c, AVCodecContext *avctx, if ((flags & AV_CPU_FLAG_RVV_I32) && ff_get_rv_vlenb() >= 16) { c->put_pixels_clamped = ff_put_pixels_clamped_rvv; + c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_rvv; c->add_pixels_clamped = ff_add_pixels_clamped_rvv; } #endif diff --git a/libavcodec/riscv/idctdsp_rvv.S b/libavcodec/riscv/idctdsp_rvv.S index e6cb53bd6f..e0077cc1b4 100644 --- a/libavcodec/riscv/idctdsp_rvv.S +++ b/libavcodec/riscv/idctdsp_rvv.S @@ -43,6 +43,27 @@ func ff_put_pixels_clamped_rvv, zve32x ret endfunc +func ff_put_signed_pixels_clamped_rvv, zve32x + vsetivli zero, 8, e16, m1, ta, ma + vlseg8e16.v v24, (a0) + + li t1, 128 + vsetivli zero, 8, e8, mf2, ta, ma + vnclip.wi v16, v24, 0 + vnclip.wi v17, v25, 0 + vnclip.wi v18, v26, 0 + vnclip.wi v19, v27, 0 + vnclip.wi v20, v28, 0 + vnclip.wi v21, v29, 0 + vnclip.wi v22, v30, 0 + vnclip.wi v23, v31, 0 + vsetvli t0, zero, e8, m8, ta, ma + vadd.vx v16, v16, t1 + vsetivli zero, 8, e8, mf2, ta, ma + vssseg8e8.v v16, (a1), a2 + ret +endfunc + func ff_add_pixels_clamped_rvv, zve32x vsetivli zero, 8, e8, mf2, ta, ma vlseg8e16.v v24, (a0) From patchwork Tue Sep 27 20:04:25 2022 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: 38388 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp776569pzh; Tue, 27 Sep 2022 13:05:14 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4/MgK8kBf7zjZCds9L5U/FoZrmiNlV6lxcDR6hdrwRESt0TRus2Dbyt5iiVD3jOyZ+qkUo X-Received: by 2002:a17:907:74e:b0:74f:83d4:cf58 with SMTP id xc14-20020a170907074e00b0074f83d4cf58mr24702557ejb.178.1664309113924; Tue, 27 Sep 2022 13:05:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664309113; cv=none; d=google.com; s=arc-20160816; b=tNFXde3yMuSr6Q7bATZMOmOEeHT/MHyFZwZpsODTOG29ZMs81WhYqZ+TxbaEW0c/6n N4plcjqyurEa4qhTmw+D3d+BT3U81hDZEYQ8Q1OoWD2/CAAz8GH3NU/VDe7Oy6ObMEux HdEY9gSNB74VeipN/NJgrCBaRxFIn/D2zOrPcLDWkabJYK2UqJNPc5Uic9eOLoLDav3b W2sYTeC1dYW9iHKkyLwgIcuUu0TbnfGOBWG5ftOWzj5wlKcG+XIxvkzaXSv1iY58py9I SEiUzNlAzhHuvb0V5upzxbI6VPf896Tr1tj8Mr4mkpqIWIdbMZNw4pP5jAPoGOHyzXXd nPdQ== 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=mSA7shDopi6fOspe5JThkd8KjJ+0uMtQKhqxb6Oms6w=; b=yT28sNmjEvS76tRvRO4B3gw+Hm1gaErRjatbDZxskDarYGMVWteKifuU3Mj/XAfQ7N OO+PhaDxU//leVr8GbzRY6J5HebOs8qQ4EuChyK9imtVa+blpT+D+CPeUdv98euO0jjy bmwksS66ci2QSAfj9Zqg3kQTSg0xITcBRwyMgbpmyPNS/q1tkURUKa+34E4km0yfhh/w CEm++EKFoijRyAdMtbm4Gcm4yg+bFpmxNwbpaGYqiPtroDQKs+rjFMgvi6R5TZM5p5lV atyY+0rCja4h1ylU/CrxqdkICtBgCWzRlm8OJ0fqU1whRyc/DOdDeeQGRfueRv+5uWtk yL4g== 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 oz36-20020a1709077da400b0073dced7204bsi2126551ejc.767.2022.09.27.13.05.13; Tue, 27 Sep 2022 13:05:13 -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 2DF1168BABD; Tue, 27 Sep 2022 23:04:40 +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 E3F0C68BAE8 for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id 970AAC00B1 for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) From: remi@remlab.net To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Sep 2022 23:04:25 +0300 Message-Id: <20220927200427.11811-5-remi@remlab.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <2846208.e9J7NaK4W3@basile.remlab.net> References: <2846208.e9J7NaK4W3@basile.remlab.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/7] lavc/pixblockdsp: RISC-V V 8-bit get_pixels & get_pixels_unaligned 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: njHN7V7l5qPW From: Rémi Denis-Courmont --- libavcodec/riscv/Makefile | 1 + libavcodec/riscv/pixblockdsp_init.c | 12 ++++++++++ libavcodec/riscv/pixblockdsp_rvv.S | 37 +++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 libavcodec/riscv/pixblockdsp_rvv.S diff --git a/libavcodec/riscv/Makefile b/libavcodec/riscv/Makefile index 96925afdab..0fb2c81c75 100644 --- a/libavcodec/riscv/Makefile +++ b/libavcodec/riscv/Makefile @@ -9,5 +9,6 @@ OBJS-$(CONFIG_IDCTDSP) += riscv/idctdsp_init.o RVV-OBJS-$(CONFIG_IDCTDSP) += riscv/idctdsp_rvv.o OBJS-$(CONFIG_PIXBLOCKDSP) += riscv/pixblockdsp_init.o \ riscv/pixblockdsp_rvi.o +RVV-OBJS-$(CONFIG_PIXBLOCKDSP) += riscv/pixblockdsp_rvv.o OBJS-$(CONFIG_VORBIS_DECODER) += riscv/vorbisdsp_init.o RVV-OBJS-$(CONFIG_VORBIS_DECODER) += riscv/vorbisdsp_rvv.o diff --git a/libavcodec/riscv/pixblockdsp_init.c b/libavcodec/riscv/pixblockdsp_init.c index 04bf52649f..69dbd18918 100644 --- a/libavcodec/riscv/pixblockdsp_init.c +++ b/libavcodec/riscv/pixblockdsp_init.c @@ -20,8 +20,10 @@ #include +#include "config.h" #include "libavutil/attributes.h" #include "libavutil/cpu.h" +#include "libavutil/riscv/cpu.h" #include "libavcodec/avcodec.h" #include "libavcodec/pixblockdsp.h" @@ -30,6 +32,9 @@ void ff_get_pixels_8_rvi(int16_t *block, const uint8_t *pixels, void ff_get_pixels_16_rvi(int16_t *block, const uint8_t *pixels, ptrdiff_t stride); +void ff_get_pixels_8_rvv(int16_t *block, const uint8_t *pixels, + ptrdiff_t stride); + av_cold void ff_pixblockdsp_init_riscv(PixblockDSPContext *c, AVCodecContext *avctx, unsigned high_bit_depth) @@ -42,4 +47,11 @@ av_cold void ff_pixblockdsp_init_riscv(PixblockDSPContext *c, else c->get_pixels = ff_get_pixels_8_rvi; } + +#if HAVE_RVV + if ((cpu_flags & AV_CPU_FLAG_RVV_I32) && ff_get_rv_vlenb() >= 16) { + if (!high_bit_depth) + c->get_pixels_unaligned = c->get_pixels = ff_get_pixels_8_rvv; + } +#endif } diff --git a/libavcodec/riscv/pixblockdsp_rvv.S b/libavcodec/riscv/pixblockdsp_rvv.S new file mode 100644 index 0000000000..b7c74b88b5 --- /dev/null +++ b/libavcodec/riscv/pixblockdsp_rvv.S @@ -0,0 +1,37 @@ +/* + * Copyright © 2022 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_get_pixels_8_rvv, zve32x + vsetivli zero, 8, e8, mf2, ta, ma + vlsseg8e8.v v16, (a1), a2 + vwcvtu.x.x.v v8, v16 + vwcvtu.x.x.v v9, v17 + vwcvtu.x.x.v v10, v18 + vwcvtu.x.x.v v11, v19 + vwcvtu.x.x.v v12, v20 + vwcvtu.x.x.v v13, v21 + vwcvtu.x.x.v v14, v22 + vwcvtu.x.x.v v15, v23 + vsseg8e16.v v8, (a0) + ret +endfunc From patchwork Tue Sep 27 20:04:26 2022 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: 38390 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp776734pzh; Tue, 27 Sep 2022 13:05:32 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7O7FT+kqXoss+j2SvNhKoC81zlL9H2vB7G6JQrziX5xkZ42XceGmj0NAH+fOBxXEWVYH3o X-Received: by 2002:a17:907:6eaa:b0:783:84e0:3823 with SMTP id sh42-20020a1709076eaa00b0078384e03823mr10336715ejc.601.1664309132681; Tue, 27 Sep 2022 13:05:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664309132; cv=none; d=google.com; s=arc-20160816; b=imWb+Fs6rTRPAcvyXDbB6kjlcUH30cioCWrSLZzh7d+YUQtRBq5Qzh0JTnecQAGPUg 6Uxm5/4wliiy7+Gpn1wMmjGFDyJgZidZEHHIdhNTlUeeE7xFywwdjbPG487W9lCj+SwR oJBQ6L6N1IkEQqYn9+KzheIvplC1mUiQLRNZi6isvmWPPPOPifEvU8ebnAEtiF9wMzCt nCeR6Dr/6/G3fPwrfnUNKYZH4LLbtRmw2vOSh2FS6uaAiVA+urWkjNSuZgKdBa4tdyL0 79p/WtuE8oTg8KUQKiS/flmProE4y+sJvBGlbQAfqcjfjsMsy/5vly/luUSL4S85ZZ2T +baQ== 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=1w4rPw75Vum14snVa7i0LyQzlxmMzxd/Ut5qyiYrg2s=; b=mAAsok9y+FlcIY+M4rZG65yx8EJgLhl2rGOUIT7ggQFBe5svbm+HOsJSv1Fhe6WjHp z9tKTfivkrC0rR5xN9eflu9zK1omJAwDE4ZtCEp8rAasYleR/g9bzGiQIaujHLGnlj0Z wkJcQ2cWX1qLG9ZaukKAg3BPqV0wR3yLcpKjMFcNqAWOAuErFFsRDJdLooI+/IJnyg8d MEFltbuHS0lhS3wipKBdkb1akdYtd4Ie5jYk0TbsfZQZhYBYxT/s4AIgNRJMjIiHTnf7 rNByWs5GstIa+NLyh8pvgyli+tr0TUz/I4ko5RNnLKRnBCHTJ9QOY1Ir+3RpSZ0V5HE8 ObSA== 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 hd16-20020a170907969000b0077fad1e7d16si2786447ejc.371.2022.09.27.13.05.32; Tue, 27 Sep 2022 13:05:32 -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 084F668BB2A; Tue, 27 Sep 2022 23:04:43 +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 7A4B068BB14 for ; Tue, 27 Sep 2022 23:04:33 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id C9D23C00B2 for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) From: remi@remlab.net To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Sep 2022 23:04:26 +0300 Message-Id: <20220927200427.11811-6-remi@remlab.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <2846208.e9J7NaK4W3@basile.remlab.net> References: <2846208.e9J7NaK4W3@basile.remlab.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/7] lavc/pixblockdsp: RISC-V V 16-bit get_pixels & get_pixels_unaligned 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: /NqnResJzEr1 From: Rémi Denis-Courmont --- libavcodec/riscv/pixblockdsp_init.c | 6 +++++- libavcodec/riscv/pixblockdsp_rvv.S | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libavcodec/riscv/pixblockdsp_init.c b/libavcodec/riscv/pixblockdsp_init.c index 69dbd18918..bbda381c12 100644 --- a/libavcodec/riscv/pixblockdsp_init.c +++ b/libavcodec/riscv/pixblockdsp_init.c @@ -34,6 +34,8 @@ void ff_get_pixels_16_rvi(int16_t *block, const uint8_t *pixels, void ff_get_pixels_8_rvv(int16_t *block, const uint8_t *pixels, ptrdiff_t stride); +void ff_get_pixels_16_rvv(int16_t *block, const uint8_t *pixels, + ptrdiff_t stride); av_cold void ff_pixblockdsp_init_riscv(PixblockDSPContext *c, AVCodecContext *avctx, @@ -50,7 +52,9 @@ av_cold void ff_pixblockdsp_init_riscv(PixblockDSPContext *c, #if HAVE_RVV if ((cpu_flags & AV_CPU_FLAG_RVV_I32) && ff_get_rv_vlenb() >= 16) { - if (!high_bit_depth) + if (high_bit_depth) + c->get_pixels_unaligned = c->get_pixels = ff_get_pixels_16_rvv; + else c->get_pixels_unaligned = c->get_pixels = ff_get_pixels_8_rvv; } #endif diff --git a/libavcodec/riscv/pixblockdsp_rvv.S b/libavcodec/riscv/pixblockdsp_rvv.S index b7c74b88b5..5bf83ebe5e 100644 --- a/libavcodec/riscv/pixblockdsp_rvv.S +++ b/libavcodec/riscv/pixblockdsp_rvv.S @@ -35,3 +35,10 @@ func ff_get_pixels_8_rvv, zve32x vsseg8e16.v v8, (a0) ret endfunc + +func ff_get_pixels_16_rvv, zve32x + vsetivli zero, 8, e16, m1, ta, ma + vlsseg8e16.v v0, (a1), a2 + vsseg8e16.v v0, (a0) + ret +endfunc From patchwork Tue Sep 27 20:04:27 2022 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: 38389 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp776646pzh; Tue, 27 Sep 2022 13:05:24 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4boLcjyFWXI/DPsVuRXoQOZZhNOPjys7lNBoCnPXoclXscPZNGm37XmIqd/OKP2ELJ8tBy X-Received: by 2002:a05:6402:1053:b0:455:27b7:f1 with SMTP id e19-20020a056402105300b0045527b700f1mr27578680edu.370.1664309123809; Tue, 27 Sep 2022 13:05:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664309123; cv=none; d=google.com; s=arc-20160816; b=og+amU+rQZXbzV+9mFwnMkNLbuWT4Ybs3zb23RsWMpzJiwEWT/o8gT/Jwuvv46sjTQ bU6OgJ7M4V1kCONkjQvNO3e1gjG/myW6+X2op1m/D2zr4l0C223fWlgpn/fZVvW0cbrz 3dzP+hd8Y6afeLlKmDmCOnLJmNI6LSPGap5HwQTrUqDvVjXWUd9IjK5oem982LVIwmY0 /Y4tJpCqRPEb90H+upQryDciRWCTGENpJpMscmod/WO2hqPGgF7rctxlJ50m0x61Xotr aW8D4EQVDysi0X9N3+bkfhWRYs6aJNeHcqh3Lk56NVQj6TtjyaW4v54Z1NbpUr7iaBy5 hFTg== 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=f/QpOJZdPm3/p857YEHnFwFkH7DwdAY5Mj77wPkGtjo=; b=Ld5YrHPmCb0+ddhUhttFYNBw/ibtUMMaJ4EPYFm0tNIA++xIqbxZH2p2qPQd+GilcQ Pvy0yUBYGB2sVOANuDKKCGM2qCH1NhvBwsf75xz8bvEVcU+WHEvEPcbTwoR8SXIpWaJg IYwGp5edPMX0zTyro21laYFf1BLx5s7pxCuJUZmNzt5FrZA4ARp73HHOvq0Wj0+JCgsv uvscPjrwVU3pKuXHoNwUDYqluAT+YAzuMtQCQ9bA2PQ/NyYY6zatKv0e8TzlfladINeO C59FrdYe9TBuOwweew+zt5RN0kfDK72uohcnXP1FMl2Rul8/dnKdYSs0IttcBcnEoHKP yu0Q== 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 ho44-20020a1709070eac00b00781b5f92182si2772162ejc.38.2022.09.27.13.05.23; Tue, 27 Sep 2022 13:05:23 -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 1C3E168BAB7; Tue, 27 Sep 2022 23:04:42 +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 7C5D968BB15 for ; Tue, 27 Sep 2022 23:04:33 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id F29B9C00B3 for ; Tue, 27 Sep 2022 23:04:28 +0300 (EEST) From: remi@remlab.net To: ffmpeg-devel@ffmpeg.org Date: Tue, 27 Sep 2022 23:04:27 +0300 Message-Id: <20220927200427.11811-7-remi@remlab.net> X-Mailer: git-send-email 2.37.2 In-Reply-To: <2846208.e9J7NaK4W3@basile.remlab.net> References: <2846208.e9J7NaK4W3@basile.remlab.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 7/7] lavc/pixblockdsp: RISC-V diff_pixels & diff_pixels_unaligned 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: SwMtLz2bs5Fm From: Rémi Denis-Courmont --- libavcodec/riscv/pixblockdsp_init.c | 4 ++++ libavcodec/riscv/pixblockdsp_rvv.S | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/libavcodec/riscv/pixblockdsp_init.c b/libavcodec/riscv/pixblockdsp_init.c index bbda381c12..aa39a8a665 100644 --- a/libavcodec/riscv/pixblockdsp_init.c +++ b/libavcodec/riscv/pixblockdsp_init.c @@ -36,6 +36,8 @@ void ff_get_pixels_8_rvv(int16_t *block, const uint8_t *pixels, ptrdiff_t stride); void ff_get_pixels_16_rvv(int16_t *block, const uint8_t *pixels, ptrdiff_t stride); +void ff_diff_pixels_rvv(int16_t *block, const uint8_t *s1, const uint8_t *s2, + ptrdiff_t stride); av_cold void ff_pixblockdsp_init_riscv(PixblockDSPContext *c, AVCodecContext *avctx, @@ -56,6 +58,8 @@ av_cold void ff_pixblockdsp_init_riscv(PixblockDSPContext *c, c->get_pixels_unaligned = c->get_pixels = ff_get_pixels_16_rvv; else c->get_pixels_unaligned = c->get_pixels = ff_get_pixels_8_rvv; + + c->diff_pixels_unaligned = c->diff_pixels = ff_diff_pixels_rvv; } #endif } diff --git a/libavcodec/riscv/pixblockdsp_rvv.S b/libavcodec/riscv/pixblockdsp_rvv.S index 5bf83ebe5e..62cdfe22b1 100644 --- a/libavcodec/riscv/pixblockdsp_rvv.S +++ b/libavcodec/riscv/pixblockdsp_rvv.S @@ -42,3 +42,19 @@ func ff_get_pixels_16_rvv, zve32x vsseg8e16.v v0, (a0) ret endfunc + +func ff_diff_pixels_rvv, zve32x + vsetivli zero, 8, e8, mf2, ta, ma + vlsseg8e8.v v16, (a1), a3 + vlsseg8e8.v v24, (a2), a3 + vwsubu.vv v8, v16, v24 + vwsubu.vv v9, v17, v25 + vwsubu.vv v10, v18, v26 + vwsubu.vv v11, v19, v27 + vwsubu.vv v12, v20, v28 + vwsubu.vv v13, v21, v29 + vwsubu.vv v14, v22, v30 + vwsubu.vv v15, v23, v31 + vsseg8e16.v v8, (a0) + ret +endfunc