From patchwork Sun Nov 19 11:39:41 2023 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: 44715 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6a89:b0:181:818d:5e7f with SMTP id bi9csp990624pzb; Sun, 19 Nov 2023 03:39:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IGTAkCR4pcjC/ENwBKLw4dskwy0bssevC4NmdowQ/xFJb86b3YGzesZ+q2SuhqEp3MapQee X-Received: by 2002:a17:907:a702:b0:9dd:65d7:e91e with SMTP id vw2-20020a170907a70200b009dd65d7e91emr4266492ejc.44.1700393993027; Sun, 19 Nov 2023 03:39:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700393993; cv=none; d=google.com; s=arc-20160816; b=NJhrrVWnZQOBcgVEFOnqoDKNo7L4bqy9T+LIXiW1GjCBDm1fEwIA89NhxuLP9JzF95 BHfPCD451LiQSpXTyeTFrZ7kqs81C0CSYt/ZuXdIdTQxA/5uW/KJ5rd11OiHGEKGlY1Z rwHrnDATQXqkmMAduGJJAvqIPFxXz9KSZDF6mFebF8Y4G1WuJKy8fzkF0YbJr66bV3j/ Q7k/pDiFaF4xkXQuyqpDjJj7cD6zzhYwLqoz7dIaP7d138rUcATgMhprmE//Nc76mNn1 xcki5X9+Vz3Up0KnzKDLrRqBwDoQ9H4KMWgqOaxM+EAlN8m1tYknK6e0DzIsEFl5cWqJ xusw== 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=OzVsJTrlZ/CFS5Zv8DQwetEOpIVwB+0DqMCIK/G8Gb4=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=DFDtNTx/fHi+oMfaLGm7eoGwC6hnTEorZMsDMyKeh5nAMAJ0Hpwb5Gaoy0oIPFPHUz /HXq3WoQM5px92/GEyfCXKrxydb2Z5kiBAkCaBvH2mZ9hGQVQcrTJgF52pfwxOx56n8C f02V8HSbOHgYOA9e4AZiKsyrOIOkLHkomnDZLquNBQOX8TexR9rAjeVjE5I39PaOQ/x0 6g+6PmJCKLYpwOxGlnOREsBblhS8SIHmY2+ksYxFglD/koqlGTXU3Y3wmHbIMDk9RJ6A WwM9P1bfy7MeRzNVTm2R4whs01HXOeWmQ6Ghgb3chzXfnoqVVECfK/yfbjBXTX/Z5ERk UKCA== 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 e10-20020a17090681ca00b009e622f6da46si3387750ejx.33.2023.11.19.03.39.52; Sun, 19 Nov 2023 03:39:53 -0800 (PST) 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 C89F768CD5C; Sun, 19 Nov 2023 13:39:49 +0200 (EET) 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 6485568CBB5 for ; Sun, 19 Nov 2023 13:39:43 +0200 (EET) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id DF946C018B for ; Sun, 19 Nov 2023 13:39:42 +0200 (EET) From: =?utf-8?q?R=C3=A9mi_Denis-Courmont?= To: ffmpeg-devel@ffmpeg.org Date: Sun, 19 Nov 2023 13:39:41 +0200 Message-ID: <20231119113942.10269-1-remi@remlab.net> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] lavu/fixed_dsp: optimise R-V V fmul_reverse 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: LvSgyjhqm/EA Gathers are (unsurprisingly) a notable exception to the rule that R-V V gets faster with larger group multipliers. So roll the function to speed it up. Before: vector_fmul_reverse_fixed_c: 2840.7 vector_fmul_reverse_fixed_rvv_i32: 2430.2 After: vector_fmul_reverse_fixed_c: 2841.0 vector_fmul_reverse_fixed_rvv_i32: 962.2 It might be possible to further optimise the function by moving the reverse-subtract out of the loop and adding ad-hoc tail handling. --- libavutil/riscv/fixed_dsp_rvv.S | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libavutil/riscv/fixed_dsp_rvv.S b/libavutil/riscv/fixed_dsp_rvv.S index 2bece88685..46bb591352 100644 --- a/libavutil/riscv/fixed_dsp_rvv.S +++ b/libavutil/riscv/fixed_dsp_rvv.S @@ -127,16 +127,17 @@ endfunc func ff_vector_fmul_reverse_fixed_rvv, zve32x csrwi vxrm, 0 - vsetvli t0, zero, e16, m4, ta, ma + // e16/m4 and e32/m8 are possible but slow the gathers down. + vsetvli t0, zero, e16, m1, ta, ma sh2add a2, a3, a2 vid.v v0 vadd.vi v0, v0, 1 1: - vsetvli t0, a3, e16, m4, ta, ma + vsetvli t0, a3, e16, m1, ta, ma slli t1, t0, 2 vrsub.vx v4, v0, t0 // v4[i] = [VL-1, VL-2... 1, 0] sub a2, a2, t1 - vsetvli zero, zero, e32, m8, ta, ma + vsetvli zero, zero, e32, m2, ta, ma vle32.v v8, (a2) sub a3, a3, t0 vle32.v v16, (a1)