From patchwork Tue Nov 16 02:24:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 31437 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:d206:0:0:0:0:0 with SMTP id q6csp6720373iob; Mon, 15 Nov 2021 18:24:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJyTggXIxzM41625+Op9jKm0SOieBEoTD+aOG8vHPLlsg7hMyws6u/wF1yadyAlI9coIQoIJ X-Received: by 2002:a17:907:6289:: with SMTP id nd9mr4716814ejc.101.1637029486694; Mon, 15 Nov 2021 18:24:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1637029486; cv=none; d=google.com; s=arc-20160816; b=fsjDIcR5ujoDlFznfMKpjiVxnAeY3oWRMDNZqoFZttmjUBYNIQZVz+rYp6oiHtd3q3 1MIsuZDbEOcRcCkbB7GVZkTEQd24RbiHto3Ln9Y+7b1nLicrVnH1fggoqB1Ah1/QNs2R w7r+GyYoFSCszeu+wPw/gKxyf8EQBEQo/QIpQPBt93DcYDZurg5oSvWYXM23Ok1PZERa SVeukeXSii3Bvv0ZJjqxOYqViTo/qpIdvQ7JYhs0AVnqLJj5cj7b8G46E/I4J8CG3I71 V9k2uQcxpVF/aufoobys+Klzan4gSSX6EN7iy35JVQ9AuGUlpRqy/7tPHOVU1ii67/mx jOhw== 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 :dkim-signature:delivered-to; bh=uDyzpjgGSvDzb8wfFqK9yfcifxn5CoXgTxOPI8bzEQA=; b=0oafgmKgc0n2kBGMxiCU+IgC7YDine2Cgmom8WLyG6+Rr4H2VYkNhzcPPGuDzIt2a/ UHpntDN+yhhcMy2lSvlJNLocEsTjI35LhCmS+FC23Znsyfd0PkLIW065bEruONIbm1MS YwdjZqCLTlMInAUnoYP1y0jO1vbFRbcNtqLEuc2QV7zT8lWcGF+ypqxJQnH6u483scKY d4ZNVJIy6A0pKzqYRnMK3lozYHkEzAH2PnrxcmO4HDvvh8rPUzTgIl4wrSj4/xzrxggc UawEiVDcjblGYEi84Mhg3m6mpkEHqjUgU4cSsTCNFliVKbcLCb8Wo1uCln0AV3M9igO4 MmvA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=J4OGQzwE; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j15si31562285edl.466.2021.11.15.18.24.46; Mon, 15 Nov 2021 18:24:46 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=J4OGQzwE; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A8AB568A03B; Tue, 16 Nov 2021 04:24:43 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ua1-f41.google.com (mail-ua1-f41.google.com [209.85.222.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 21639689F8F for ; Tue, 16 Nov 2021 04:24:37 +0200 (EET) Received: by mail-ua1-f41.google.com with SMTP id v3so39041823uam.10 for ; Mon, 15 Nov 2021 18:24:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=I8/7J9bfTEG/RsM3d93QP7eR83bKTlSbqWNytN/gdM8=; b=J4OGQzwEB6tEI/9uVGkLPagHpdPlsG4LzwJNtTAOa7ALRsLrYv/wXAyfY8bs6G3nYp hJM0TLUEtgsVH0D0mbrw5XAGOUTeaXdq2WGYdZ3quZHF2nIsvkf3XeejS3PyaO+aSub/ HYZKLzSkxpMhkTdF670Ag7h/2lFBtwrAgwF5dqibpVIoFJc+H9N0uBvsfGS5UqqDTwsQ dELEuo2pA8PREKwb9pUjojepZvLBpWqiJK8FSEmZZTIYxM4i8xcbOS+PmbXnVwxCufDh b3pzhZFAP/mjrqF1nkT+re8uLEwxjsvb7V3B9wLyCmS1UevmmgkJadmcTL3HD/X6NHLh hXZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=I8/7J9bfTEG/RsM3d93QP7eR83bKTlSbqWNytN/gdM8=; b=8SNh+u9a7miMtCMxKtX7lJLeS3G43BX1+RyJFD8W5zUBB6u31dLL2+vfEP1KAjeo4r 7klXNkVziywg0PKnEeP1ZcIYEri2lvavrM4W94MSTB8FTgMe1kdxl3pPoqYTdw0eAoYu t3Cqd13ZGc6tp7ujhGpwB4raHKO2kl8U2UXyH+1jDDrpYEg4lYmE90LiSTzSZQwRtcVV mvwnq7BQcRS3B2gSPJhBLAe4F/lf4/87HP3nxD3CLsvkR7s62TKBYtqtSMXgak0msYB+ ehjBS2z6EXIAdYq9qm8vUikjpPpHd4J/cmGgmNcc3ejUkW+7TIrqaQKm1TFYi6kCR+Hl uNaA== X-Gm-Message-State: AOAM531xiN59YhnwR65XAoM/00QIPnDrfrXvC3a87EjHKILjokfAFwF4 zfhEoE8AmtQOmOw6x9yLVsVgafEnR/s= X-Received: by 2002:a05:6102:3e81:: with SMTP id m1mr49467297vsv.44.1637029475259; Mon, 15 Nov 2021 18:24:35 -0800 (PST) Received: from localhost.localdomain ([181.23.88.82]) by smtp.gmail.com with ESMTPSA id v68sm9729846vkb.30.2021.11.15.18.24.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Nov 2021 18:24:34 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 15 Nov 2021 23:24:06 -0300 Message-Id: <20211116022406.680-1-jamrial@gmail.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] x86/intmath: add VEX encoded versions of av_clipf() and av_clipd() 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: 9aAfzpwumr2v Prevents mixing inlined SSE instructions and AVX instructions when the compiler generates the latter. Signed-off-by: James Almer --- libavutil/x86/intmath.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/libavutil/x86/intmath.h b/libavutil/x86/intmath.h index 1520c25ec9..8a6b5ae261 100644 --- a/libavutil/x86/intmath.h +++ b/libavutil/x86/intmath.h @@ -134,6 +134,36 @@ static av_always_inline av_const float av_clipf_sse(float a, float amin, float a #endif /* __SSE__ */ +#if defined(__AVX__) && !defined(__INTEL_COMPILER) + +#undef av_clipd +#define av_clipd av_clipd_avx +static av_always_inline av_const double av_clipd_avx(double a, double amin, double amax) +{ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 + if (amin > amax) abort(); +#endif + __asm__ ("vmaxsd %1, %0, %0 \n\t" + "vminsd %2, %0, %0 \n\t" + : "+&x"(a) : "xm"(amin), "xm"(amax)); + return a; +} + +#undef av_clipf +#define av_clipf av_clipf_avx +static av_always_inline av_const float av_clipf_avx(float a, float amin, float amax) +{ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 + if (amin > amax) abort(); +#endif + __asm__ ("vmaxss %1, %0, %0 \n\t" + "vminss %2, %0, %0 \n\t" + : "+&x"(a) : "xm"(amin), "xm"(amax)); + return a; +} + +#endif /* __AVX__ */ + #endif /* __GNUC__ */ #endif /* AVUTIL_X86_INTMATH_H */