From: James Almer <jamrial@gmail.com> To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] avutil/x86/intmath: remove inline asm implementations for clip functions Date: Mon, 2 Jun 2025 15:41:33 -0300 Message-ID: <20250602184133.2175-1-jamrial@gmail.com> (raw) GCC/Clang is smart enough to emit minss/maxss the same way as these functions. The only theoretical benefit was in x86_32, where x87 floats are used, but the penalty of making the clipping opaque to the compiler's scheduler plus moving values from mmx regs to xmm and back will offset any potential speedup. x86_32 builds targetting anything made in the last two decades and a half should use -msse -mfp=sse anyway. Signed-off-by: James Almer <jamrial@gmail.com> --- libavutil/x86/intmath.h | 62 ----------------------------------------- 1 file changed, 62 deletions(-) diff --git a/libavutil/x86/intmath.h b/libavutil/x86/intmath.h index 4893a1f1b4..735945ca95 100644 --- a/libavutil/x86/intmath.h +++ b/libavutil/x86/intmath.h @@ -114,68 +114,6 @@ static av_always_inline av_const unsigned av_zero_extend_bmi2(unsigned a, unsign #endif /* __BMI2__ */ -#if defined(__SSE2__) && !defined(__INTEL_COMPILER) - -#define av_clipd av_clipd_sse2 -static av_always_inline av_const double av_clipd_sse2(double a, double amin, double amax) -{ -#if defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - __asm__ ("maxsd %1, %0 \n\t" - "minsd %2, %0 \n\t" - : "+&x"(a) : "xm"(amin), "xm"(amax)); - return a; -} - -#endif /* __SSE2__ */ - -#if defined(__SSE__) && !defined(__INTEL_COMPILER) - -#define av_clipf av_clipf_sse -static av_always_inline av_const float av_clipf_sse(float a, float amin, float amax) -{ -#if defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - __asm__ ("maxss %1, %0 \n\t" - "minss %2, %0 \n\t" - : "+&x"(a) : "xm"(amin), "xm"(amax)); - return 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 */ -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next reply other threads:[~2025-06-02 18:41 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2025-06-02 18:41 James Almer [this message] 2025-06-03 16:15 ` Niklas Haas 2025-06-03 16:22 ` Andreas Rheinhardt 2025-06-03 16:32 ` Niklas Haas 2025-06-03 16:40 ` Martin Storsjö 2025-06-04 11:33 ` Rémi Denis-Courmont
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20250602184133.2175-1-jamrial@gmail.com \ --to=jamrial@gmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git