From patchwork Mon Sep 19 15:35:51 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: 38050 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp1315216pzh; Mon, 19 Sep 2022 08:36:02 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4RgGZuyz7alEYCJJZvgp2rS48gfcGyRUr65i9kScQ41Zs8KZo4v28GVX6so/nABGSxRtDM X-Received: by 2002:a17:906:fe0a:b0:76f:e373:d84b with SMTP id wy10-20020a170906fe0a00b0076fe373d84bmr13152902ejb.297.1663601761847; Mon, 19 Sep 2022 08:36:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663601761; cv=none; d=google.com; s=arc-20160816; b=q+zl4MBOgY6fhX5KHT0enjQfadSgcOPpjR2vQFGpy8sCH2RF+3WwTfdt18ACS2YvK8 z+ueTq3F7PlEn0s+PeLTkMzOeh7ku1kK/iu9A/OlLGIC7u0YamgEV/onU0O0jN9OfW3B vJEEtwzoc98NexZaZeW/ASx+ABCSDv3EbmEpdzZfjJunQ/oasZ2MJryI3382EIi8tB/4 QLubhKm28AvHyqPFJKe8hqz6b7ss3Gk9/nLNjbcgag0ycqxo2vFCdh2URa9zINM6kGpQ cgy6MpRE4BJ20Gn0gkJ/OwbcuDiNW1oMNf5Unme2MBhcJ2mk13gZbQ30RI3+otYv3dHn mzxg== 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=tXhlXy93O3O/miLIDByzGG46B1LWbe4kqfMFknvQrwI=; b=iNqDg1FWKxdpN5VoCmoamIM9sbYeRgPjgKEf077aaGMPOPGaVSq2lUBHcFY+YdiFb4 tvPsA9rNTcMtxm9gMAlXEP6tMn/gtgE9PFPvzpX2qzCP4Z6R7BzLhg8hD3wACr0772z2 Z7PnUhlBsLTwh5FV1DAByQNWja2UTOlBoEprwvU0XIf8yU/vsyaHuGTVku5nUjGPjp/z Gr8r24dkJRCQq/oBnu7/Md72yxyJCLIztqw1Sp4OoyNm8is8h+v73D7XIziBJ4Q2mGgA yGPGB8LvORoRBL0qocOzc094dh+fq196zq9MnL+SwRJmZoOEKcxbLc5tVKmXnTstDja3 WuTA== 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 cb3-20020a0564020b6300b0043e5ca9a0e2si8475888edb.628.2022.09.19.08.36.01; Mon, 19 Sep 2022 08:36:01 -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 4482868BCA4; Mon, 19 Sep 2022 18:35:58 +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 2376968BC97 for ; Mon, 19 Sep 2022 18:35:52 +0300 (EEST) Received: from basile.remlab.net (localhost [IPv6:::1]) by ursule.remlab.net (Postfix) with ESMTP id 97AB9C0098 for ; Mon, 19 Sep 2022 18:35:51 +0300 (EEST) From: remi@remlab.net To: ffmpeg-devel@ffmpeg.org Date: Mon, 19 Sep 2022 18:35:51 +0300 Message-Id: <20220919153551.11377-2-remi@remlab.net> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCHv2 2/2] lavc/vorbisdec: use intermediate variables 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: FGtsMhv5ECaB From: RĂ©mi Denis-Courmont The compiler cannot infer that the two float vectors do not alias, causing unnecessary extra loads and serialisation. This patch caches the two input values in local variables so that compiler can optimise individual loop iterations. --- libavcodec/vorbisdec.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c index bfc4be6fc6..e59d6e40f0 100644 --- a/libavcodec/vorbisdec.c +++ b/libavcodec/vorbisdec.c @@ -1581,22 +1581,22 @@ static inline int vorbis_residue_decode(vorbis_context *vc, vorbis_residue *vr, void ff_vorbis_inverse_coupling(float *mag, float *ang, intptr_t blocksize) { - for (ptrdiff_t i = 0; i < blocksize; i++) { - if (mag[i] > 0.0) { - if (ang[i] > 0.0) { - ang[i] = mag[i] - ang[i]; + for (ptrdiff_t i = 0; i < blocksize; i++) { + float angi = ang[i], magi = mag[i]; + + if (magi > 0.f) { + if (angi > 0.f) { + ang[i] = magi - angi; } else { - float temp = ang[i]; - ang[i] = mag[i]; - mag[i] += temp; + ang[i] = magi; + mag[i] = magi + angi; } } else { - if (ang[i] > 0.0) { - ang[i] += mag[i]; + if (angi > 0.f) { + ang[i] = magi + angi; } else { - float temp = ang[i]; - ang[i] = mag[i]; - mag[i] -= temp; + ang[i] = magi; + mag[i] = magi - angi; } } }